一个线路模块重新导出

问题描述 投票:0回答:2

我正在尝试从父模块的另一个文件中重新导出子模块。

提供此文件结构,

src/
- lib.rs
- module/
-- mod.rs
-- submodule/
--- mod.rs

...这可以单行完成吗?

// mod.rs
mod submodule;
pub use submodule::*;

// something like pub use mod submodule::*;
rust
2个回答
0
投票
只要您可以访问该模块(即在您当前的板条箱中,或在另一个板条中公开),当然可以。

您可以通过此playground示例来说服自己:

pub mod tests { pub fn foo() { () } pub fn bar() { () } fn baz() { () } } pub use tests::*; fn main() { foo(); bar(); // baz(); }

但是,请注意,(如您所愿)私有baz()功能不会重新导出。您可以通过取消注释示例中的第三行来说服自己。

0
投票
如果我理解正确,您正在问moduse是否可以合并为一行。

[否,不允许将moduse组合在一起。考虑mod的正确方法是它定义了模块在模块层次结构中的位置。就像您已经编写了use some_module;一样,它也将模块名称带入当前模块的名称空间这一事实实际上是其中的一部分,因为编写mod some_module

without毫无意义。它在其父级中可见。

[如果您还希望提供其他名称,则没有特殊语法可将其与mod结合使用;您必须使用use
© www.soinside.com 2019 - 2024. All rights reserved.