- // MIR for `identity` before SeparateConstSwitch + // MIR for `identity` after SeparateConstSwitch fn identity(_1: Result) -> Result { debug x => _1; let mut _0: std::result::Result; let mut _2: i32; let mut _3: std::ops::ControlFlow, i32>; let mut _4: std::result::Result; let mut _5: isize; let _6: std::result::Result; let mut _7: std::result::Result; let _8: i32; scope 1 { debug residual => _6; scope 2 { scope 8 (inlined #[track_caller] as FromResidual>>::from_residual) { debug residual => _6; let _13: i32; let mut _14: i32; scope 9 { debug e => _13; scope 10 (inlined >::from) { debug t => _13; } } } } } scope 3 { debug val => _8; scope 4 { } } scope 5 (inlined as Try>::branch) { debug self => _1; let mut _9: isize; let _10: i32; let _11: i32; let mut _12: std::result::Result; scope 6 { debug v => _10; } scope 7 { debug e => _11; } } bb0: { StorageLive(_3); StorageLive(_9); StorageLive(_10); StorageLive(_11); _9 = discriminant(_1); switchInt(move _9) -> [0: bb7, 1: bb5, otherwise: bb6]; } bb1: { StorageDead(_11); StorageDead(_10); StorageDead(_9); _5 = discriminant(_3); switchInt(move _5) -> [0: bb2, 1: bb4, otherwise: bb3]; } bb2: { _8 = ((_3 as Continue).0: i32); _0 = Result::::Ok(_8); StorageDead(_3); return; } bb3: { unreachable; } bb4: { _6 = ((_3 as Break).0: std::result::Result); _13 = ((_6 as Err).0: i32); _0 = Result::::Err(move _13); StorageDead(_3); return; } bb5: { _11 = ((_1 as Err).0: i32); StorageLive(_12); _12 = Result::::Err(move _11); _3 = ControlFlow::, i32>::Break(move _12); StorageDead(_12); goto -> bb1; } bb6: { unreachable; } bb7: { _10 = ((_1 as Ok).0: i32); _3 = ControlFlow::, i32>::Continue(move _10); goto -> bb1; } }