|
|
@ -100,17 +100,17 @@ $ cargo check
|
|
|
|
> Rust 虽然编译速度还行,但是还是不能 Go语言相提并论,因为 Rust 需要做很多复杂的编译优化和语言特性解析, 甚至连如何优化编译速度都成了一门学问[优化编译速度](../compiler/speed-up.md)
|
|
|
|
> Rust 虽然编译速度还行,但是还是不能 Go语言相提并论,因为 Rust 需要做很多复杂的编译优化和语言特性解析, 甚至连如何优化编译速度都成了一门学问[优化编译速度](../compiler/speed-up.md)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
## cargo.toml 和 cargo.lock
|
|
|
|
## Cargo.toml 和 Cargo.lock
|
|
|
|
|
|
|
|
|
|
|
|
`cargo.toml` 和 `cargo.lock` 是 `cargo` 的核心文件,它的所有活动均基于此二者。
|
|
|
|
`Cargo.toml` 和 `Cargo.lock` 是 `cargo` 的核心文件,它的所有活动均基于此二者。
|
|
|
|
|
|
|
|
|
|
|
|
`cargo.toml` 是 `cargo` 特有的项目数据描述文件,存储了项目的所有元配置信息,如果 Rust 开发者希望 Rust 项目能够按照期望的方式进行构建、测试和运行,那么,必须按照合理的方式构建 `cargo.toml`。
|
|
|
|
`Cargo.toml` 是 `cargo` 特有的项目数据描述文件,存储了项目的所有元配置信息,如果 Rust 开发者希望 Rust 项目能够按照期望的方式进行构建、测试和运行,那么,必须按照合理的方式构建 `Cargo.toml`。
|
|
|
|
|
|
|
|
|
|
|
|
`cargo.lock` 文件是 `cargo` 工具根据同一项目的 `toml` 文件生成的项目依赖详细清单,因此我们一般不用修改它,只需要对着 `cargo.toml` 文件撸就行了。
|
|
|
|
`Cargo.lock` 文件是 `cargo` 工具根据同一项目的 `toml` 文件生成的项目依赖详细清单,因此我们一般不用修改它,只需要对着 `Cargo.toml` 文件撸就行了。
|
|
|
|
|
|
|
|
|
|
|
|
> 什么情况下该把 `cargo.lock` 上传到 git仓库里?很简单,当你的项目是一个可运行的程序时,就上传 `cargo.lock`,如果是一个依赖库项目,那么请把它添加到 `.gitignore` 中
|
|
|
|
> 什么情况下该把 `Cargo.lock` 上传到 git仓库里?很简单,当你的项目是一个可运行的程序时,就上传 `Cargo.lock`,如果是一个依赖库项目,那么请把它添加到 `.gitignore` 中
|
|
|
|
|
|
|
|
|
|
|
|
现在用 VSCode 打开上面创建的"世界,你好"项目,然后进入根目录的 `cargo.toml` 文件,该文件包含不少信息。
|
|
|
|
现在用 VSCode 打开上面创建的"世界,你好"项目,然后进入根目录的 `Cargo.toml` 文件,该文件包含不少信息。
|
|
|
|
|
|
|
|
|
|
|
|
#### package配置段落
|
|
|
|
#### package配置段落
|
|
|
|
`package` 中记录了项目的描述信息,典型的如下:
|
|
|
|
`package` 中记录了项目的描述信息,典型的如下:
|
|
|
@ -127,7 +127,7 @@ edition = "2021"
|
|
|
|
|
|
|
|
|
|
|
|
#### 定义项目依赖
|
|
|
|
#### 定义项目依赖
|
|
|
|
|
|
|
|
|
|
|
|
使用 `cargo` 工具的最大优势就在于,能够对该项目的各种依赖项进行方便、统一和灵活的管理。在 `cargo.toml` 中,主要通过各种依赖段落来描述该项目的各种依赖项:
|
|
|
|
使用 `cargo` 工具的最大优势就在于,能够对该项目的各种依赖项进行方便、统一和灵活的管理。在 `Cargo.toml` 中,主要通过各种依赖段落来描述该项目的各种依赖项:
|
|
|
|
|
|
|
|
|
|
|
|
- 基于 Rust 官方仓库 `crates.io`,通过版本说明来描述
|
|
|
|
- 基于 Rust 官方仓库 `crates.io`,通过版本说明来描述
|
|
|
|
- 基于项目源代码的 git仓库地址,通过 URL 来描述
|
|
|
|
- 基于项目源代码的 git仓库地址,通过 URL 来描述
|
|
|
@ -145,7 +145,7 @@ geometry = { path = "crates/geometry" }
|
|
|
|
|
|
|
|
|
|
|
|
相信聪明的读者已经能看懂该如何引入外部依赖库,这里就不再赘述。
|
|
|
|
相信聪明的读者已经能看懂该如何引入外部依赖库,这里就不再赘述。
|
|
|
|
|
|
|
|
|
|
|
|
详细的说明参见此章:[Cargo依赖管理](../cargo/dependency.md),但是不建议大家现在去看,只要按照目录浏览,拨云见雾只可待。
|
|
|
|
详细的说明参见此章:[Cargo依赖管理](../cargo/dependency.md),但是不建议大家现在去看,只要按照目录浏览,拨云见雾只可待。
|
|
|
|
|
|
|
|
|
|
|
|
## 基于cargo的项目组织结构
|
|
|
|
## 基于cargo的项目组织结构
|
|
|
|
|
|
|
|
|
|
|
|