如何为多个小型Rust程序设置合适的项目目录结构
问题原因与解决方案
核心问题
你当前的目录结构不可行,不符合Cargo的源码扫描与模块查找规则,共用代码存放在了Cargo默认不会识别的位置。
具体修改步骤
步骤1:调整文件位置
将项目根目录的utils.rs移动到src/目录下,调整后的目录结构如下:
rust_stuff ├── Cargo.lock ├── Cargo.toml └── src ├── bin │ ├── project1.rs │ ├── project2.rs │ └── ...more projects... └── utils.rs
步骤2:添加库根文件声明模块
在src/目录下新建lib.rs文件,写入如下内容,将utils模块注册到当前包的库命名空间中:
pub mod utils;
步骤3:在二进制文件中正确引用共用函数
打开Cargo.toml,查看[package]段下的name字段值(假设为rust_stuff,即你的项目名),在project1.rs等二进制文件中按如下格式引用:
// 替换成你实际的项目名即可正常调用 use rust_stuff::utils::func1;
之前操作失效的原因
utils.rs放在与src平级的项目根目录时,Cargo默认只会扫描src/下的源码,完全不会识别该位置的文件- 使用
use crate::utils时,crate关键字指向的是当前project1.rs二进制的根,该二进制内没有声明utils模块,自然找不到 - 直接写
use utils::func1时,utils模块没有被注册到当前包的公共命名空间,无法直接访问
内容的提问来源于stack exchange,提问作者breakthatbass
相关产品推荐
相关产品推荐

