目录
什么是 Rust 组织管理
Rust 组织管理是指通过语言特性和工具(如模块、路径和 Cargo)将代码划分为逻辑单元,管理项目结构和依赖关系。它帮助开发者在大型项目中保持代码的清晰性和可维护性。
为什么要进行组织管理
- 代码结构:将功能分隔为独立模块。
- 可维护性:便于修改和扩展。
- 复用性:跨项目共享代码。
- 团队协作:明确代码边界,减少冲突。
- 构建效率:优化依赖和编译流程。
模块系统
- 模块 (Module):使用
mod
关键字定义,组织代码。 - 文件与模块:
mod name;
声明模块,默认加载name.rs
或name/mod.rs
。- 嵌套模块:支持层级结构。
1 2 3 4 5 | mod math { pub fn add(a: i32, b: i32) -> i32 { a + b } } |
路径与可见性
- 路径:
- 绝对路径:
crate::module::item
。 - 相对路径:
self::item
或super::item
。 - 可见性:
- 默认私有。
pub
:公开。pub(crate)
:仅 crate 内部可见。
1 2 3 4 | pub mod outer { pub fn public_fn() {} fn private_fn() {} } |
工作空间与多包管理
- 工作空间 (Workspace):
- 在
Cargo.toml
中定义[workspace]
,管理多个相关包。 - 共享
target
目录和依赖。 - 多包:
- 每个包有独立的
Cargo.toml
。 - 可相互依赖。
1 2 | [workspace] members = ["lib1", "lib2"] |
代码示例
模块与路径
1 2 3 4 5 6 7 8 9 10 11 12 | mod utils { pub mod calc { pub fn add(a: i32, b: i32) -> i32 { a + b } } } fn main() { let sum = utils::calc::add(2, 3); println!("Sum: {}", sum); } |
运行结果:
1 | Sum: 5 |
文件模块
项目结构:
1 2 3 | src/ ├── main.rs └── math.rs |
math.rs
:
1 2 3 | pub fn multiply(a: i32, b: i32) -> i32 { a * b } |
main.rs
:
1 2 3 4 5 6 | mod math; fn main() { let result = math::multiply(4, 5); println!("Result: {}", result); } |
运行结果:
1 | Result: 20 |
工作空间
项目结构:
1 2 3 4 5 6 7 8 | my_project/ ├── Cargo.toml ├── lib1/ │ ├── Cargo.toml │ └── src/lib.rs └── lib2/ ├── Cargo.toml └── src/lib.rs |
根 Cargo.toml
:
1 2 | [workspace] members = ["lib1", "lib2"] |
lib1/src/lib.rs
:
1 2 3 | pub fn hello() -> String { String::from("Hello from lib1") } |
lib2/Cargo.toml
:
1 2 3 4 | [package] name = "lib2" version = "0.1.0" edition = "2021" |
[dependencies]
lib1 = { path = “../lib1” }
lib2/src/lib.rs
:
1 2 3 4 5 | use lib1::hello; pub fn greet() { println!("{}", hello()); } |
运行 cargo run --package lib2
:
1 | Hello from lib1 |
参考资料与出站链接
- 官方文档:
- 学习资源:
- 社区支持:
发表回复