The code below (and in Playground) let v = vec![3i32, 2i32].iter(); println!("{}", v.sum::()); Errors due to a temporary being dropped. I expected this would convert to something close to (but the last example contradicts it): let v = { let _tmp =vec![3i32, 2i32]; <[_]>::iter(&_tmp[..]) }; // underlying data is dropped after we exit block expression But if that were the case, should happen the same here? let f = move |a| a; let v = f(&6); println!("{v}") But t...