There are some seemingly reasonable things we might try to do with pattern matching that don't work as we might expect. We're going to take a look at those, and work out what they're actually doing and why Rust works that way.
Gotchas
Not all values can be matched against a literal pattern
In all of our examples so far, when we matched DemoStruct in a pattern, we matched probability to a variable or to _. That's because probability is a floating point number, which means that two values that are functionally identical might not compare as exactly equal.
If we try to use a floating-point literal in a pattern (in Rust 1.29), we see a warning like this:
It's just a warning but, as the warning says,...