0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Rustの変数の可変性(mutable)と定数(const)

Posted at

変数

Rustでは、変数は基本的に不変(immutable)です。Rustは安全性を重視しているため、変数はデフォルトで不変となっています。

したがって、一度宣言された変数の値を変更しようとすると、コンパイルエラーが発生します。

fn main() {
    let x = 5;
    println!("The value of x is: {x}");
    x = 6; // error!
    println!("The value of x is: {x}");
}

このコードをコンパイルしようとすると、エラーメッセージが表示されます。

このように、letで作成された変数はデフォルトで不変なので、変数の値を変更するにはmutキーワードを使って可変(mutable)であることを明示する必要があります。

fn main() {
    let mut x = 5;
    println!("The value of x is: {x}");
    x = 6;
    println!("The value of x is: {x}");
}

定数(Constants)

前述の変更できない変数と同様に、定数(constant)も不変です。しかし、変数とはいくつかの違いがあります。

まず、定数にはmutキーワードを使うことはできません。そして、必ずデータ型を指定する必要があります。

例として、次のように書くことができます。

const THREE_HOURS_IN_SECONDS: u32 = 60 * 60 * 3;

この定数は、プログラムが実行される間、常に変更できない値です。定数はコード全体で使用され、グローバルスコープでも定義できます。

シャドーイング(Shadowing)

Rustでは、変数をシャドーイングすることが可能です。これは、同じ名前の変数を再宣言して、まったく新しい変数として扱うことを意味します。

fn main() {
    let spaces = "   ";
    let spaces = spaces.len();
}

最初のspacesは文字列型ですが、シャドーイングによって2番目のspacesは整数型になります。

let mutとの違いは、let mutを使うと値を変更することはできますが、異なるデータ型に変更することはできないという点です。

let mut spaces = "   ";
spaces = spaces.len(); // error: mismatched types

シャドーイングは、変数の名前を再利用しつつ異なる型の値を持たせたいときに便利です。これにより、同じスコープ内で変数名を統一しつつも、柔軟に異なる値を扱うことができます。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?