In Rust, those sorts of "do something with each element" methods are lazy and implemented on the Iterator trait rather than attaching eager methods to the collection themselves.
One of the downsides of this approach is that you need to call iter() or into_iter() in order to get an iterator over the collection, and that extra half-dozen characters can feel cumbersome.
However, because Rust's iterators are lazy, you can now deal with infinite iterators or data that is generated on the fly without needing to create arrays with each set of intermediate results (i.e. your memory usage becomes closer to O(1) instead of O(n * num_ops)).