使用包、Crate和模块管理不断增长的项目
“模块系统(the module system)”,包括:
- 包(Packages): Cargo 的一个功能,它允许你构建、测试和分享 crate。
- Crates :一个模块的树形结构,它形成了库或二进制项目。
- 模块(Modules)和 use: 允许你控制作用域和路径的私有性。
- 路径(path):一个命名例如结构体、函数或模块等项的方式
包和crate
定义模块来控制作用域与私有性
定义一个模块,是以 mod 关键字为起始,然后指定模块的名字。在模块内,我们还可以定义其他的模块,就像本例中的 hosting 和 serving 模块。模块还可以保存一些定义的其他项,比如结构体、枚举、常量、特性、或者函数。src/main.rs 和 src/lib.rs 叫做 crate 根。之所以这样叫它们是因为这两个文件的内容都分别在 crate 模块结构的根组成了一个名为 crate 的模块,该结构被称为 模块树(module tree)。
10.泛型、trait与生命周期
泛型数据类型
trait定义共享的行为
trait 告诉 Rust 编译器某个特定类型拥有可能与其他类型共享的功能。可以通过 trait 以一种抽象的方式定义共享的行为。可以使用 trait bounds 指定泛型是任何拥有特定行为的类型。
定义trait:
- 一个类型的行为由其可供调用的方法构成。
- trait 定义是一种将方法签名组合起来的方法,目的是定义一个实现某些目的所必需的行为的集合。