mirror of
https://github.com/gnu4cn/rust-lang-zh_CN.git
synced 2025-01-30 06:00:13 +08:00
Update Ch13
This commit is contained in:
parent
79b0ba873b
commit
a3156f4ccf
@ -749,12 +749,12 @@ mod tests {
|
||||
|
||||
## 改进咱们的 I/O 项目
|
||||
|
||||
有了迭代器方面的新知识,咱们便可通过使用迭代器,改进第 12 章中的那个 I/O 项目,令到代码各处更清楚与简练。咱们来看看,迭代器可怎样改进其中 `Config::build` 与 `search` 函数的实现。
|
||||
有了迭代器方面的新知识,咱们便可通过使用迭代器,改进第 12 章中的 I/O 项目,令到代码各处更清楚与简练。咱们来看看,迭代器可怎样改进其中 `Config::build` 与 `search` 函数的实现。
|
||||
|
||||
|
||||
### 使用迭代器消除 `clone`
|
||||
|
||||
代码清单 12-6 中,那里曾添加了取 `String` 值的切片,并通过索引到那个切片中并克隆出一些值,从而创建出一个允许拥有这些值的 `Config` 结构体实例的代码。下面清单 13-17 中,就重现了正如清单 12-23 中,那个 `Config::build` 函数的实现:
|
||||
在清单 12-6 中,我们添加了一些代码,这些代码获取了一个 `String` 值的切片,并通过索引到该切片并克隆这些值,来创建一个 `Config` 体的实例,使 `Config` 结构体拥有这些值。下面清单 13-17 中,咱们重现了清单 12-23 中 `Config::build` 函数的实现:
|
||||
|
||||
文件名:`src/lib.rs`
|
||||
|
||||
@ -781,7 +781,7 @@ impl Config {
|
||||
|
||||
*清单 13-17:清单 12-23 中 `Config::build` 函数的重现*
|
||||
|
||||
那个时候,就曾说过不要对其中的那两个低效率 `clone` 调用担心,因为将来会把他们消除掉。那么这个时候就是消除他们的时机!
|
||||
当时,我们说不用担心低效的克隆调用,因为将来咱们会删除它们。好吧,现在是时候了!
|
||||
|
||||
之所以这里需要 `clone` 方法,是由于这里在参数 `args` 中,有着由一些 `String` 元素构成的切片,而这个 `build` 函数并不拥有 `args`。为返回某个 `Config` 实例的所有权,那里就不得不克隆 `Config` 结构体的 `query` 与 `filename` 字段,如此该 `Config` 实例就能拥有他的这些值。
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user