Update ch13-03-improving-our-io-project.md

删除多余段落
This commit is contained in:
shower 2022-06-29 17:19:42 +08:00 committed by GitHub
parent 0153632213
commit d9817fba84
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -60,8 +60,6 @@
`env::args` 函数的标准库文档显示,它返回的迭代器的类型为 `std::env::Args`。我们已经更新了 `Config :: new` 函数的签名,因此参数 `args` 的类型为 `std::env::Args` 而不是 `&[String]`。因为我们拥有 `args` 的所有权,并且将通过对其进行迭代来改变 `args` ,所以我们可以将 `mut` 关键字添加到 `args` 参数的规范中以使其可变。 `env::args` 函数的标准库文档显示,它返回的迭代器的类型为 `std::env::Args`。我们已经更新了 `Config :: new` 函数的签名,因此参数 `args` 的类型为 `std::env::Args` 而不是 `&[String]`。因为我们拥有 `args` 的所有权,并且将通过对其进行迭代来改变 `args` ,所以我们可以将 `mut` 关键字添加到 `args` 参数的规范中以使其可变。
现在我们还需指定字符串 slice 错误类型只能有 `'static` 生命周期。因为我们之前只会返回字符串 slice所以这是成立的。然而当参数中有一个引用的时候返回类型的引用有可能与参数的引用有着相同的生命周期。之前第十章 [“生命周期省略”][lifetime-elision] 部分讨论的规则生效,因此无需注明 `&str` 的生命周期。随着对 `args` 的修改,生命周期省略规则不再适用,所以必须指定 `'static` 生命周期。
#### 使用 `Iterator` trait 代替索引 #### 使用 `Iterator` trait 代替索引
接下来,我们将修改 `Config::new` 的内容。标准库文档还提到 `std::env::Args` 实现了 `Iterator` trait因此我们知道可以对其调用 `next` 方法!示例 13-27 更新了示例 12-23 中的代码,以使用 `next` 方法: 接下来,我们将修改 `Config::new` 的内容。标准库文档还提到 `std::env::Args` 实现了 `Iterator` trait因此我们知道可以对其调用 `next` 方法!示例 13-27 更新了示例 12-23 中的代码,以使用 `next` 方法: