eis*_*man 6 iterator skip rust
迭代器有一个skip跳过第一个n元素的方法:
let list = vec![1, 2, 3];
let iterator = list.iter();
let skip_iter = iterator.skip(2); //skip the first 2 elements
Run Code Online (Sandbox Code Playgroud)
我找不到一个方法只跳过n迭代器中的-th元素.我是否需要自己实现某些功能,或者我找不到某个方法?
E_n*_*ate 10
这似乎是一个非常具体的操作.标准库或包中没有适配器itertools.
尽管如此,它仍然很容易实现.可以枚举每个元素并过滤索引:
iter.enumerate().filter(|&(i, _)| i != n).map(|(_, v)| v)
Run Code Online (Sandbox Code Playgroud)
我偏爱这个filter_map版本
fn main() {
let v = vec![1, 2, 3];
let n = 1;
let x: Vec<_> = v.into_iter()
.enumerate()
.filter_map(|(i, e)| if i != n { Some(e) } else { None })
.collect();
println!("{:?}", x);
}
Run Code Online (Sandbox Code Playgroud)