Rust中给定指定文件结构,能否用一行代码重导出子模块?
如何用一行代码从父模块重导出子模块?
先看你的场景:你有这样的文件结构:
src/ - lib.rs - module/ -- mod.rs -- submodule/ --- mod.rs
你现在在module/mod.rs里用两行代码实现重导出:
// mod.rs mod submodule; pub use submodule::*;
你想知道能不能把这两行合并成类似pub use mod submodule::*;的一行代码?
答案是不行,Rust的语法不支持这种写法。原因很简单:mod submodule;和pub use是两个完全独立的语法操作:
mod submodule;是用来声明并引入子模块,告诉编译器这个子模块的存在,把它加载到当前作用域里;pub use submodule::*;是重导出已存在模块的内容,它依赖于已经被引入作用域的模块。
这两个步骤没法合并成一行,Rust的语法设计就是要把模块的声明和重导出的职责分开,保证代码的清晰性。
不过你现有的写法已经是最简洁的实现方式了,两行代码逻辑清晰,完全符合Rust的模块规范~
内容的提问来源于stack exchange,提问作者vadersfather
相关产品推荐
相关产品推荐

