クレートとは

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