assert_eq!(v2, vec![&String::from("Foo")]);
&String
にしないといけないのが釈然としない。filterの後にチェーンさせるのが大変になる。map
だと不要。もしくはinto_iter
を使うか。
let v1:Vec<String> = vec![String::from("Hoge"), String::from("Fuga"), String::from("Foo")];
let v2:Vec<&String> = v1.iter().filter(|x|{x.len() == 3}).collect();
assert_eq!(v1, vec![String::from("Hoge"), String::from("Fuga"), String::from("Foo")]);
assert_eq!(v2, vec![&String::from("Foo")]);