文章来源于网络收集而来,版权归原创者所有,如有侵权请及时联系!
9.1 包
箱子 (crate)是 模块 (module)集合,对应可执行、库项目。 包 (package)则管理一到多个箱子,是构建、测试和分发单位。
规则:
- 最少有一个箱子。
- 只能有一个 lib 箱子。
- 可以有多个 bin 箱子。
$ cargo new my --lib Created library `my` package $ tree my my ├── Cargo.toml └── src └── lib.rs
可选择
--bin
、--lib
模板,或在已有目录执行init
命令。某些名字(如test
)有特定意义,不能作为包名。
包以 Cargo.toml
文件记录基本信息和依赖项,并描述如何构建它们。
[package] name = "demo" version = "0.1.0" authors = [] edition = "2018" [profile.release] panic = 'abort' [dependencies] byteorder = "0.4.0" num = "0.1.27"
编译配置
通过配置指定编译参数,分别有:
profile.dev
:cargo run, build
profile.release
:cargo build --release
profile.test
:cargo test
profile.bench
:cargo bench
依赖管理
如要引入第三方包,需在 dependencies
添加依赖设置。
相关工具会自动下载并缓存到
~/.cargo/registry
目录下。首次构建时,Cargo.lock
记录依赖信息。当修改依赖版本,或运行cargo update
时更新。
无需再做 extern crate
声明,直接以 use
语句引入成员。
如果手工使用
rustc
编译,仍需--extern
参数。
# Cargo.toml [dependencies] futures = "0.3"
// main.rs use futures::executor::block_on; async fn hello() { println!("hello, world"); } fn main() { block_on(hello()); }
版本兼容性规则
0.0
: 不与任何版本兼容。0.x
: 与0.x
兼容。(0.6.1 -> 0.6.3)1.0
: 主版本号保持兼容。(2.01 -> 2.99, not 3.0)
image = "=0.10.0" image = ">=1.0.5" image = ">1.0.5 <1.1.9" image = "<=2.7.10"
自定义下载路径
非 crates.io 包,可手工指定路径。
image = { git = "https://github.com/Piston/image.git", branch = "master" } image = { git = "https://github.com/Piston/image.git", rev = "528f19c" } image = { path = "./vendor/image" }
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论