// MIR for `mapped` after PreCodegen fn mapped(_1: impl Iterator, _2: impl Fn(T) -> U) -> () { debug iter => _1; debug f => _2; let mut _0: (); let mut _3: std::iter::Map, impl Fn(T) -> U>; let mut _4: std::iter::Map, impl Fn(T) -> U>; let mut _5: &mut std::iter::Map, impl Fn(T) -> U>; let mut _6: std::option::Option; let mut _7: isize; let _9: (); scope 1 { debug iter => _4; let _8: U; scope 2 { debug x => _8; } } scope 3 (inlined , impl Fn(T) -> U> as IntoIterator>::into_iter) { debug self => _3; } bb0: { _3 = as Iterator>::map:: U>(move _1, move _2) -> [return: bb1, unwind continue]; } bb1: { StorageLive(_4); _4 = _3; goto -> bb2; } bb2: { StorageLive(_6); StorageLive(_5); _5 = &mut _4; _6 = , impl Fn(T) -> U> as Iterator>::next(move _5) -> [return: bb3, unwind: bb9]; } bb3: { StorageDead(_5); _7 = discriminant(_6); switchInt(move _7) -> [0: bb4, 1: bb6, otherwise: bb8]; } bb4: { StorageDead(_6); drop(_4) -> [return: bb5, unwind continue]; } bb5: { StorageDead(_4); return; } bb6: { _8 = move ((_6 as Some).0: U); _9 = opaque::(move _8) -> [return: bb7, unwind: bb9]; } bb7: { StorageDead(_6); goto -> bb2; } bb8: { unreachable; } bb9 (cleanup): { drop(_4) -> [return: bb10, unwind terminate(cleanup)]; } bb10 (cleanup): { resume; } }