走进 Rust:迭代器
Rust 大约 1040 字遍历求和
iter()
获取迭代器,sum()
求和。
#[test]
fn iterator_sum() {
let v1 = vec![1, 2, 3];
let v1_iter = v1.iter();
let total: i32 = v1_iter.sum();
assert_eq!(total, 6);
}
map
集合中的元素每个都加1
。
let v1: Vec<i32> = vec![1, 2, 3];
let v2: Vec<_> = v1.iter().map(|x| x + 1).collect();
assert_eq!(v2, vec![2, 3, 4]);
自定义迭代器
实现Iterator
的trait
。
struct Counter {
count: u32,
}
impl Counter {
fn new() -> Counter {
Counter { count: 0 }
}
}
impl Iterator for Counter {
type Item = u32;
fn next(&mut self) -> Option<Self::Item> {
self.count += 1;
if self.count < 6 {
Some(self.count)
} else {
None
}
}
}
#[test]
fn calling_next_directly() {
let mut counter = Counter::new();
assert_eq!(counter.next(), Some(1));
assert_eq!(counter.next(), Some(2));
assert_eq!(counter.next(), Some(3));
assert_eq!(counter.next(), Some(4));
assert_eq!(counter.next(), Some(5));
assert_eq!(counter.next(), None);
}
阅读 1830 · 发布于 2020-08-06
————        END        ————
Give me a Star, Thanks:)
https://github.com/fendoudebb扫描下方二维码关注公众号和小程序↓↓↓

昵称:
随便看看
换一批
-
Java 并发编程之 AQS Semaphore 源码解析阅读 1517
-
macOS IDEA 显示 .DS_Store 文件阅读 391
-
Windows 子系统修改 root 用户密码阅读 895
-
Android 使用 CountDownTimer 类进行倒计时阅读 1829
-
Java11 -Xms -Xmx 设置堆内存大小时的注意事项阅读 2084
-
MySQL 还原备份非常慢解决方法阅读 3710
-
Maven 错误:无效的目标发行版:11.0.2阅读 1107
-
Nginx 配置之开启缓存过期时间阅读 3227
-
npm install --save 和 --save-dev 的区别阅读 1170
-
Elasticsearch 出现 circuit_breaking_exception 异常阅读 15529