7 使用包、crate和模块管理不断增长的项目
当我们编写大型程序时,组织代码就显得非常重要,因为我们想直接在脑海中构建整个程序,几乎不可能完成的。
随着项目的增长:我们可以把代码分解成多个模块和多个文件来组织
一个包可以包含多个二进制crate和一个可选的crate库,伴随的着包的增长,我们可以将部分代码提取出来,做成独立的crate,这些crate作为外部依赖项
对一个由一系列相互关联的包组合而成的超大大型项目,Cargo提供了“工作空间”这一功能,我们将会在第十四章中cargo workspaces 对此进行讲解
除了对功能进行分组之外,封装实现细节可以让我们更加高级的重用代码:当我们实现了一个操作后,其它代码可以通过该代码的公共接口来进行调用,而不用关心它的实现细节。我们在编写代码时就可以定义哪些部分是其它代码可以使用的公共部分,以及哪些部分是我们有权更改的私有部分
Rust管理代码的“模块系统”包括:
包:cargo的一个功能,它允许我们构建】、测试和分享crate
Crates:一个模块的树形结构,它形成了库或者二进制项目
模块use:允许我们控制作用域和路径的私有性
路径:一个命名例如结构体、函数或模块等项的方式
7.4 使用use关键字将名称引入作用域
截至目前,我们勇于调用函数的路径都很冗长且重复,并不方便。例如我们对前面的add_to_ waitlist函数的调用,无论是采用绝对路径还是相对路径,我们都必须指定front_of_house和hosting。我们现在使用use关键字来简化整个过程,我们可