>>159
多くのところで言語に関わらずでifネストを深くせずに早期離脱をすることが好まれる
Rustではif let時にそれができなかったためlet else導入まではこうなってしまっていた
let foo = if let Some(foo) {
 foo
} else {
 (早期離脱前の処理があればここ)
 早期離脱
}
これはfooが三重に冗長で不格好
そのためlet else以前は早期離脱をあきらめる本末転倒なことも起きていた

具体的にlet elseが適している早期離脱は「範囲」が広い
・break
・continue
・エラー以外のreturn
・早期離脱前の処理があるエラーreturn

>>162
?が使える「範囲」はlet else より狭く早期離脱前の処理がないエラーreturnのみ
もちろん「量」は多いけどね