Describing behavior differences in Rust with enums
Rust’s first-class support for enum types lets us use them to describe
behavior differences for similar types. By using associated types with trait
bounds, and uninstantiable types, we can reduce code duplication without
compromising performance.
