関係書目クレートとモジュールプロジェクトが大きくなり始めた際に、コードを小さなまとまりに分割しそれらでプロジェクトを組み立てるのはソフトウェア工学における優れた慣例だと考えられています。幾つかの機能をプライベートとし、また幾つかをパブリックとできるように、はっきりと定義されたインターフェースも重要となります。いった事柄を容易にするため、Rustはモジュールシステムを有しています。クレートとモジュールRustはモジュールシステムに関連する「クレート」(crate)と「モジュール」(module)という2つの用語を明確に区別しています。クレートは他の言語における「ライブラリ」や「パッケージ」と同じ意味です。このことからRustのパッケージマネジメントツールの名前を「Cargo」としています。crateとは枠箱のことであり、cargoは船荷を指します)Cargoを使ってクレートを出荷し他のユーザに公開するわけです。クレートは実行形式かライブラリをプロジェクトに応じて作成できます。module)を暗黙的に持っています。ルートモジュール下にはサブモジュールの木が定義できます。モジュールによりクレート内でコードを分割できます。クレートを作ってみます。これに異なる言語で幾つかのフレーズを入れます。問題の単純さを保つために、2種類のフレーズ「greetings」と「farewells」のみとし、これらフレーズを表すための2つの言語として英語と日本語を使うことにします。モジュールのレイアウトは以下のようになります。クレートの名前で、それ以外の全てはモジュールです。枝分かれしていることが分かります。ここまでで計画は立ちましたから、これらモジュールをコードで定義しましょう。始めるために、Cargoで新しいクレートを生成します。phrases聡明な読者ならご記憶かと思いますがCargoが単純なプロジェクトを生成してくれます。キーワードを使います。以下のようにしましょう。キーワードの後、モジュールの名前を与えます。モジュール名はRustの他の識別子の慣例に従います。