Rust: I have listed above listed, and then some more features for those listed … it's getting hard to handle

So I have an enumeration involving an enumeration, but I have another enumeration talking about what that enumeration is.

Which makes it a confusing English phrase, so here's an example.

I have an enumeration:

enumeration Example {
To something),
B {construction field: K},
C (Gamma, Third),
D (Insert something)
}

What is good and excellent, but I needed another way to categorize them and compare the categories without matching. I also needed to pass along Examples without fields, and then I realized that I should probably use an enumeration that described my enumeration, so I ended up doing this:

#[derive(Eq, PartialEq, YouGetThePoint)]
enumeration ExampleCategory {
A B C D
}

So, because I want to go easily from Example to ExampleCategory:

impl from for ExampleCategory {
fn of (e: Example) {
match
Example :: A (_) => ExampleCategory :: A
Example :: B {..} => ExampleCategory :: B
Example :: C (_, _, _) => ExampleCategory :: C,
Example :: D (_) => ExampleCategory :: D
}
}
}

So now, every time I need to add a For example, I end up needing to change the code in three different places, and if I want a new feature ... etc. Also, if theSomethinginExample: A` was another type of this enumeration. * shudders

I think I explained why this is probably a bad idea.

I'm 90% sure there's a better way to do this (that does not involve macros, since I do not even know how I would do it). How would this change to be DRY / better? Since the Example enumeration is actually part of a larger problem.