mirror of
https://github.com/KaiserY/trpl-zh-cn
synced 2025-02-23 04:32:16 +08:00
commit
9be3dda54e
@ -12,7 +12,7 @@
|
||||
|
||||
这里有一个需要说明的概念 “作用域(scope)”:代码所在的嵌套上下文有一组定义为 “in scope” 的名称。当阅读、编写和编译代码时,程序员和编译器需要知道特定位置的特定名称是否引用了变量、函数、结构体、枚举、模块、常量或者其他有意义的项。你可以创建作用域,以及改变哪些名称在作用域内还是作用域外。同一个作用域内不能拥有两个相同名称的项;可以使用一些工具来解决名称冲突。
|
||||
|
||||
Rust 有许多功能可以让你管理代码的组织,包括哪些内容可以被公开,哪些内容作为私有部分,以及程序每个作用域中的名字。这些功能。这有时被称为 “模块系统”(“the module system”),包括:
|
||||
Rust 有许多功能可以让你管理代码的组织,包括哪些内容可以被公开,哪些内容作为私有部分,以及程序每个作用域中的名字。这些功能。这有时被称为 “模块系统(the module system)”,包括:
|
||||
|
||||
* **包**(*Packages*): Cargo 的一个功能,它允许你构建、测试和分享 crate。
|
||||
* **Crates** :一个模块的树形结构,它形成了库或二进制项目。
|
||||
|
@ -8,7 +8,7 @@
|
||||
|
||||
包中所包含的内容由几条规则来确立。一个包中至多 **只能** 包含一个库 crate(library crate);包中可以包含任意多个二进制 crate(binary crate);包中至少包含一个 crate,无论是库的还是二进制的。
|
||||
|
||||
让我们来看看创建包的时候会发生什么。首先,我们输入命令`cargo new`:
|
||||
让我们来看看创建包的时候会发生什么。首先,我们输入命令 `cargo new`:
|
||||
|
||||
```text
|
||||
$ cargo new my-project
|
||||
|
@ -148,7 +148,7 @@ fn function2() -> IoResult<()> {
|
||||
|
||||
### 使用 `pub use` 重导出名称
|
||||
|
||||
当使用 `use` 关键字将名称导入作用域时,在新作用域中可用的名称是私有的。如果为了让调用你编写的代码的代码能够像在自己的作用域内引用这些类型,可以结合 `pub` 和 `use`。这个技术被称为 “重导出”(*re-exporting*),因为这样做将项引入作用域并同时使其可供其他代码引入自己的作用域。
|
||||
当使用 `use` 关键字将名称导入作用域时,在新作用域中可用的名称是私有的。如果为了让调用你编写的代码的代码能够像在自己的作用域内引用这些类型,可以结合 `pub` 和 `use`。这个技术被称为 “*重导出*(*re-exporting*)”,因为这样做将项引入作用域并同时使其可供其他代码引入自己的作用域。
|
||||
|
||||
示例 7-17 展示了将示例 7-11 中使用 `use` 的根模块变为 `pub use` 的版本的代码。
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user