2017-02-14 14 views
2

モジュールごとにファイルが1つしかない理由はわかりません。1つのモジュールで複数のファイルを作成するにはどうすればよいですか?

// main.rs 

mod dog; // Find dog in dog.rs or dog/mod.rs 
fn main() { 
    dog::bark(); 
} 

dogが大きく成長し、機能の多くを持っているとき、それは一つのファイルにそれらのすべてを持っているのはよくないです。

私はちょうどあなたがすることはできませんdog::sonic_bark();

+0

これは構造体にする必要がありますが、私はモジュールについて尋ねます。 –

答えて

4

を使用したい

dog::leg::walk(); 
dog::head::nose::smell(); 
dog::tail::iron_tail(); 
dog::mouth::sonic_bark(); 

を使用せずにそれらを分離するにはどうすればよいです。

より多くのファイルを個(ファイル内にネックされた典型的な例:mod tests)のモジュールにすることはできますが、その逆はできません。


ただし、カプセル化+再エクスポートを使用できるため、これは問題ではありません。現在のモジュールのないユーザーは、それがxxxに依存していることを知っているだろう:

デフォルトmod xxx;でサブモジュールを宣言xxxプライベートであるということです。

pub use self::leg::walk; 
pub use self::head::nose::smell; 
pub use self::tail::iron_tail; 
pub use self::mouth::sonic_bark; 

そして、あなたは直接それらを呼び出すことができます:

選択再エクスポートシンボルと組み合わせるdog::walk()dog::smell()を、...

したがって、民間の輸入及び公共再輸出は、あなたが持っている助けますa hidden内部階層で、フラットパブリックインターフェイスを公開しています。

+0

再輸出記号はどこに置くのですか? –

+0

私は今それを知っていた。 mod.rs.に入れて私はちょうど研究した。 –

+0

また、モジュールからすべてのパブリックアイテムを直接再エクスポートすることもできます: 'pub use self :: leg :: *;'など – Kroltan

関連する問題