クレート
クレートはRustにおけるコンパイル単位です。rustc some_file.rs が呼び出されるたびに、 some_file.rs は_クレートファイル_として扱われます。some_file.rs に mod 宣言が含まれている場合、コンパイラを実行する_前に_、モジュールファイルの内容が クレートファイル内で mod 宣言が見つかった場所に挿入されます。言い換えると、 モジュールは個別にはコンパイルされ_ず_、クレートだけがコンパイルされます。
クレートはバイナリまたはライブラリにコンパイルできます。デフォルトでは、rustc はクレートからバイナリを生成します。この動作は、--crate-type フラグに lib を渡すことで上書きできます。