//@ run-pass | |
// This test ensures that vec.into_iter does not overconstrain element lifetime. | |
pub fn main() { | |
original_report(); | |
revision_1(); | |
revision_2(); | |
} | |
fn original_report() { | |
drop(vec![&()].into_iter()) | |
} | |
fn revision_1() { | |
// below is what above `vec!` expands into at time of this writing. | |
drop(<[_]>::into_vec(::std::boxed::Box::new([&()])).into_iter()) | |
} | |
fn revision_2() { | |
drop((match (Vec::new(), &()) { (mut v, b) => { v.push(b); v } }).into_iter()) | |
} |