map is lazy



examples/vectors/map1/src/main.rs
fn main() {
    let chars = vec!['a', 'b', 'c'];
    let mut c = 0;
    let pairs = chars.into_iter().map(|letter| { c += 1; (letter, c) });
    for pair in pairs {
        println!("{pair:?}");
    }
}

('a', 1)
('b', 2)
('c', 3)


examples/vectors/map2/src/main.rs
fn main() {
    let chars = vec!['a', 'b', 'c'];
    let mut c = 0;
    let pairs = chars.into_iter().rev().map(|letter| { c += 1; (letter, c) });
    for pair in pairs {
        println!("{pair:?}");
    }
}

('c', 1)
('b', 2)
('a', 3)


examples/vectors/map3/src/main.rs
// However this is also the same
fn main() {
    let chars = vec!['a', 'b', 'c'];
    let mut c = 0;
    let pairs = chars.into_iter().map(|letter| { c += 1; (letter, c) }).rev();
    for pair in pairs {
        println!("{pair:?}");
    }
}

('c', 1)
('b', 2)
('a', 3)