From becc0fe04237a1b4ce5a1a274b833a6a542e66f1 Mon Sep 17 00:00:00 2001 From: Hector PENG Date: Sat, 14 Mar 2026 16:35:16 +0800 Subject: [PATCH] Updated src/Ch07_Managing_Growing_Projects_with_Packages_Crates_and_Modules.md'. --- ...ojects_with_Packages_Crates_and_Modules.md | 36 ++++++++----------- 1 file changed, 15 insertions(+), 21 deletions(-) diff --git a/src/Ch07_Managing_Growing_Projects_with_Packages_Crates_and_Modules.md b/src/Ch07_Managing_Growing_Projects_with_Packages_Crates_and_Modules.md index e76a909..5f66172 100644 --- a/src/Ch07_Managing_Growing_Projects_with_Packages_Crates_and_Modules.md +++ b/src/Ch07_Managing_Growing_Projects_with_Packages_Crates_and_Modules.md @@ -1,28 +1,22 @@ -# 使用包、代码箱与模组管理不断增长的项目 +# 包、代码箱与模组 -**Managing Growing Projects with Packages, Crates and Modules** +当咱们编写大型程序时,组织咱们的代码将变得日益重要。通过分组相关的功能并根据不同特性分离代码,咱们将清楚可在何处找到实现特定特性的代码,以及在哪里可以修改某一特性的工作方式。 + +到目前为止,我们已编写的程序都在一个文件的一个模组中。随着项目增长,咱们应通过把代码拆分为多个模组,然后拆分为多个文件来组织代码。一个包可以包含多个二进制代码箱,也可以包含一个库代码箱。随着包的增长,咱们可提取各个部分到单独的代码箱,而成为外部依赖项。这一章介绍所有这些技巧。对于由一组共同发展互相关联的包组成的超大型项目,Cargo 提供了 *工作空间,workspaces*,我们将在第 14 章中的 [Cargo 工作空间](../crates-io/workspace.md) 小节中介绍。 + +我们还将讨论封装实现的细节,这让咱们可在更高级别重用代码:一旦咱们实现了某项操作,其他代码可以通过其公共接口调用咱们的代码,而不必了解实现的工作原理。咱们编写代码的方式定义了哪些部分属于公开供其他代码使用的,以及哪些部分属于咱们保留更改权利的私有实现细节。这是限制咱们必须记住细节数量的另一方式。 + +一个相关的概念是作用域:代码写下之处的嵌套上下文,都有一组被定义为 “在作用域中” 的名字。在阅读、编写及编译代码时,程序员和编译器都需要知道,某个特定点位上的特定名字,是否引用了某个变量、函数、结构体、枚举、模组、常量,或其他项目及该项目的含义。咱们可以创建出作用域,并改变哪些名字在作用域内或在作用域外。在同一个作用域中,咱们不能有两个同名的项目;有一些可用于解决名字冲突的工具。 + +Rust 有着数项特性,可以让咱们管理咱们代码的组织,包括哪些细节会暴露,哪些细节属于私有的,以及咱们程序中的各个作用域中都有哪些名字。这些特性有时统称为 *模组系统,module system*,包括: -当咱们编写大型程序时,组织咱们的代码,将变得日益重要。通过对相关功能进行分组,并将具有不同功能的代码分开,咱们就会弄清楚,在哪里可以找到实现某项特定功能的代码,以及在哪里可以改变某项特性的工作方式。 - -到目前为止,我们编写的程序,都是在一个文件的一个模块中。随着项目的增长,咱们应通过把代码拆分为多个模块,然后拆分为多个文件来组织代码。一个包可以包含多个二进制代码箱,也可以包含一个库代码箱。随着包的增长,咱们可以将各个部分,提取到独立的代码箱中,成为外部依赖。本章将介绍所有这些技巧。对于由一组相互关联,共同发展的包组成的超大型项目,Cargo 提供了 *工作空间,workspaces*,我们将在第 14 章的 [Cargo 工作空间](../crates-io/workspace.md) 小节中介绍。 - -我们还将讨论对实现细节进行封装的问题,这可以让咱们在更高层次上重用代码:一旦咱们实现了某个操作,其他代码就可以通过其公共接口,调用你的代码,而不必知道该操作是如何实现的。咱们编写代码的方式,定义了哪些部分是公开供其他代码使用的,哪些部分是私有的,咱们保留更改权利的实现细节。这是减少咱们必须记住的细节数量(从而减轻编程者负担)的方法。 - -一个相关的概念是作用域:代码被写下之处的嵌套上下文,有着一组被定义为 “在作用域中” 的名字。在读取、编写和编译代码时,程序员和编译器都需要知道,某个特定点位上的特定名字,是否引用了某个变量、函数、结构体、枚举、模组、常量,或其他项目,以及该项目的含义。咱们可以创建出作用域,并改变哪些名字,在作用域内,哪些在作用域外。在同一个作用域中,不能有两个同名的项目;有些工具,可以解决名字冲突问题。 - -Rust 有数项特性,可以让咱们管理咱们代码的组织,包括哪些细节是公开的,哪些细节是私有的,以及咱们程序中各个作用域中的有哪些名字。这些特性有时统称为 *模组系统*,包括: +- **包,package**:让咱们构建、测试和共享代码箱的 Cargo 特性; +- **代码箱,crate**:产生库或可执行程序的模组树; +- **模组,module** 与 **`use` 关键字**:让咱们可以控制路径的组织、作用域及隐私; +- **路径,path**:命名项目的一种方式,例如结构体、函数或模组。 -- **包,packages**:让咱们构建、测试和共享代码箱的 Cargo 特性; - -- **代码箱,crates**:产生库或可执行程序的模组树; - -- **模组,modules** 与 **`use` 关键字**:让咱们控制路径的组织、作用域和隐私; - -- **路径,paths**:命名项目(例如结构体、函数或模块)的一种方式。 - - -在本章中,我们将介绍所有这些功能,讨论他们如何交互,并探讨如何使用他们来管理作用域。到本章结束时,咱们应对模组系统有扎实的了解,并能像专业人士一样,使用作用域! +在这一章中,我们将介绍所有这些特性,讨论他们如何交互,并解释如何使用他们来管理作用域。到本章结束时,咱们应对模组系统有扎实了解,并能像专业人士一样,使用作用域!