With let-else, a refutable pattern can match and bind variables
in the surrounding scope like a normal let, or else diverge (e.g. break,
return, panic!) when the pattern doesn't match.
The scope of name bindings is the main thing that makes this different from
match or if let-else expressions. You could previously approximate these
patterns with an unfortunate bit of repetition and an outer let: