fn collec_into_vector<I: Iterator>(iter: I) -> Vec<I::Item> {
    let mut results = Vec::new();
    for value in iter {
        results.push(value);
    }
    results
}
// Lo primero que vemos es que tiene un type asociado para el item(`type Item`). Cada type que
// implemente Iterator debe especificar que tipo de item produce
// Lo segundo es que la funcion next utiliza este type asociado en su valor de retorno
// Podemos implementar funciones genericas que contengan este type como parametro y que utilicen
// los types asociados
Lo primero que vemos es que tiene un type asociado para el item(`type Item`). Cada type que
implemente Iterator debe especificar que tipo de item produce
Lo segundo es que la funcion next utiliza este type asociado en su valor de retorno
Podemos implementar funciones genericas que contengan este type como parametro y que utilicen
los types asociados
Lo primero que vemos es que tiene un type asociado para el item ( ` type Item ` ) . Cada type que implemente Iterator debe especificar que tipo de item produce Lo segundo es que la funcion next utiliza este type asociado en su valor de retorno Podemos implementar funciones genericas que contengan este type como parametro y que utilicen los types asociados
fn collec_into_vector<I: Iterator>(iter: I) -> Vec<I::Item> {
    let mut results = Vec::new();
    for value in iter {
        results.push(value);
    }
    results
}
fn collec_into_vector < I : Iterator > ( iter : I ) -> Vec < I :: Item > { let mut results = Vec :: new ( ) ; for value in iter { results . push ( value ) ; } results }
Lo primero que vemos es que tiene un type asociado para el item(`type Item`).
Lo primero que vemos es que tiene un type asociado para el item ( ` type Item ` ) .
iter
I
iter
I