Improve Ch13

This commit is contained in:
Unisko PENG 2023-05-04 13:43:29 +08:00
parent c456a59179
commit 01f1bb95b6

View File

@ -785,9 +785,9 @@ impl Config {
咱们这里之所以需要 `clone` 方法,是由于在参数 `args` 中,咱们有一个 `String` 元素构成的切片,而 `build` 函数并不拥有 `args`。为返回 `Config` 实例的所有权,咱们不得不克隆 `Config` 结构体的 `query``filename` 字段,进而 `Config` 实例便可拥有他的值。
有了关于迭代器的新知识,那么就可以将这个 `build` 函数,修改为取得某个迭代器的所有权作为其参数,而不再是借用一个切片。与其使用对切片长度加以检查,以及所有进入到特定位置的那些代码,这里将运用迭代器功能。由于迭代器将访问到那些值,那么这样就将厘清这个 `Config::build` 函数,正在完成些什么事情
利用我们对迭代器的新知识,我们可以改变构建函数,使其拥有一个迭代器作为其参数,而不是借用一个切片。我们将使用迭代器的功能,而不是检查切片的长度并对特定位置进行索引的代码。这将明确 `Config::build` 函数正在做什么,因为迭代器将访问这些值
一旦 `Config::build` 取得那个迭代器的所有权,而停止使用借用到的索引操作,你们这里就可以把那个迭代器中的那些 `String` 值,迁移到 `Config` 里去,而非调用 `clone` 方法并构造一个新的内存分配了
一旦 `Config::build` 取得迭代器的所有权,而不再使用借用的索引操作,咱们就可以将 `String` 值从迭代器迁移到 `Config` 中,而不是调用 `clone` 方法并构造新的内存分配
### 直接使用返回的迭代器