认识Cargo
包管理工具最重要的意义就是任何用户拿到代码,都能运行起来,而不会因为各种包版本依赖焦头烂额
cargo
提供了一系列的工具,从项目的建立、构建到测试、运行直至部署,为 Rust 项目的管理提供尽可能完整的手段。同时,与 Rust 语言及其编译器 rustc
紧密结合。
创建一个项目
使用如下命令即可在当前目录下创建一个rust项目
cargo new hello_world
可以看到有源码main.rs,git项目,以及cargo.toml文件(用于管理项目依赖)
运行项目
使用如下命令即可运行rust项目
cargo run
使用cargo check即可只编译,验证代码正确性
Cargo.toml和Cargo.lock
文件 | 内容 |
Cargo.toml | Cargo.toml 是 cargo 特有的项目数据描述文件。它存储了项目的所有元配置信息,如果 Rust 开发者希望 Rust 项目能够按照期望的方式进行构建、测试和运行,那么,必须按照合理的方式构建 Cargo.toml |
Cargo.lock | Cargo.lock 文件是 cargo 工具根据同一项目的 toml 文件生成的项目依赖详细清单 |
在 Cargo.toml
中,主要通过各种依赖段落来描述该项目的各种依赖项:
- 基于 Rust 官方仓库
crates.io
,通过版本说明来描述 - 基于项目源代码的 git 仓库地址,通过 URL 来描述
- 基于本地项目的绝对路径或者相对路径,通过类 Unix 模式的路径来描述
[dependencies]
rand = "0.3"
hammer = { version = "0.5.0"}
color = { git = "https://github.com/bjz/color-rs" }
geometry = { path = "crates/geometry" }
Cargo项目的目录---标准的package结构
一个标准的package目录结构如下:
.
├── Cargo.lock
├── Cargo.toml
├── src/
│ ├── lib.rs
│ ├── main.rs
│ └── bin/
│ ├── named-executable.rs
│ ├── another-executable.rs
│ └── multi-file-executable/
│ ├── main.rs
│ └── some_module.rs
├── benches/
│ ├── large-input.rs
│ └── multi-file-bench/
│ ├── main.rs
│ └── bench_module.rs
├── examples/
│ ├── simple.rs
│ └── multi-file-example/
│ ├── main.rs
│ └── ex_module.rs
└── tests/
├── some-integration-tests.rs
└── multi-file-test/
├── main.rs
└── test_module.rs
这也是 Cargo
推荐的目录结构,解释如下:
Cargo.toml
和Cargo.lock
保存在package
根目录下- 源代码放在
src
目录下 - 默认的
lib
包根是src/lib.rs
- 默认的二进制包根是
src/main.rs
- 其它二进制包根放在
src/bin/
目录下
- 其它二进制包根放在
- 基准测试 benchmark 放在
benches
目录下 - 示例代码放在
examples
目录下 - 集成测试代码放在
tests
目录下