Почему этот код компилируется?
fn get_iter() -> impl Iterator<Item = i32> {
    [1, 2, 3].iter().map(|&i| i)
}
fn main() {
    let _it = get_iter();
}
  [1, 2, 3] - локальная переменная, и iter() занимает ее. Этот код не должен компилироваться, потому что возвращаемое значение содержит ссылку на локальную переменную.