Often I wish that:
enum Auth { Guest, User(u32), Bot(u32) }
was just syntactic sugar for struct Auth::Guest;
struct Auth::User(u32);
struct Auth::Bot(u32);
type Auth = Auth::Guest | Auth::User | Auth::Bot;
where `|` denotes an anonymous union. Using enums feel very clunky when you start needing to work with subsets of them.