我正在尝试从父模块的另一个文件中重新导出子模块。
提供此文件结构,
src/
- lib.rs
- module/
-- mod.rs
-- submodule/
--- mod.rs
...这可以单行完成吗?
// mod.rs
mod submodule;
pub use submodule::*;
// something like pub use mod submodule::*;
您可以通过此playground示例来说服自己:
pub mod tests {
pub fn foo() {
()
}
pub fn bar() {
()
}
fn baz() {
()
}
}
pub use tests::*;
fn main() {
foo();
bar();
// baz();
}
但是,请注意,(如您所愿)私有baz()
功能不会重新导出。您可以通过取消注释示例中的第三行来说服自己。
mod
和use
是否可以合并为一行。[否,不允许将mod
与use
组合在一起。考虑mod
的正确方法是它定义了模块在模块层次结构中的位置。就像您已经编写了use some_module;
一样,它也将模块名称带入当前模块的名称空间这一事实实际上是其中的一部分,因为编写mod some_module
without毫无意义。它在其父级中可见。
[如果您还希望提供其他名称,则没有特殊语法可将其与mod
结合使用;您必须使用use
。