into_iter Example
This page was last reviewed on Jan 25, 2023.
Dot Net Perls
Into iter. Suppose we wish get an iterator, and then return the result of the iterator. The into_iter function is helpful here—it converts the collection into an iterator.
Avoid errors. With into_iter() we can fix errors involving FromIterator. If we want u8, we need into_iter() to keep u8 instead of references to u8 values.
Example code. Consider this example code—the get_flattened_vec function returns a Vector of u8. To do this, we must use into_iter() and then call collect() on that iterator.
Tip The iter() function will not work here, as it will have element references, not the original types.
Thus When returning from a function based on an iterator, we often need to use into_iter() not iter.
fn get_flattened_vec() -> Vec<u8> { // Create nested vectors. let vecs = vec![vec![], vec![]]; // Use into iter to convert to an iterator in place, then flatten and collect. vecs.into_iter().flatten().collect() } fn main() { let result = get_flattened_vec(); println!("{:?}", result); }
Error info. If we try to use iter() in the return statement, we will get a FromIterator error. It is important to consider the element types.
And If we need the original element type, we should use into_iter() instead of iter().
error[E0277]: a value of type Vec<u8> cannot be built from an iterator over elements of type &_ --> src/main.rs:5:27... = help: the trait FromIterator<&_> is not implemented for Vec<u8> = help: the trait FromIterator<T> is implemented for Vec<T> note: required by a bound in collect...
A summary. There is an important distinction between iter() and into_iter() in Rust. Iter will return references, while into_iter() will return the original types (which are needed for returns).
Dot Net Perls is a collection of tested code examples. Pages are continually updated to stay current, with code correctness a top priority.
Sam Allen is passionate about computer languages. In the past, his work has been recommended by Apple and Microsoft and he has studied computers at a selective university in the United States.
This page was last updated on Jan 25, 2023 (edit link).
© 2007-2024 Sam Allen.