模块使我们可以将板条箱中的代码分为几组,以提高可读性和重用性。 模块还控制项目的隐私,即项目是可以由外部代码使用(公共)还是内部实现细节而不能用于外部使用(私有)。
举例来说,让我们写一个提供餐厅功能的图书馆箱子。 我们将定义功能的签名,但将其主体留空以专注于代码的组织,而不是实际在代码中实现餐厅。
在餐饮业中,餐厅的某些部分称为房屋前部,而其他部分称为房屋后部。 屋前就是顾客的所在。 主机在这里招待客户,服务器在接受订单和付款,调酒师在这里喝酒。 屋后是厨师在厨房工作,洗碗碟机,经理进行行政工作的地方。
首先来创建一个名为lib.rs的文件(可以通过命令:cargo new --lib restaurant
来创建),并编辑内容:
mod front_of_house {
mod hosting {
fn add_to_waitlist() {}
fn seat_at_table() {}
}
mod serving {
fn take_order() {}
fn serve_order() {}
fn take_payment() {}
}
}
fn main() {}
我们以mod关键字开头定义模块,然后指定模块名称(在本例中为front_of_house),并在模块主体周围放置花括号。 在模块内部,我们可以有其他模块,在这种情况下,这些模块可以托管和服务。 模块还可以保存其他项目的定义,例如结构,枚举,常量,特征或者方法。
通过使用模块,我们可以将相关的定义分组在一起,并命名它们为什么相关。 使用此代码的程序员可以更轻松地找到他们想要使用的定义,因为他们可以基于组导航代码,而不必阅读所有定义。 向此代码添加新功能的程序员将知道将代码放置在何处以保持程序的组织性。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。