入门 The Cargo Team 2026-09-13 15:48:21 · 0 阅读
第6章 依赖管理
crates.io 是 Rust 社区的中央包注册中心(package registry),用于发现和下载包。cargo 默认配置为从它查找所需的包。
要依赖一个托管在 crates.io 上的库,只需把它加进 Cargo.toml。
添加依赖
如果你的 Cargo.toml 中还没有 [dependencies] 部分,先添加它,然后列出想用的 crate 名称和版本。下面的例子添加了对 time crate 的依赖:
[dependencies]
time = "0.1.12"
版本字符串遵循 SemVer 版本要求。关于可用的写法,可参阅指定依赖文档。
如果想再添加对 regex crate 的依赖,不需要为每个 crate 都写一个 [dependencies]。下面是同时依赖 time 和 regex 时的完整 Cargo.toml:
[package]
name = "hello_world"
version = "0.1.0"
edition = "2024"
[dependencies]
time = "0.1.12"
regex = "0.1.41"
重新运行 cargo build,Cargo 会获取新的依赖及其所有间接依赖,把它们全部编译,并更新 Cargo.lock:
$ cargo build
Updating crates.io index
Downloading memchr v0.1.5
Downloading libc v0.1.10
Downloading regex-syntax v0.2.1
Downloading memchr v0.1.5
Downloading aho-corasick v0.3.0
Downloading regex v0.1.41
Compiling memchr v0.1.5
Compiling libc v0.1.10
Compiling regex-syntax v0.2.1
Compiling memchr v0.1.5
Compiling aho-corasick v0.3.0
Compiling regex v0.1.41
Compiling hello_world v0.1.0 (file:///path/to/package/hello_world)
Cargo.lock 记录了所有依赖实际使用的具体版本信息。
即使 regex 库更新了,只要你不执行 cargo update,构建时仍会使用锁定文件记录的版本。
现在你可以在 main.rs 中使用 regex 库了。
use regex::Regex;
fn main() {
let re = Regex::new(r"^\d{4}-\d{2}-\d{2}$").unwrap();
println!("Did our date match? {}", re.is_match("2014-01-01"));
}
运行结果如下:
$ cargo run
Running `target/hello_world`
Did our date match? true