20250823152740 パッケージ(package)、 crate 、 モジュール(mod) という用語とそれぞれの定義(rust的な意味で)
The Rust Programming Language の 説明 肥大化していくプロジェクトをパッケージ、クレート、モジュールを利用して管理する - The Rust Programming Language 日本語版 が私にはあまり理解できなかった。
mod
20250823145330 rustのモジュール(mod) について
crate
ルートである main.rs / lib.rs などから生成される、1つの実行可能バイナリ、ライブラリなどの成果物を作るためのまとまり。 よく説明で見る「コンパル単位」ってなんだろう?それは1ファイルなのでは、とか思ってしまった。
main.rsと lib.rs は両方存在する場合もありえる。 ライブラリとして利用可能かつ、実行できるプログラムもある、みたいな時。今のところやらなさそうだが、やる時になったら調査。
package
1つ以上のcrateから構成される。 Cargo.tomlで設定する。rustの1つのプロジェクトだと理解すればいいかもしれない。
大規模な例: ルートに Cargo.tomlがある。 GitHub - servo/servo: Servo aims to empower developers with a lightweight, high-performance alternative for embedding web technologies in applications.
複数crateで構成されるプロジェクト用の概念でworkspaceというのがあるらしい。Rust Workspace Example: A Guide to Managing Multi-Crate Projects
ここにも記載があった。 Cargoのワークスペース - The Rust Programming Language 日本語版