For loops only work with objects that implement the Iterator
<http://doc.rust-lang.org/std/iter/trait.Iterator.html> trait.

An array in itself is not an iterator (it doesn't have a "state" as to
which element it currently is on), however .iter() gives you an Iter<T>
<http://doc.rust-lang.org/std/slice/struct.Iter.html>, which is iterable
and has a "state".

-Manish Goregaokar

On Thu, Jan 1, 2015 at 4:19 PM, Pim Schellart <p.schell...@gmail.com> wrote:

> Dear Rust developers,
>
> I have just started using rust so this is obviously a stupid question but
> I was wondering why .iter() is needed when looping over the elements of an
> array? In the following example:
>
>     let a = [1i, 2i, 3i];
>
>     for e in a.iter() {
>         println!("{}", e);
>     }
>
> why can’t one simply write:
>
>     let a = [1i, 2i, 3i];
>
>     for e in a {
>         println!("{}", e);
>     }
>
> and have the compiler figure out that ‘a’ has ‘.iter()’ and use it? The
> form without .iter() just feels more natural to me in this case.
> Please feel free to tell me to RTFM or ask this question elsewhere.
>
> Regards,
>
> Pim
> _______________________________________________
> Rust-dev mailing list
> Rust-dev@mozilla.org
> https://mail.mozilla.org/listinfo/rust-dev
>
_______________________________________________
Rust-dev mailing list
Rust-dev@mozilla.org
https://mail.mozilla.org/listinfo/rust-dev

Reply via email to