» Rust快速入门 » 2. 高级篇 » 2.2 Cargo

Cargo(包管理工具)

cargo 是官方的 Rust 包管理工具。

依赖关系

cargo 可以管理项目的依赖关系。

要创建一个新的 Rust 项目。

# 一个二进制项目
$ cargo new foo

# 一个库项目
$ cargo new --lib bar

之后,你应该看到类似这样的文件层次结构:

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

main.rs 是项目的根源文件。Cargo.toml 是该项目的 cargo 配置文件。

文件内容如下所示:

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

[dependencies]

测试

测试就是一种验证非测试代码是否按预期运行的 Rust 函数。

#[derive(Debug)]
struct Rectangle {
    width: u32,
    height: u32,
}

impl Rectangle {
    fn can_hold(&self, other: &Rectangle) -> bool {
        self.width > other.width && self.height > other.height
    }
}

#[cfg(test)]
mod tests {
    use super::*;

    #[test]
    fn larger_can_hold_smaller() {
        let larger = Rectangle {
            width: 8,
            height: 7,
        };
        let smaller = Rectangle {
            width: 5,
            height: 1,
        };

        assert!(larger.can_hold(&smaller));
    }
}

然后,运行 cargo test 来查看是否通过。

$ cargo test
   Compiling rectangle v0.1.0
    Finished test [unoptimized + debuginfo] target(s) in 0.51s
     Running unittests src/lib.rs (...)

running 1 test
test tests::larger_can_hold_smaller ... ok

test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

   Doc-tests rectangle

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s