[1,2,2,3,4,4]
은 [2,4]
을 생성해야합니다. 다음 번호가 같은 번호 만 찾아야합니다. 다음 번호를 들여다보아야하므로 Peekable
iterator을 사용해 보았습니다. filter
을 작성했습니다.필터 클로저에서 Peekable 반복기는 어떻게 사용합니까?
fn main() {
let xs = [1, 2, 2, 3, 4, 4];
let mut iter = xs.iter().peekable();
let pairs = iter.filter(move |num| {
match iter.peek() {
Some(next) => num == next,
None => false,
}
});
for num in pairs {
println!("{}", num);
}
}
나는 오류 얻을 :
error[E0382]: capture of moved value: `iter`
--> src/main.rs:6:15
|
5 | let pairs = iter.filter(move |num| {
| ---- value moved here
6 | match iter.peek() {
| ^^^^ value captured here after move
|
= note: move occurs because `iter` has type `std::iter::Peekable<std::slice::Iter<'_, i32>>`, which does not implement the `Copy` trait
내가 iter
가 폐쇄 사용하고 있기 때문에이 생각을하지만, 그것을 빌려 않았으며, 그것을 복사 할 수 없습니다.
필터 내부의 반복기를 참조하려는이 문제를 어떻게 해결할 수 있습니까?
, ['.windows()'(https : //로 문서를. rust-lang.org/std/slice/struct.Windows.html)은 Sublice를 Window로 생성하는데, Generic은 아니지만'tuple_windows'와 상대적으로 비슷합니다. –