Rustの個人的に気に入っているポイントの解説
BRANK
内容はn番煎じだけど、自分でまとめたほうが便利なので。変数がデフォルトで不変変数がデフォルトで不変であり、不変のまま変更しようとするとコンパイルエラー発生。fn foo(){ let str = "abc"; str = "def"; // 不変な変数を変更しようとしているためコンパイルエラー println!("{}", str); } mutをつけると可変になり、コンパイルが通る。fn foo(){ let mut str = "abc"; str = "def"; // 可変なので正常に動作する。("abc"で初期化したの無駄だぞ、という警告は出る) println!("{}", str); // def } 可変であってほしい変数より不変であってほしい変数のほうが使用頻度が高いため不変がデフォルトになっているとのこと。可変でも、大抵は初期化の時に変更する必要があるだけで、初期化以降は不変であってほしいことが多いので、次の式指向が役に立つ。本当に不変変数の変更を禁止できるとバグが減り、認知負荷が下がり処理が分かりやすくなるというメリットがある。他のメジャーな言語だとfinalやconstをつけても再代入しか防がず、内部要素は変更できる、という事例がある。JavaだとUnmodifiableListがあるが、変更してもコンパイルエラーでは…