我不明白为什么每个模块只有一个文件。
// main.rs
mod dog; // Find dog in dog.rs or dog/mod.rs
fn main() {
dog::sonic_bark();
}
当 dog
变大并具有很多功能时,将它们全部放在一个文件中并不好。
如何在不使用的情况下将它们分开
dog::leg::walk();
dog::head::nose::smell();
dog::tail::iron_tail();
dog::mouth::sonic_bark();
我只想使用 dog::sonic_bark();
最佳答案
你不能。
您可以拥有比文件更多的模块(典型示例是文件中嵌套的 mod 测试
),但反过来不行。
但是,这并不重要,因为您可以使用封装+重新导出。
使用 mod xxx;
声明子模块时,默认情况下 xxx
是 private:当前模块的用户不会知道它取决于 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()
, ...
因此,私有(private)导入和公共(public)再导出可帮助您拥有一个隐藏的内部层次结构,同时公开一个平面公共(public)界面。
完整示例:
mod dog {
pub use self::head::nose::smell;
pub use self::leg::walk;
pub use self::mouth::sonic_bark;
pub use self::tail::iron_tail;
mod leg {
pub fn walk() {}
}
mod head {
pub mod nose {
pub fn smell() {}
}
}
mod tail {
pub fn iron_tail() {}
}
mod mouth {
pub fn sonic_bark() {}
}
}
fn main() {
dog::sonic_bark();
}
关于module - 如何在一个模块中拥有多个文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42220379/