Rust を書こう!(1)


Rustを書こう!(1)

概要

変数宣言と制御構文を記載しています。
他の言語(CとかC++とかPython)をさわったことがある人向けの荒い内容です...
環境設定については過去記事を参照ください。

Rustでの変数宣言(可変性)

Rustでの変数宣言は以下のようにして行います。

let /*可変性*/ /*変数名*/ : /*型*/ = /*値*/;

可変性についてですが、/*可変性*/のところに何も記載しなければRustではすべての変数が宣言時にinmutableで宣言されます。(宣言時に代入をするとそのあとで書き換えができない)そのため以下のようなコードはコンパイル時にエラーを吐きます。

example1.rs
fn main() {
    let num = 1;
    num = 209; // これができない
}

変数の書き換えを行いたい場合は宣言時にmutという予約後を使用する必要があります。以下に例を示します。

example2.rs
fn main(){
  let mut num = 1;
  num = 100;
}

また、Rustでは何度も同じ変数名を持った変数を宣言することができ、example1.rsを書き換えた

example3.rs
fn main() {
    let num = 1;
    let num = 209;
}

は問題なくコンパイルできます。ただ、2回目の宣言時に1回目に宣言されたnumはメモリが解放されるのでアクセスができません。

Rustにおけるデータ型

Rustにおけるデータ型は以下のようになっています

予約語 データ型
i8,i16,i32,i64,i128 符号付き整数(数字はBit数)
u8,u16,u32,u64,u128 符号なし整数(数字はBit数)
f32,f64 浮動小数点数
bool bool値(true,false)
char 文字
str 文字列
isze,usize 配列などでのメモリアクセス用の型

以下に例を示します。

example4.rs
fn main(){
    let num1 : u32 = 100;
    //ただの数字の場合勝手にi32になるので
    let num2 = 100;// この場合はi32です。
}

※Rustではコンパイラがデータ型を自動で推測してくれるので明記する必要はあまりないです。

制御構文

条件分岐

Rustでの条件分岐はif /*条件*/ {/*処理1*/} else {/*処理2*/}で行います。
以下に偶数と奇数の判定をするサンプルコードを記載します。

exapmle5.rs
fn main(){
    let num = 100;
    if num % 2 == 1{
        println!("odd");
    }else{
        println!("even");
    }
}

C言語のようにifの後に()を入れる必要はないです。

ループ

Rustの繰り返し構文は3つあります。loop{} while/*条件*/{/*処理*/} forの3つです。以下に0〜9までの数字を表示するコードを示します。

example6.rs
fn main() {

    for i in 0..10{
        print!("{}",i);
    }
    println!();// 改行

    let mut i = 0;
    while i < 10 {
        print!("{}",i);
        i += 1;
    }
    println!(); // 改行

    i = 0;
    loop {
        print!("{}",i);
        i += 1;
        if i == 10{
            break;
        }
    }
}

breakを使うことによってループから抜け出します。for文についてはiteratorと併用ができるのでiteratorの紹介をする際にもう一度詳しく紹介します。

次回はRustでのタプルや配列、標準出力、借用を紹介します。