一、crate
Rust用了两个概念来管理项目:一个是crate,一个是mod。
crate简单理解就是一个项目。crate是Rust中的独立编译单元。每个crate可以编译成一个库或者可执行文件,可以通过rustc 的选项 --crate-type来指定,默认情况 下,rustc 将从crate产生二进制可执行文件。
官方有一个crate仓库https://crates.io/ ,可以供用户发布各种各样的库,用户也可以直接使用这里面的开源库。
mod简单理解就是命名空间。mod可以嵌套,还可以控制内部元素的可见性。
crate和mod的重要区别:
- crate之间不能出现循环引用。mod可以循环引用,mod1可以引入mod2,同时mod2可以引入mod1。
- 在Rust里面,crate才是一个完整的编译单元。也就是说,rustc编译器必须把整个crate的内容全部读进去才能执行编译,rustc不是基于单个的.rs文件或者mod来执行编译的。
二、库
2.1、使用cargo new rary --lib命令生成名字叫rary的项目,其类型是库。此时自动生成一个lib.rs的模板文件。
2.2、打开lib.rs文件,将模板内容代码替换成你自己的代码,以下是简单代码样例:
pub