This comes up quite a bit in functional languages in the ML family (which all have ADTs like rust). Bob Harper's blog had a post about this called "boolean blindness" (which seems to be locked now?), but you can find a summary of it here: <a href="https://shreevatsa.wordpress.com/2015/01/31/boolean-blindness/" rel="nofollow">https://shreevatsa.wordpress.com/2015/01/31/boolean-blindnes...</a>
This is increasingly the standard model in large C and C++ projects, alongside the warning flags for incomplete switches and fall through you get fairly close to this.<p>I feel the biggest problem with Enums in c/c++ is the default implicit bool and int conversions. They are the enemy.