クレートとは
クレート (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
を定義して、その中に更にモジュールを定義したりすることもできる。