|
|
|
@ -1,8 +1,8 @@
|
|
|
|
|
# 不太勤快的迭代器
|
|
|
|
|
迭代器,在Rust中是一个非常耀眼的存在,它光鲜亮丽,它让Rust大道至简,它备受用户的喜爱。可是,它也是懒惰的,不信?一起来看看。
|
|
|
|
|
迭代器,在 Rust 中是一个非常耀眼的存在,它光鲜亮丽,它让 Rust 大道至简,它备受用户的喜爱。可是,它也是懒惰的,不信?一起来看看。
|
|
|
|
|
|
|
|
|
|
## for循环 vs 迭代器
|
|
|
|
|
在迭代器学习中,我们提到过迭代器在功能上可以替代循环,性能上略微优于循环(避免边界检查),安全性上优于循环,因此在Rust中,迭代器往往都是更优的选择,前提是迭代器得发挥作用。
|
|
|
|
|
在迭代器学习中,我们提到过迭代器在功能上可以替代循环,性能上略微优于循环(避免边界检查),安全性上优于循环,因此在 Rust 中,迭代器往往都是更优的选择,前提是迭代器得发挥作用。
|
|
|
|
|
|
|
|
|
|
在下面代码中,分别是使用`for`循环和迭代器去生成一个`HashMap`。
|
|
|
|
|
|
|
|
|
@ -71,7 +71,7 @@ accounts.into_iter().map(|a| {
|
|
|
|
|
> 事实上,IDE和编译器都会对这种代码给出警告:iterators are lazy and do nothing unless consumed
|
|
|
|
|
|
|
|
|
|
## 解决办法
|
|
|
|
|
原因非常清晰,如果读者还有疑惑,建议深度下上面给出的迭代器链接,我们这里就不再赘述。
|
|
|
|
|
原因非常清晰,如果读者还有疑惑,建议深度了解下上面给出的迭代器链接,我们这里就不再赘述。
|
|
|
|
|
|
|
|
|
|
下面列出三种合理的解决办法:
|
|
|
|
|
|
|
|
|
|