d2_iterators_in_rust 0.1.0

D2 Iterators
Documentation
fn main() {
    print_a(&vec!["hello".to_string(), "world".to_string()]);
    print_b(&["hello", "world"]);
    print_c(vec!["hello".to_string(), "world".to_string()].into_iter());
    print_any(vec!["hello".to_string(), "world".to_string()]);
    print_any((&["hello", "world"]).into_iter())
}

fn print_a(v: &Vec<String>) {
    println!("a");

    for (i, val) in v.into_iter().enumerate() {
        println!("{} = {}", i, val);
    }
}

fn print_b(v: &[&str]) {
    println!("b");

    for (i, val) in v.into_iter().enumerate() {
        println!("{} = {}", i, val);
    }
}

fn print_c<I: Iterator<Item = String>>(v: I) {
    println!("c");
    for (i, val) in v.enumerate() {
        println!("{} = {}", i, val);
    }
}

fn print_any<S: AsRef<str>, I: IntoIterator<Item = S>>(v: I) {
    println!("any");
    for (i, val) in v.into_iter().enumerate() {
        println!("{} = {}", i, val.as_ref());
    }
}