- // MIR for `main` before Derefer + // MIR for `main` after Derefer fn main() -> () { let mut _0: (); let _1: std::boxed::Box>; let mut _2: std::boxed::Box; bb0: { StorageLive(_1); StorageLive(_2); _2 = f() -> [return: bb1, unwind continue]; } bb1: { _1 = Box::>::new(move _2) -> [return: bb2, unwind: bb4]; } bb2: { StorageDead(_2); drop(_1) -> [return: bb3, unwind continue]; } bb3: { StorageDead(_1); _0 = const (); return; } bb4 (cleanup): { drop(_2) -> [return: bb5, unwind terminate (panic in a destructor during cleanup)]; } bb5 (cleanup): { resume; } }