type or paste code here
fn main() {
let v = vec![0usize];
type T2 = Box<dyn Fn()>;
let f = || -> T2 {
Box::new(|| {
let j2 = &v;
})
}; //this doesn't
let f2 = || -> Box<dyn Fn()> {
Box::new(|| {
let j2 = &v;
})
}; //this works
}
0 references | βΆ Run | β Debug
fn main() {
σ°΅ β let v = vec![0usize]; β binding `v` declared here
β type T2 = Box<dyn Fn()>;
ο± β let f = || -> T2 { β β β unused variable: `f`
σ°΅ β β Box::new(|| { β returning this value requires that `v` is borrowed for `'static`
ο β β β let j2 = &v; β β β `v` does not live long enough borrowed value does not live long enough
β β })
β }; //this doesn't
ο± β let f2 = || -> Box<dyn Fn()> { β β unused variable: `f2`
β β Box::new(|| {
ο± β β β let j2 = &v; β β unused variable: `j2` `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
β β })
β }; //this works
σ°΅ } β `v` dropped here while still borrowed