使用指南

    注: 类比Java中的maven或者gradle?

    为此,cargo做了四个事情:

    • 引入两个metadata文件,带有各种项目信息
    • 获取并构建项目的依赖
    • 用正确的参数调用或者其他构建工具来构建项目
    • 引入约定,简化Rust项目的工作

    cargo使用约定的文件位置来简化项目管理。

    • Cargo.tomlCargo.lock文件存储在项目(或者package)的根目录下
    • 默认类库文件是src/lib.rs
    • 默认可执行文件是src/main.rs
    • 其他可执行文件存放为src/bin/*.rs
    • 集成测试在tests文件夹(单元测试和他们测试的文件在一起)
    • 示例在examples文件夹
    • Benchmarks在benches文件夹.

    更多信息,请见 manifest description

    cargo.lock文件包含项目使用的所有依赖的确切信息。

    • cargo.toml: 描述项目的依赖,由开发人员编写
    • cargo.lock: 包含项目依赖的确切信息。由cargo维护,不应该手工编辑

    在版本仓库中保存的策略也不同:

    • 如果是类库,给其他项目使用,则将cargo.lock加入.gitignore,不要提交到仓库
    • 如果是可执行文件,如命令行工具或者应用,应该将cargo.lock提交到仓库中

    当依赖描述为git仓库时,默认是”master”分支的最新提交:

    1. name = "hello_world"
    2. version = "0.1.0"
    3. authors = ["Your Name <you@example.com>"]
    4. [dependencies]

    cargo将会在cargo.lock中展开为

    展开就会固定为这个当前时刻的这个具体commit。可以通过cargo update命令进行更新。

    1. $ cargo update # 更新所有依赖
    2. $ cargo update -p rand # 仅仅更新“rand”依赖

    cargo update命令会更新cargo.lock文件。

    这里的-p参数是package id,”rand”是package id的简短写法,查看的详情。

    使用cargo test命令运行测试。

    cargo在两个地方查找测试来运行:

    • src目录:单元测试
    • tests目录:集成测试

    可以在cargo test命令中增加一个filter,通过测试的名字来过滤出要执行的测试:

    Cargo在单个工作空间的所有包之间共享构建工件。目前,Cargo不会在不同的工作空间之间共享构建结果,但通过第三方工具可以实现类似的结果,sccache.