Often it makes sense to have a separate enum that contains the same variants, but without their associated data. This is often useful for error types, but also useful for a lot of other situations. So the derive would create a second type with the exact same variations named <EnumName>Kind deriving PartialEq, Eq, Debug and potentially other traits. And the original enum would get a method fn kind(&self) -> <EnumName>Kind that returns that kind.
Often it makes sense to have a separate enum that contains the same variants, but without their associated data. This is often useful for error types, but also useful for a lot of other situations. So the derive would create a second type with the exact same variations named
<EnumName>Kind
derivingPartialEq, Eq, Debug
and potentially other traits. And the original enum would get a methodfn kind(&self) -> <EnumName>Kind
that returns that kind.