ファイルシステム階層
モジュールの定義内容を省略すると、Rust はそれを別のファイルで探します。
mod garden;
This tells Rust that the garden
module content is found at src/garden.rs
. Similarly, a garden::vegetables
module can be found at src/garden/vegetables.rs
.
crate
ルートは以下の場所にあります。
src/lib.rs
(ライブラリ クレートの場合)src/main.rs
(バイナリ クレートの場合)
ファイルで定義されたモジュールに対して、「内部ドキュメント用コメント」を使用して説明を加えることもできます。これらのコメントは、それが含まれるアイテム(この場合はモジュール)に対する説明になります。
//! このモジュールは畑を実装します(パフォーマンスの高い発芽の //! 実装を含む)。 // このモジュールから型を再エクスポートします。 pub use garden::Garden; pub use seeds::SeedPacket; /// 指定された種をまきます。 pub fn sow(seeds: Vec<SeedPacket>) { todo!() } /// 十分に実っている畑で作物を収穫します。 pub fn harvest(garden: &mut Garden) { todo!() }
This slide should take about 5 minutes.
-
Rust 2018 より前では、モジュールを
module.rs
ではなくmodule/mod.rs
に配置する必要がありました。これは 2018 以降のエディションでも依然としてサポートされています。 -
filename/mod.rs
の代わりにfilename.rs
が導入された主な理由は、mod.rs
という名前のファイルが多くあると、それらをIDEで区別するのが難しい場合があるからです。 -
より深いネストでは、メイン モジュールがファイルであっても、フォルダを使用できます。
src/ ├── main.rs ├── top_module.rs └── top_module/ └── sub_module.rs
-
Rust がモジュールを検索する場所は、コンパイラ ディレクティブで変更できます。
#[path = "some/path.rs"] mod some_module;
これは、たとえば Go でよく行われているように、
some_module_test.rs
という名前のファイルにモジュールのテストを配置する場合に便利です。