クレートとは
クレート (Crate)は、Rustのコードをまとめる基本単位の1つ。Rustのプロジェクトやライブラリのことを指す。
コンパイル先の違いによってバイナリクレートとライブラリクレートに分けられる。
バイナリクレート
CLIアプリケーションやGUIアプリケーションなどを含む、実行可能なプログラムを提供するクレートは一般的に『バイナリクレート』と呼ばれる。
コンパイル時にバイナリとしてビルドされ、バイナリファイルを実行したときに関数mainが呼び出されるようになっている。
デフォルトではsrc/main.rsがバイナリクレートの定義になる。
また、src/bin/*.rsがすべてバイナリとして認識される。
fn main() {
println!("Hello, World!");
}実行すると、CLIでHello, World!が出力される。
また、都度Cargo.tomlを編集して別のバイナリクレートを同じプロジェクト内に作ることもできる。
[package]
name = "mypackage"
version = "0.1.0"
edition = "2024"
[[bin]]
name = "run-all"
path = "src/run.rs"ライブラリクレート
ライブラリを提供するクレートは、『ライブラリクレート』と呼ばれる。
一般的にいくつもの構造体やトレイト、関数などを定義する。
デフォルトでsrc/lib.rsがライブラリクレートの中心となる。ここでモジュールなどを定義する。
pub mod client;
pub mod server;
pub struct MyStruct {
&str name,
}
impl MyStruct {
pub fn name(&self) -> &str {
self.name
}
}モジュールごとにmod.rsを定義して、その中に更にモジュールを定義したりすることもできる。