Bitterless Rust

変数と型

変数を作る

Rust で変数を作るには let を使う.

fn main() {
    let x = 42;
    println!("{}", x); // 42
}

println!{} は変数の値で置き換えられる.

変数はデフォルトで変更できない

fn main() {
    let x = 42;
    x = 100; // コンパイルエラー!
}

Rust の変数はデフォルトで変更不可.変更したいなら mut を付ける:

fn main() {
    let mut x = 42;
    x = 100; // OK
    println!("{}", x); // 100
}

語弊注意: 他の言語でいう「定数」とは微妙に違うけど,今は「mut がないと変更できない」とだけ覚えておこう.

数値型: 3 つだけ覚えろ

Rust には数値型がたくさんあるけど,とりあえずこの 3 つだけ覚えればいい:

何者か
i32 普通の整数 42, -1, 0
usize 配列のインデックスや長さに使う整数(0 以上) 0, 1, 100
f64 小数 3.14, -0.5, 1.0
fn main() {
    let age: i32 = 25;
    let index: usize = 0;
    let pi: f64 = 3.14;

    println!("age: {}, index: {}, pi: {}", age, index, pi);
}

語弊注意: 実際には i8, i16, i64, u8, u32, f32 など大量にある.でもこのチュートリアルでは全部無視.i32, usize, f64 で乗り切る.

型を書かなくても Rust が推論してくれることが多い:

fn main() {
    let x = 42;     // i32 と推論される
    let y = 3.14;   // f64 と推論される
}

基本的に型は省略できる.コンパイラが判断できないときだけ書けばいい.

型変換

型が違うと計算できない.as で変換する:

fn main() {
    let a: i32 = 10;
    let b: f64 = 3.14;

    let result = a as f64 + b;
    println!("{}", result); // 13.14

    let index = a as usize;
    println!("{}", index); // 10
}

bool

真偽値.truefalse

fn main() {
    let is_cool = true;
    let is_boring: bool = false;
    println!("{} {}", is_cool, is_boring);
}

char

1 文字.シングルクォートで囲む.

fn main() {
    let c = 'A';
    let emoji = '🦀';
    println!("{} {}", c, emoji);
}

あまり直接使うことはない.文字列(String)を使うことの方が多い.

String

文字列には 2 種類ある:

何者か
&str 文字列リテラル.コードに直接書いたやつ.固定.
String 動的な文字列.変更できる.
fn main() {
    let s1 = "hello";                   // &str(文字列リテラル)
    let s2 = String::from("hello");     // String
    let s3 = "hello".to_string();       // これも String

    println!("{} {} {}", s1, s2, s3);
}

語弊注意: &strString の違いについて正確に説明すると長くなるので省略.迷ったら String::from("...") を使おう.&str が必要な場面で String を渡しても大体うまくいく.

println! のフォーマット

fn main() {
    let name = "Rust";
    let version = 2021;

    // 基本
    println!("Hello, {}!", name);

    // 複数の値
    println!("{} edition {}", name, version);

    // デバッグ表示(後で構造体のときに便利)
    println!("{:?}", (1, 2, 3));
}

{} で普通の表示,{:?} でデバッグ表示.デバッグ表示は後の章で活躍する.


これで変数と型は OK.次は関数と制御フローを学ぼう.

本に戻る