Rust 開発における Cargo 属性

Beginner

This tutorial is from open-source community. Access the source code

はじめに

この実験では、Rust プロジェクトで広く使用されている Rust パッケージマネージャである Cargo を使用する場合、Rust の crate_type および crate_name 属性が効果を持たないことが説明されます。

注記: 実験でファイル名が指定されていない場合、好きなファイル名を使用できます。たとえば、main.rs を使用して、rustc main.rs &&./main でコンパイルして実行できます。

クレート

crate_type 属性を使用すると、コンパイラにクレートがバイナリであるかライブラリであるか(さらにはどの種類のライブラリであるか)を伝えることができ、crate_name 属性を使用すると、クレートの名前を設定することができます。

ただし、重要なことは、Rust パッケージマネージャである Cargo を使用する場合、crate_type および crate_name 属性の両方がまったく効果を持たないことです。Cargo は大多数の Rust プロジェクトで使用されるため、これは crate_typecrate_name の実際の使用例が比較的限られていることを意味します。

// このクレートはライブラリです
#![crate_type = "lib"]
// ライブラリの名前は "rary" です
#![crate_name = "rary"]

pub fn public_function() {
    println!("called rary's `public_function()`");
}

fn private_function() {
    println!("called rary's `private_function()`");
}

pub fn indirect_access() {
    print!("called rary's `indirect_access()`, that\n> ");

    private_function();
}

crate_type 属性を使用するとき、--crate-type フラグを rustc に渡す必要はありません。

$ rustc lib.rs
$ ls lib*
library.rlib

まとめ

おめでとうございます!あなたはクレートの実験を完了しました。あなたのスキルを向上させるために、LabEx でさらに多くの実験を行って練習してください。