// MIR for `num_to_digit` after PreCodegen fn num_to_digit(_1: char) -> u32 { debug num => _1; let mut _0: u32; let mut _5: std::option::Option; scope 1 (inlined char::methods::::is_digit) { debug self => _1; debug radix => const 8_u32; let _2: std::option::Option; let mut _3: &std::option::Option; scope 2 (inlined Option::::is_some) { debug self => _3; let mut _4: isize; } } scope 3 (inlined #[track_caller] Option::::unwrap) { debug self => _5; let mut _6: isize; let mut _7: !; scope 4 { debug val => _0; } } bb0: { StorageLive(_3); StorageLive(_2); _2 = char::methods::::to_digit(_1, const 8_u32) -> [return: bb1, unwind continue]; } bb1: { _3 = &_2; _4 = discriminant((*_3)); StorageDead(_3); StorageDead(_2); switchInt(move _4) -> [1: bb2, otherwise: bb7]; } bb2: { StorageLive(_5); _5 = char::methods::::to_digit(_1, const 8_u32) -> [return: bb3, unwind continue]; } bb3: { _6 = discriminant(_5); switchInt(move _6) -> [0: bb4, 1: bb5, otherwise: bb6]; } bb4: { _7 = core::panicking::panic(const "called `Option::unwrap()` on a `None` value") -> unwind continue; } bb5: { _0 = move ((_5 as Some).0: u32); StorageDead(_5); goto -> bb8; } bb6: { unreachable; } bb7: { _0 = const 0_u32; goto -> bb8; } bb8: { return; } }