在官方文档的for_each中有这么个例子:
let a = (0..5).flat_map(|x| x * 100 .. x * 110).collect::<Vec<_>>();
println!("a: {a}");
// 以上的输出是
// a: [100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213 ... 437, 438, 439]
现在是没搞明白闭包里面这个range的用法,有知道的大神麻烦帮忙解惑,谢谢。
1
共 2 条评论, 1 页
评论区
写评论Range<i32>
类型按照下面的方式生成迭代器:所以
0..0
每次生成 None,a..b
生成a, a+1, ..., b-1
。当然,
.flat_map(...)
与.map(...).flatten()
等价,所以你的代码还可以写成(0..5).map(|x| x * 100 .. x * 110).flatten().collect::<Vec<_>>()
。帖子发出去之后继续研究了一下,大致明白了,写出来备忘,如果不对,请指正。