第3回 RUST・文法解説 変数編

今回は,Rustの変数定義について解説をしていきたいと思います.

変数名の定義

Rustの変数定義は,他のプログラミング言語の変数定義と少し違います.まずは,Rustの変数定義の仕方について見てみましょう.

let x: u32 = 10;

Rustには型推論の機能が備わっており,C言語のような「int,float,char」といった型を明示しなくとも変数を定義することができます.しかし,変数の定義は明示する必要があるため,「let」を用いた変数定義を記述する必要があります.

型宣言の方法

型宣言を行いたい場合,変数名の後に型を明記する必要があります.整数型の場合は以下の表の通りです.

ビット長型名値の範囲
8i8-128~127
8u80~255
16i16-32768~32767
16u160~65535
32i32-2^31~2^31-1
32u320~2^32-1
64i64-2^63~2^63-1
64u640~2^64-1
128i128-2^127~2^127-1
128u1280~2^128-1

使用するプロセッサによって,使用できるビット長を変更できるということですね.他の言語と比べて非常にメモリ管理が厳しい(難しい)です.しかし,一般的なCPUから8bitマイコンまでの幅広いプロセッサに対応させるには,重要な機能であると思います.
浮動小数点では「f32,f64」を使用することができます.一方でマイコンにて浮動小数点を扱う場合,浮動小数点演算機(FPU)の有無により動作しないため,注意が必要です.

配列型

配列の宣言の仕方と,標準出力の仕方は以下のようになります.「println!();」は標準出力関数です.C#のような書き方に少し似ているような気がしますね.Rustでは,変数名の後ろに[型;要素数]で配列の定義を行うようです.呼び出しの方法は,C言語などと同様に変数名[要素番号]で呼び出せます.

let array: [i8; 5] = [1, 2, 3, 4, 5];
println!("array = {:?}", array);
//array = [1, 2, 3, 4, 5]
println!("array[0] = {}", array[0]);
//array[0] = 1

タプル型

配列では変数内に同じ型しか扱えないが,タプル型を使用することで異なる型同士を配列のように使えるようになる.扱いは,構造体と似てるように感じるが,構造体のように新たに型を定義してから変数を宣言するのではなく,変数宣言時に複数の型の指定を行うことができる.要素の呼び出しには,変数名.要素番号を用いる.

//u32の型,i64の型,f32の型を同じ変数内yで定義
let y: (u32, i64, f32) = (123, -123456, 2.00);
//変数名.要素番号
println!("f32 = {}", y.2);
//f32 = 2.00

今回は変数宣言と数値の型指定,配列型,タプル型について説明しました.他言語にも変数のビット長の長さを指定できるものがあるが,Rustほど指定に厳しいのは面白いですね.
次回は,Rustの文字と文字列についてお話します.