これがWeb3の件、今さら知ったのだけど、これが公開終了とか回収されるんなら名前を言ってはいけないあの人の目覚めた本も回収されてほしかった。あれは関数型プログラマに多くの誤解を与えた。
名前を言ってはいけないあの人の目覚めた本は、もちろん熟練の関数型プログラマからもツッコミが入り、ラノベ勢からもツッコミが入り、哲学者からもツッコミが入った伝説の作品でございます。
>RT 知らなかった。loop式で囲ったときのbreak;でもそうなるな。ということは、break文やreturn文のある式は!型としての役割を果たしているということになるのかな(もしそうなのであれば! <: usizeなので理論上は型エラーにならない)。
戻り値が!型であるf()をi32型の値とかに代入できるから!型はすべての型の部分型であることは間違いないな。つまり、break文やreturn文のある式は(breakが式の結果となっている場合を除き)依然としてusize型であるということだ。
まぁ結論としては「型を揃えなくていい」んじゃなくて、{ break; }や{ return; }は別の腕の結果と同じ型だよってことですよ。
訂正すると、別の腕は普通の整数リテラルだからmatch式の結果の型はi32型ですね。すみません。