1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
pub trait MyTrait { type Item; fn next(&mut self) -> Option<Self::Item>; } pub struct Empty; impl MyTrait for Empty { type Item = (); fn next(&mut self) -> Option<()> { None } } pub struct Void; impl MyTrait for Void { type Item = (); fn next(&mut self) -> Option<()> { Some(()) } }