Rust 语言的包管理工具是 cargo,cargo new
创建一个项目,项目名是 world_hello
,该项目的结构和配置文件都是由 cargo
生成,意味着我们的项目被 cargo
所管理。
$ cargo new world_hello
$ cd world_hello
Rust 项目主要分为两个类型:bin
和 lib
,前者是一个可运行的项目,后者是一个依赖库项目。cargo
默认就创建 bin
类型的项目。
可以通过cargo run命令编译并运行代码,也可以先执行cargo build —>在执行./target/debug/world_hello,编译后的二进制文件存放在项目路径的./target/debug/目录下,由于编译默认是debug
模式,代码的编译速度会非常快,但运行速度就慢了,因为在 debug
模式下,Rust 编译器不会做任何的优化,只为了尽快的编译完成,开发流程更加顺畅。可以通过添加 --release
参数来指定编译模式,以此提高运行速率。
cargo run --release
cargo build --release
cargo check
命令快速检查代码能否编译通过。
cargo生成的目录结构
d----- 2023/9/20 23:50 src
d----- 2023/9/20 23:52 target
-a---- 2023/9/20 23:50 8 .gitignore
-a---- 2023/9/20 23:52 152 Cargo.lock
-a---- 2023/9/20 23:50 177 Cargo.toml
-
src源代码存放路径,target:生成目标文件路径
-
Cargo.toml
是cargo
特有的项目数据描述文件。它存储了项目的所有元配置信息,如果 Rust 开发者希望 Rust 项目能够按照期望的方式进行构建、测试和运行,那么,必须按照合理的方式构建Cargo.toml
。 -
Cargo.lock
文件是cargo
工具根据同一项目的toml
文件生成的项目依赖详细清单,因此我们一般不用修改它,只需要对着Cargo.toml
文件撸就行了。 -
当项目是一个可运行的程序时,就上传
Cargo.lock到git仓库,
如果是一个依赖库项目,那么就把它添加到.gitignore
中
Cargo.toml里主要有package、dependencies字段,package
中记录了项目的描述信息,典型的如下:
[package]
name = "world_hello"
version = "0.1.0"
edition = "2021"
name
字段定义了项目名称,version
字段定义当前版本,新项目默认是 0.1.0
,edition
字段定义了我们使用的 Rust 大版本。
dependencies字段主要定义项目依赖。主要通过以下方式来描述各种依赖:
- 基于 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" }