RustのCrateをよりよく理解する方法は?

Aug 21 2020

この本の中で-RustBy Example、第11章:

クレートはRustのコンパイルユニットです。rustc some_file.rsが呼び出されるたびに、some_file.rsはクレートファイルとして扱われます

この本によると、ソースファイルはどうですか?

Rustリファレンス| クレートとソースファイル

コンパイルモデルは、クレートと呼ばれるアーティファクトを中心としています。各コンパイルは、ソース形式の単一のクレートを処理し、成功した場合は、実行可能ファイルまたはある種のライブラリのいずれかのバイナリ形式の単一のクレートを生成します。

Rustコンパイラは、常に単一のソースファイルを入力として呼び出され、常に単一の出力クレートを生成します。そのソースファイルを処理すると、他のソースファイルがモジュールとしてロードされる場合があります。ソースファイルの拡張子は.rsです。

この声明によると、私は思う:

ソースファイル(.rsファイル)->対応するクレート

のように:.java-> .class

今、私はこの問題を理解できません。私はすべて海にいます。

回答

6 KevinReid Aug 21 2020 at 11:16

これはあなたが引用した資料の重要な部分です:

そのソースファイルを処理すると、他のソースファイルがモジュールとしてロードされる場合があります。

典型的なライブラリを調べると、のsrc/lib.rsようないくつかの行を含むと呼ばれるファイルが見つかりますmod foo;。これらはそれぞれsrc/foo.rs、コンパイラがクレートの一部を構成する別のモジュールとして解釈する別のファイルを識別します(または、同じファイルにモジュールを直接含めることができます)。

1つのソースファイルがクレートを構成するわけではありません。コンパイラに多くのファイル名が付けられている他のコンパイルモデルとは対照的に、1つのソースファイルから開始すると、クレートを構成するすべてのファイルを見つけることができます。