入门 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]。下面是同时依赖 timeregex 时的完整 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

评论 (0)