一、cargo
cargo是官方的Rust包管理工具,我们可以在命令行使用cargo --help命令来查看它的基本用法,大家也可以查看cargo官方的使用文档。cargo可以用于创建和管理项目、编译、执行、测试、管理外部下载的包和可执行文件等。
二、创建项目
2.1、使用cargo new test可以创建普通的可执行项目,如果需要创建一个库项目,可以使用–lib选项,如:cargo new test_lib --lib。
2.2、生成的项目文件中,Cargo.toml是我们的项目管理配置文件,这里记录了该项目相关的元信息。该配置文件是使用TOML语言编写的。TOML语言的特色是:规范简单、语义明显、阅读性高。TOML专门被设计为可以无歧义地映射为哈希表,从而可以更容易地解析为各种语言中的数据结构。关于该配置文件的详细格式定义,可以参考官方的使用文档。[package]用来定义crate的相关信息,如名字、版本、使用的rust版本等;[dependencies]用来添加项目依赖,依赖可以是本地文件、第三方依赖包、或者是git仓库地址。
三、项目编译运行
普通可执行项目的默认二进制文件名为main.rs,如果在同一个项目中有两个或者更多的二进制可执行文件,可以在src目录下新建一个bin目录,将其他的二进制可执行文件添加到该目录中进行管理,编译时cargo build默认编译main.rs文件,如果需要编译其他二进制文件可以使用--bin
参数编译,如:cargo build --bin hellorust_another。
四、测试
Rust里面有一个特殊的attribute,叫作#[cfg]。它主要是用于实现各种条件编译。比如#[cfg(test)]意思是,这部分代码只在test这个开关打开的时候才会被编译。
在我们创建的新的库项目,默认会生成测试模块和函数,注意 fn 行之前的 #[test]:这个属性表明这是一个测试函数,这样测试执行者就知道将其作为测试处理。代码样例如下:
#[cfg(test)]
mod tests {
#[test]
fn it_works() {
let result = 2 + 2;
assert_eq!(result, 4);
}
}
当我们使用cargo test命令的时候,被#[cfg(test)]标记的代码就会被编译执行,并在结果中显示所有的测试结果。