Packages and Crates - The Rust Programming Language
crateは、Rustコンパイラが1回に扱うコードの最小単位である。
単一のソースコードをrustc
でコンパイルする際も、そのファイルをcrateとして扱う。
crateはmoduleを含むことができ、他のファイルに定義されているmoduleも、crateと合わせてコンパイルされる。
crateには2つの形式がある。
Binary crates
- コマンドラインやサーバーで実行可能なプログラム
main
関数が必須
Library crates
main
関数を持たず、実行可能な形ではコンパイルされない- 複数のプロジェクトで共有されるように機能を定義したもの
- Rustaceansがcareteというときは、多くの場合Library cratesを指す
crate rootは、Rustコンパイラーが処理を開始するソース・ファイルのことであり、crateのroot moduleを構成する。
packageは1つ以上のcrateをまとめたもので、 一連の機能を提供する。 packageはビルド方法を定義したCargo.tomlファイルを含む。 Cargoもコマンドラインツールのbinary crateを含むpackageである。
Packageは複数のbinary crateを含むことができるが、library crateは最大で1つだけである。 packageには少なくとも1つのcrateが必要である。
binary crateの場合は、src/main.rsを、library crateの場合は、src/lib.rsをcrate rootと見なす。