In the following example, I have a function which takes an input-iterator to 
ints. It would be a loss of generality for that function to require its 
iterator argument to return its elements by pointer, because generator 
iterators like range(x, y) or random number generators etc. generally must 
return their elements by value. This makes it inconvenient to pass a vector 
iterator for example since it returns its elements by pointer. I wouldn't like 
to be writing values.iter().map(|a| *a) nor accept the performance hit it 
entails. I'd rather write something like values.value_iter().

fn print_these<T: Iterator<int>>(mut it: T) {
    for i in it {
        println!("{}", i);
    }
}

fn main() {
    let mut values = range(0, 3);
    print_these(values);

    let mut values = [3, 4, 5];
    print_these(values.iter().map(|a| *a));
}


_______________________________________________
Rust-dev mailing list
[email protected]
https://mail.mozilla.org/listinfo/rust-dev

Reply via email to