2018-08-30 07:18:55 -05:00
|
|
|
//@ run-pass
|
2015-10-20 07:54:38 -05:00
|
|
|
// 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())
|
|
|
|
}
|