返回介绍

9.1 包

发布于 2024-10-13 11:25:31 字数 2437 浏览 0 评论 0 收藏 0

箱子 (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"

The Manifest Format

编译配置

通过配置指定编译参数,分别有:

  • profile.dev : cargo run, build
  • profile.release : cargo build --release
  • profile.test : cargo test
  • profile.bench : cargo bench

Cargo Profiles

依赖管理

如要引入第三方包,需在 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文