I guess that’s the reason currently Rustc has this problem. If you can define in a simple way a natural subset of the problem the compiler is able to face this problem, then it’s a good idea to introduce it into the compiler.
The “if” clauses of match arms can’t be understood by a simple compiler, then if they are present the compiler could bail out. If all the cases are integral numbers then the compiler can reason on the value, and perform the analysis reliably. This covers a significant percentage of low-level use cases (like the embedded focus of the current year), and it’s easy teach to Rust programmers “integral expressions without if”.
It’s a too much cheap and bug-prone solution, that’s OK for a language like C but not good enough for a modern reliable language as Rust.