Rust の不変変数と定数変数の違いは何ですか? 質問する

Rust の不変変数と定数変数の違いは何ですか? 質問する

変数が を使用して明示的に可変として宣言されていない場合mut、変数は不変 (宣言後に変更できない) になることを学びました。では、なぜconstRust には キーワードがあるのでしょうか? これらは同じではないのでしょうか? そうでない場合、どう違うのでしょうか?

ベストアンサー1

constRustでは、絶え間ないそして、コンパイル時の評価次のように表示されます。

  • 定数を宣言する場合:const FOO: usize = 3;
  • コンパイル時に評価可能な関数を宣言する場合:const fn foo() -> &'static str

これらの種類の値は、汎用パラメータとして使用できます。[u8; FOO]現時点では、これは配列サイズに制限されていますが、将来的にはさらに拡張することを検討しており、計画しており、期待されています。

対照的に、letバインディングは実行時に計算された値に関するものです。

mut可変性の概念はよく知られているため使用されているにもかかわらず、Rust は実際にはここにあります。 および&T&mut T、可変性ではなくエイリアスに関するものです。

  • &T: 共有参照
  • &mut T: 一意の参照

最も注目すべきは、いくつかのタイプでは内部の可変性また、&T(共有参照)を介して変更できます: Cell、、など。RefCellMutex


注:および を生のポインター (および) と共に使用する別の方法がありますが、mutここでは説明しません。const*mut T*const T

おすすめ記事