1error[E0597]: `factorial` does not live long enough 2 --> $DIR/unboxed-closures-failed-recursive-fn-1.rs:15:17 3 | 4LL | let f = |x: u32| -> u32 { 5 | --------------- value captured here 6LL | let g = factorial.as_ref().unwrap(); 7 | ^^^^^^^^^ borrowed value does not live long enough 8... 9LL | } 10 | - 11 | | 12 | `factorial` dropped here while still borrowed 13 | borrow might be used here, when `factorial` is dropped and runs the destructor for type `Option<Box<dyn Fn(u32) -> u32>>` 14 15error[E0506]: cannot assign to `factorial` because it is borrowed 16 --> $DIR/unboxed-closures-failed-recursive-fn-1.rs:20:5 17 | 18LL | let f = |x: u32| -> u32 { 19 | --------------- borrow of `factorial` occurs here 20LL | let g = factorial.as_ref().unwrap(); 21 | --------- borrow occurs due to use in closure 22... 23LL | factorial = Some(Box::new(f)); 24 | ^^^^^^^^^ 25 | | 26 | assignment to borrowed `factorial` occurs here 27 | borrow later used here 28 29error[E0597]: `factorial` does not live long enough 30 --> $DIR/unboxed-closures-failed-recursive-fn-1.rs:28:17 31 | 32LL | let mut factorial: Option<Box<dyn Fn(u32) -> u32 + 'static>> = None; 33 | ----------------------------------------- type annotation requires that `factorial` is borrowed for `'static` 34LL | 35LL | let f = |x: u32| -> u32 { 36 | --------------- value captured here 37LL | let g = factorial.as_ref().unwrap(); 38 | ^^^^^^^^^ borrowed value does not live long enough 39... 40LL | } 41 | - `factorial` dropped here while still borrowed 42 43error[E0506]: cannot assign to `factorial` because it is borrowed 44 --> $DIR/unboxed-closures-failed-recursive-fn-1.rs:33:5 45 | 46LL | let mut factorial: Option<Box<dyn Fn(u32) -> u32 + 'static>> = None; 47 | ----------------------------------------- type annotation requires that `factorial` is borrowed for `'static` 48LL | 49LL | let f = |x: u32| -> u32 { 50 | --------------- borrow of `factorial` occurs here 51LL | let g = factorial.as_ref().unwrap(); 52 | --------- borrow occurs due to use in closure 53... 54LL | factorial = Some(Box::new(f)); 55 | ^^^^^^^^^ assignment to borrowed `factorial` occurs here 56 57error: aborting due to 4 previous errors 58 59Some errors have detailed explanations: E0506, E0597. 60For more information about an error, try `rustc --explain E0506`. 61