メインコンテンツへスキップ
  1. レベル1から始めるRust冒険記/

変数の概要と宣言

Rust チュートリアル
目次
Rustチュートリアル - この記事は連載の一部です
パート 4: この記事

変数とは
#

プログラミングにおける「変数」とはデータを一時的に保存しておくための「箱」としてよく表現されます。

プログラムの実行中に数値や文字列などの値を一時的に記憶し、必要に応じてその値を取り出し使用する役割を担っています。

変数を活用することで、同じ値を繰り返し使用したり、状況に応じて動的に値を変更したりすることが可能になります。

一般的なプログラミング言語では、変数(箱)を作成する際に任意の名前を付けることができ、この名前を使って変数を呼び出す事ができます。

このように、変数に名前を付けて値を保持する仕組みそのものを、変数の定義(変数宣言)と呼びます。

変数はプログラミング言語ごとに、その性質や扱い方に違いがあります。

多くのプログラミング言語では、変数に値を入れたあと、何度でもその値を書き換えることができます。

一方、Rustでは、変数はデフォルトで不変として扱われます。

その為、一度値を入れると、その値を書き換えることはできません。

値を複数回変更する場合は変数宣言時に明示的に可変であることを宣言する必要があります。

これは、プログラムの安全性と予測可能性を高めるための設計となっております。

以下は主要プログラミング言語における変数のデフォルトの可変性を比較した表です。

言語 デフォルトの可変性
Rust 不変
Java 可変
C++ 可変
Python 可変
JavaScript 可変
Go 可変
Swift 可変
Kotlin 不変
Scala 不変
Haskell 不変

基本となる変数宣言
#

Rustにて変数を宣言するには let キーワードを使用します。

以下は、基本的な変数の宣言方法となります。

let 変数名 = ;

例えばxという名前で変数を作成し整数5を代入する場合は以下となります。

let x = 5;

この場合、変数はデフォルトで不変となるため、宣言後に値を変更することはできません。

例えば、以下のように一度宣言した変数に対して、後から別の値を代入する処理を実行してみます。

fn main() {
    let x = 5;
    println!("初期値: {}", x);
    x = 20;
    println!("再代入: {}", x);
}

このコードをrustcでコンパイルすると、次のようなE0384エラーが出力されます。

error[E0384]: cannot assign twice to immutable variable `x`
 --> main.rs:4:5
  |
2 |     let x = 5;
  |         - first assignment to `x`
3 |     println!("初期値: {}", x);
4 |     x = 20;
  |     ^^^^^^ cannot assign twice to immutable variable
  |
help: consider making this binding mutable
  |
2 |     let mut x = 5;
  |         +++

error: aborting due to 1 previous error

For more information about this error, try `rustc --explain E0384`.

これは不変である変数に対して値の再代入を行おうとしているために発生したエラーとなります。

より詳しい情報は、公式ドキュメントのエラー解説ページをご確認お願いいたします。

公式ドキュメント

この問題を解決するには変数宣言時に明示的に可変である事を記述する必要があります。

具体的な方法は次のセクションにて解説いたします。

可変として変数を宣言する
#

値を後から変更したい場合は、letに加えてmutキーワードを使用します。

以下は、可変として変数を宣言する方法となります。

let mut 変数名 = ;

例えばxという名前で変数を作成し可変として宣言する場合は以下となります。

let mut x = 5;

前のセクションでエラーとなったコードに対して、以下のようにmutキーワードを追加します。

fn main() {
    let mut x = 5;
    println!("初期値: {}", x);
    x = 20;
    println!("再代入: {}", x);
}

次に、修正したファイルをコンパイルして実行すると、以下のような結果が得られます。

$ rustc  main.rs
$ ./main
初期値: 5
再代入: 20

この結果から、mutを指定することで変数が可変となり、初期値として代入した 5を、後から20に変更できるようになったことが分かります。

今回紹介したコードは下記にて実行可能です。

Rustチュートリアル - この記事は連載の一部です
パート 4: この記事

関連記事

LinuxでRust環境構築を行う方法
Rust チュートリアル
「Hello, World!」の出力
Rust チュートリアル
最近話題のRustとは何か?
Rust チュートリアル