43
32

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Rustのコードを最低限理解するための例

Last updated at Posted at 2015-01-08

他の言語(C++など)を既にやったことがある人向け

基本型

  • bool(true/false)
  • i8(8bit integer), i16, i32, i64
  • u8(8bit unsigned integer), u16, u32, u64
  • f32(32bit-floating point), f64
  • isize, usize(そのマシンのポインタサイズと同じサイズの整数型)
true, false, 10i32, 100us, 1.234f32
  • 固定長配列: array, tuple
[1i32, 2i32, 3i32]  # array: 同じ型
(1i32, "hello", true)  # tuple: 型は自由
  • &[T]: slice
  • &str:文字列リテラル=文字配列のスライス
"UTF-8の文字列のみOK"

リテラルの書き方

コメント

// 一行
/* /* */ */  // ネストOKなブロックコメント

bool

true, false

文字列

'あ'  // UTF-8一文字: char型
"文字列\u3000\U30000000"  // UTF-8文字列: &str型
r"raw文字列"
r#"ダブルクォート(")がそのまま書けるraw文字列"#
r####"無限に#記号を増やせる"####

バイト配列

b'a`  // 1バイト: u8型
b"abc\x20"  // バイト配列: &[u8]型
br"rawバイト列"

数値型

数字のリテラルの末尾に、型を付記して宣言する。

// 数値型にはアンダースコアを自由に付けて見やすく出来る
100_000_000i32  // 数値型(32bit integer)
0xffffis, 0o77us, 0b10101010u64, 1.2e3f32  // 16進, 8進, 2進, 32bit浮動少数

isize, usizeはそれぞれis, usと省略が可能
型を省略した場合、整数ならi32, 浮動小数ならf64になる模様

println!("{:?}, {:?}", 1, 1.2);  // => 1i32, 1.2f64

関数, struct, enum, module, trait定義

// module: namespaceみたいな
mod name {
}

// fn 関数名(引数: 型) -> 返り値 { 中身 }
fn function(x: i32) -> bool {
    if x == 1 { true } else { false }
}
// struct { メンバ, メンバ, }
struct Point {
    x: i32,
    y: i32,
}
// enum { メンバ, メンバ, }
enum Words {
    Hello,
    World,
}
// tuple struct
struct IntArray2(i32, i32);

// enum with value
enum WithInt {
    Value(i32),
    Nothing,
}

// trait: インターフェイスみたいな実装制約
trait Trait {
    fn func(&self) -> bool;
}

変数バインディング(宣言)

// let 変数名: 型 = ...;
let x: i32 = 1i32;
let y: &str = "Hello";
// mutキーワードで変更可能(非const)
let mut z: usize = 10us;
z = 5us;
// 型は推論されるので適宜省略可能
let a = 1.0f32;

制御

// if
let x = 2i32;
if x == 1 {
    // ...
} else if x == 2 {
    // ...
} else {
    // ...
}
// ifは{}内でセミコロンを付けなければその条件に応じた値を返す
let y = if x == 1 { true } else { false };

// for, while, loop: break, returnはC/C++と同じ様に使える
for x in range(0, 10) {...}
while condition == true {...}
loop {/* 無限ループ */}
43
32
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
43
32

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?