Rust used to work that way, but it was changed primarily to visually distinguish between enumerated variant names and variable bindings in patterns. e.g. match foo { none =&gt; ... } and match foo { non =&gt; ... } having completely different interpretations was confusing.