[Rust] Workspace,Package, Crate 和 Module
package(包)
一个 package 对应一个项目,package 的信息在 Cargo.toml
里面定义。
crate(木箱、箱子)
crate 指的是 package 编译后的输出文件。以 Windows 为例,可能会产生 .exe
文件或者 .rlib
文件。
crate 有两种类型: executable(可执行的) 和 library(库)。
一个 package 可以包含 0 到 n 个 可执行的 crate,和 0 到 1 个 library。
如果,想要在一个 package 里只生成一个可执行的文件,只要写 src/main.rs
文件就可以了。
如果,想要在一个 package 里只生成一个库文件,只要写 src/lib.rs
文件就可以了。
如果,想要在一个 package 里生成多个可执行的文件和一个库文件,需要在 src/bin
目录下放入多个含有main()
函数的 rust 文件;和 一个 src/lib.rs
文件。这种方法有点儿奇怪,所以建议避免使用这种模式,而使用 workspace 来管理多个编译结果。
module(模块)
一个 rust 文件对应一个 module。module 里可以内嵌多个 module。
workspace(工作空间)
通常,我们期望一个 package 只产生一个 crate(编译结果)。
当需要管理多个项目的时候,workspace 提供了一种更友好的方式。
一个 workspace 是一个目录,含一个 Cargo.toml 文件,并且让包含的 packages 共享一个Cargo.lock
,统一了依赖。
所有 packages 的输出都会放到 workspace 的 target
目录里。
一个典型的 workspace 目录结构:
├── Cargo.lock
├── Cargo.toml
├── add-one
│ ├── Cargo.toml
│ └── src
│ └── lib.rs
├── adder
│ ├── Cargo.toml
│ └── src
│ └── main.rs
└── target
workspace 的定义文件: Cargo.toml
[workspace]
members = [
"adder",
"add-one",
]
参照
请“推荐”本文!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
2017-03-30 强化学习总结