If I have an enum with a set of values, is there a way I could create a second enum with the same variants plus some more?
// From this
enum Base {
Alpha,
Beta(usize),
}
// To this, but without copy & paste
enum Extended {
Alpha,
Beta(usize),
Gamma,
}
An enum can't be directly extended, but you use the same composition trick one would use with structs (that is, with a struct, one would have a field storing an instance of the 'parent').
enum Extended {
Base(Base),
Gamma
}
If you wish to handle each case individually, this is then used like
match some_extended {
Base(Alpha) => ...,
Base(Beta(x)) => ...,
Gamma => ...
}
but you can also share/re-use code from the "parent"
match some_extended {
Base(base) => base.do_something(),
Gamma => ...,
}