パッケージ#
パッケージは 1 つまたは複数のクレートから構成される集合です。Cargo プロジェクトはパッケージです。
パッケージには 1 つ以上のバイナリアイテムを含めることができますが、ライブラリは 1 つしか含めることができません。これはなぜですか?公開するためですか。他のバイナリアイテムを作成するには、ファイルをsrc/binディレクトリに配置するだけで、独立したバイナリファイルとしてコンパイルされます。
クレート#
クレートはバイナリアイテムとライブラリに分けられます。Cargo が作成するデフォルトのテンプレートには、バイナリアイテムが 1 つだけ含まれています。src/main.rsがエントリーポイントのルートファイルであることが規定されています。Cargo はまた、src/lib.rsをライブラリのルートファイルとして規定しています。
クレートのコンパイルは、必要なコードをルートファイルから探索して行います。
モジュール#
モジュールはクレートのコードをグループ化するために使用され、モジュール内のコードはデフォルトで非公開です。
パス#
- 絶対パスは、クレート名(同じクレートでは
crateを使用)で始まるフルパスです。 - 相対パスは、現在のモジュールから
self、super、およびモジュール名を使用して位置を特定するパスです。
use#
useキーワードを使用してアクセス可能なモジュールをインポートし、そのモジュールのスコープの内容を直接使用することができます。これは JS のimportと似ています。
- 関数のインポートに関しては、通常は親モジュールをインポートし、呼び出し時に指定することが一般的です。これは
call(this)のような感覚です。 - 構造体や列挙型などに関しては、完全なパスを参照し、直接使用することが一般的です。
モジュールファイル#
大きなモジュールを複数のファイルに分割することは、読みやすさに役立ちます。これはフロントエンドのモジュール化の考え方と一致しています。