κeenです。 プログラムで扱うものに状態、操作によって変わるものってありますよね。それを扱うのは普通なら難儀するのですが、Rustだと上手く扱う方法があるよって話です。 本質的には同じ話を Rustで強めに型をつけるPart 2: Type Level State Machine | κeenのHappy Hacκing Blogでもしてるんですが、具体例で趣味に走ってしまったのでもうちょっと分かりやすい例を挙げます。 例にVecのsortをとってみましょう。 // vはsortされていない let mut v = [4, -5, 1, -3, 2]; v.sort(); // vはsortされている assert_eq!(v, [-5, -3, 1, 2, 4]); sort はメモリ効率の観点からin-placeなメソッド、つまり self を受け取って () を返す関数です。つまり

