なぜv
snippet で長生きしないのか理解できません(2)
が、それ以外の場合は機能します。clone
の変数が必要ない(1)
のに、2 番目のケースを機能させるためにクローンを作成する必要があるのはなぜですか?
fn main() {
// (1)
let v = make_vec().unwrap();
let m = v.last();
// (2) v doesn't live long enough!
let m = make_vec()
.and_then(|v| v.last());
// (3) Fixed!
let m = make_vec()
.and_then(|v| v.last().cloned());
}
fn make_vec() -> Option<Vec<u32>> {
Some(vec![1, 2, 3])
}