但凡经历过 C/C++
或 Go
语言 1.10 版本之前的用户都知道,一个好的包管理工具有多么的重要!!类似于 npm
包管理工具,但是却求而不得。
包管理工具最重要的意义就是任何用户拿到你的代码,都能运行起来,而不会因为各种包版本依赖焦头烂额。
早期的 cargo
在创建项目时,必须添加 --bin
的参数
现在的版本,已经无需此参数,cargo
默认就创建 bin
类型的项目
Rust
项目主要分为两个类型:bin
和 lib
,bin
是一个可运行的项目,lib
是一个依赖库项目。
第一种方法:
第二种方法:
在这种模式下,代码的编译速度会非常快,运行速度就慢了
原因是,在 debug
模式下,Rust
编译器不会做任何的优化,只为了尽快的编译完成,让你的开发流程更加顺畅。
release
模式下的编译与运行:
在 release 模式下,Rust 编译器会做尽可能多的优化,来达到更快的运行速度。
cargo check
当项目大了后,cargo run
和 cargo build
不可避免的会变慢
cargo check
是我们在代码开发过程中最常用的命令, 它的作用很简单:快速的检查一下代码能否编译通过。
因此该命令速度会非常快,能节省大量的编译时间。
Cargo.toml
和Cargo.lock
Cargo.toml
和 Cargo.lock
是 cargo
的核心文件,它的所有活动均基于此二者。
Cargo.toml
是 cargo
特有的项目数据描述文件。它存储了项目的所有元配置信息,如果 Rust
开发者希望 Rust
项目能够按照期望的方式进行构建、测试和运行,那么,必须按照合理的方式构建 Cargo.toml
。
Cargo.lock
文件是 cargo
工具根据同一项目的 toml
文件生成的项目依赖详细清单,因此我们一般不用修改它。
package
中记录了项目的描述信息,典型的如下:
基于 Rust 官方仓库 crates.io
使用 cargo
工具的最大优势就在于,能够对该项目的各种依赖项进行方便、统一和灵活的管理。
在 Cargo.toml
中,主要通过各种依赖段落来描述该项目的各种依赖项:
Rust
官方仓库 crates.io
,通过版本说明来描述git
仓库地址,通过 URL
来描述Unix
模式的路径来描述这也是 Cargo
推荐的目录结构,解释如下:
Cargo.toml
和 Cargo.lock
保存在 package
根目录下src
目录下lib
包根是 src/lib.rs
src/main.rs
src/bin/
目录下benchmark
放在 benches
目录下examples
目录下tests
目录下此外,bin
、tests
、examples
等目录路径都可以通过配置文件进行配置,它们被统一称之为 Cargo Target
。