#![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 Extend for MyCollection { fn extend>(&mut self, iter: T) { for elem in iter { self.add(elem); } } } fn main() { let mut c = MyCollection::new(); c.add(5); c.add(6); c.add(7); c.extend(vec![1, 2, 3]); assert_eq!("MyCollection([5, 6, 7, 1, 2, 3])", format!("{c:?}")); }