pub trait VariantIterator: Sized { type Iterator: Iterator<Item = Self>; // Required method fn iter() -> Self::Iterator; }