10-遍历 Option
遍历 Option — Rust Design Patterns
1分钟内可阅读完
译文 · 基于 Rust Design Patterns
原文链接: https://rust-unofficial.github.io/patterns/idioms/option-iter.html
遍历 Option
描述
Option 可以看作一个包含零个或一个元素的容器。特别是,它实现了 IntoIterator trait,因此可以用于需要此类类型的泛型代码。
示例
由于 Option 实现了 IntoIterator,它可以作为
.extend() 的参数:
| |
如果需要把一个 Option 接到现有迭代器的末尾,可以把它传给
.chain():
| |
注意:如果该 Option 总是 Some,那么更地道的做法是对该元素使用
std::iter::once,而不是用 Option。
另外,由于 Option 实现了 IntoIterator,也可以用 for 循环遍历它。这等价于用 if let Some(..) 匹配,而且在大多数情况下应优先使用后者。
参见
std::iter::once是一个恰好产生一个元素的迭代器。它是比Some(foo).into_iter()更易读的替代方案。Iterator::filter_map是Iterator::map的一个版本,专门用于返回Option的映射函数。ref_slicecrate 提供了把Option转换成零个或一个元素的切片的函数。