iterator
#iterator
https://doc.rust-lang.org/std/iter/index.html
example
code:rust
let mut v1: Vec<i32> = Vec::new();
v1.push(1);
v1.push(2);
let v2: Vec<i32> = v1.iter()
.map(|x| x + 1)
.filter(|i| i == &2)
.collect();
assert_eq!(v1, vec!1, 2);
assert_eq!(v2, vec!2);
はまりどころ
全般
取得する値は、基本的に型を記述しなければいけない
code:rust
let mut v1: Vec<i32> = Vec::new();
v1.push(1);
v1.push(2);
// NG
let v2 = v1.into_iter()
.filter(|i| i == &2)
.collect();
// OK
let v2: Vec<i32> = v1.into_iter()
.filter(|i| i == &2)
.collect();
filter
フィルターの場合所有権を移さないとfilterを使用できない
code:rust
// NG
let v2 = v1.iter()
.filter(|i| i == &2)
.collect();
// OK
let v2: Vec<i32> = v1.into_iter()
.filter(|i| i == &2)
.collect();