loopable 0.1.0

Demo upload: do not use this crate
Documentation

mod gen_range;



fn main() {
    println!("Hello, loopable!");

    print_a(&vec!["hello".to_string(), "world".to_string()]);
    print_b(&["hello", "world"]);
    print_any(&vec!["hello".to_string(), "earth".to_string()]);
    print_any(&["hello", "jupiter"]);
    print_any(&vec!["hello", "mars"]);
    print_any(&["hello".to_string(), "venus".to_string()]);


    try_somethings();

}

// print for Vector of String
fn print_a(v:&Vec<String>) {

    println!("a");

    // use .into_iter() so can apply enumerate()
    //  otherwise could do -- for val in v
    for (i, val) in v.into_iter().enumerate() {
        println!("  {} == {}", i, val)
    }
}

// print for slice of str
fn print_b(v:&[&str]) {
    println!("b");
    for (i, val) in v.into_iter().enumerate() {
        println!("  {} == {}", i, val);
    }
}

// print for slice of str
fn print_c<I: Iterator<Item=String>>(v:I) {
    println!("c");
    for (i, val) in v.into_iter().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());
    }
}

fn try_somethings() {
    let bb = gen_range::GenRangeIterator::new(3, 9, 2);

    for mm in bb {
        println!("mm val {}", mm);
    }
}