Perhaps this is a terrible idea, has already been discussed, or is already possible in ways I don’t know, but what if it were possible to implement a trait for all variants of an enum? Something like this:
enum Thing {
A,
B
}
trait Foo {
fn bar() -> usize;
}
impl Foo for Thing::A {
fn bar() -> usize {
1
}
}
impl Foo for Thing::B {
fn bar() -> usize {
2
}
}
Which would act as sugar for:
impl Thing {
pub fn bar(self) -> usize {
match self {
Thing::A => 1,
Thing::B => 2
}
}
}