1

なぜvsnippet で長生きしないのか理解できません(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])
}
4

1 に答える 1