对于给定的迭代器集a,b,c,可以成功地将它们链接起来a.chain(b).chain(c).由于我试图编写的CLI util提供了一个路径向量(字符串, - dirs"a/b/c""d/e/f"...),我想walkd_dir在每个上使用然后将它们连在一起.我的第一个想法是:
fn main() {
let a = 0..3;
let b = 3..6;
let c = 6..9;
let v = vec![b, c];
v.iter().cloned().fold(a, |acc, e| acc.chain(e));
}
Run Code Online (Sandbox Code Playgroud)
<anon>:6:40: 6:52 error: mismatched types:
expected `core::ops::Range<_>`,
found `core::iter::Chain<core::ops::Range<_>, core::ops::Range<_>>`
(expected struct `core::ops::Range`,
found struct `core::iter::Chain`) [E0308]
<anon>:6 v.iter().cloned().fold(a, |acc, e| acc.chain(e));
Run Code Online (Sandbox Code Playgroud)
另一个尝试http://is.gd/ZKdxZM,虽然a.chain(b).chain(c)有效.
用途flat_map:
fn main() {
let a = 0..3;
let b = 3..6;
let c = 6..9;
let v = vec![a, b, c];
v.iter().flat_map(|it| it.clone());
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2352 次 |
| 最近记录: |