依赖

大多数程序都依赖于一些库。如果您曾经手动管理过依赖项,您就会知道这有多么麻烦。幸运的是,Rust 生态系统标配了 cargocargo 可以管理项目的依赖项。

要创建一个新的 Rust 项目,

# A binary
cargo new foo

# A library
cargo new --lib bar

在本章的其余部分,我们假设我们正在创建一个二进制文件,而不是一个库,但所有概念都是相同的。

执行上述命令后,您应该会看到如下文件层次结构

.
├── bar
│   ├── Cargo.toml
│   └── src
│       └── lib.rs
└── foo
    ├── Cargo.toml
    └── src
        └── main.rs

main.rs 是新 foo 项目的根源文件——这没什么新鲜的。Cargo.toml 是该项目 cargo 的配置文件。如果您查看其内部,您应该会看到如下内容

[package]
name = "foo"
version = "0.1.0"
authors = ["mark"]

[dependencies]

[package] 下的 name 字段确定项目的名称。如果您发布 crate(稍后会详细介绍),crates.io 会使用此名称。它也是您编译时输出二进制文件的名称。

version 字段是使用 语义化版本 的 crate 版本号。

authors 字段是发布 crate 时使用的作者列表。

[dependencies] 部分允许您为项目添加依赖项。

例如,假设我们希望我们的程序有一个很棒的 CLI。您可以在 crates.io(官方 Rust 包注册表)上找到许多很棒的包。一个流行的选择是 clap。截至撰写本文时,clap 的最新发布版本是 2.27.1。要将依赖项添加到我们的程序中,我们只需在 Cargo.toml[dependencies] 下添加以下内容:clap = "2.27.1"。就是这样!您可以在程序中开始使用 clap 了。

cargo 还支持 其他类型的依赖项。以下只是一些示例

[package]
name = "foo"
version = "0.1.0"
authors = ["mark"]

[dependencies]
clap = "2.27.1" # from crates.io
rand = { git = "https://github.com/rust-lang-nursery/rand" } # from online repo
bar = { path = "../bar" } # from a path in the local filesystem

cargo 不仅仅是一个依赖管理器。所有可用的配置选项都列在 Cargo.toml格式规范 中。

要构建我们的项目,我们可以在项目目录中的任何位置(包括子目录!)执行 cargo build。我们还可以执行 cargo run 来构建和运行。请注意,这些命令将解析所有依赖项,下载所需的 crate,并构建所有内容,包括您的 crate。(请注意,它只重新构建尚未构建的内容,类似于 make)。

瞧!这就是全部内容了!