无需mod.rs,如何从Rust子目录导入函数?
Rust不使用mod.rs导入子目录模块的实现方案
要在不创建mod.rs、不移动文件的前提下导入src/others/utils.rs里的函数,你可以利用Rust 1.30及以上版本支持的目录同名.rs文件特性,替代传统的mod.rs来管理子目录模块,具体步骤如下:
步骤1:创建与子目录同名的rs文件
在项目的src目录下新建others.rs文件(文件名必须和子目录others完全一致),文件内容只需声明要导出的子模块:
pub mod utils;
步骤2:在main.rs中导入并使用函数
修改main.rs,先声明others模块(Rust会自动关联src/others.rs),再导入utils里的get_hello函数:
mod others; use others::utils::get_hello; fn main() { println!("{}", get_hello()); }
最终项目结构
你的项目目录结构应该是这样的:
src/ ├── main.rs ├── others/ │ └── utils.rs └── others.rs
原理说明
之前你直接写mod others;报错,是因为Rust默认会去src/others/下找mod.rs作为模块入口。现在用src/others.rs替代mod.rs,Rust会自动将这个文件视为others子目录的模块入口,从而可以直接声明并导出目录内的utils模块,完全符合你不使用mod.rs、不移动文件的要求。
内容的提问来源于stack exchange,提问作者Just_Another_Dev
相关产品推荐
相关产品推荐

