pub trait Variants<V> { fn variants() -> Iter<'static, V>; }
Iter defines types that have variants that can be iterated.