2017-02-14 52 views
2

我不明白为什么我们每个模块只有一个文件。如何让一个模块具有多个文件?

// main.rs 

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

dog变大,并有很多的功能,这不是件好事,他们都在一个文件中。

我怎么能不使用

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

我只想用dog::sonic_bark();

+0

这应该是结构,但我只是问模块。 –

回答

4

你不能把它们分开。

你可以有更多模块比文件(嵌套在文件中的典型例子是mod tests),但不是相反。


但是,这并不重要,因为您可以使用封装+重新导出。

宣布与mod xxx;一个子模块时,默认是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(),...

因此,私营企业进口和公共转口帮你一个隐藏内部层次结构,同时公开一个平坦的公共接口。

+0

何处放置再输出符号? –

+0

我现在知道了。放入mod.rs.我刚刚研究。 –

+0

您也可以直接从模块中重新导出所有公共项目:'pub use self :: leg :: *;'etc – Kroltan

相关问题