#![allow(dead_code, deprecated, unused_variables, unused_mut)] #[derive(Debug)] struct MyCollection(Vec); impl MyCollection { fn new() -> MyCollection { MyCollection(Vec::new()) } fn add(&mut self, elem: i32) { self.0.push(elem); } } impl FromIterator for MyCollection { fn from_iter>(iter: I) -> Self { let mut c = MyCollection::new(); for i in iter { c.add(i); } c } } fn main() { let iter = (0..5).into_iter(); let c = MyCollection::from_iter(iter); assert_eq!(c.0, vec![0, 1, 2, 3, 4]); let iter = (0..5).into_iter(); let c: MyCollection = iter.collect(); assert_eq!(c.0, vec![0, 1, 2, 3, 4]); }