【MacでRust入門】Rust日本語版チュートリアルの要点まとめ ~ 第6回 変数のデータ型

2022-08-18
Main Image

目次

こんにちは。

最近流行りのRustを初めてみよう!ということでチュートリアルを読み始めました。

内容を忘れないように & チュートリアルがTL;DRな方向けにブログ記事に要点をまとめていこうと思います。

前回はRustの変数と定数の特徴についてまとめました。

今回は第6回です。Rustの変数がとるデータ型について要点をまとめます。

Rustのデータ型

Rustは静的型付け言語で、コンパイル時に変数の型がわかっている必要があります。通常、変数の型は推論されますが、複数取りうる場合はエラーになります。

エラーを回避する方法は型注釈をつけることです。第4回の記事にその例があります。

Rustのスカラー型

スカラーは単独の値のことで、整数・浮動小数点数、論理値、文字の4種類があります。

整数型

サイズと符号有無で10のバリアント(種類)があります。

サイズ(bit) 符号付き 符号なし
8bit i8 u8
16bit i16 u16
32bit i32 u32
64bit i64 u64
arch isize usize

たとえばu8は8bitなので256通り、0~255まで扱えます。i8は符号がつくので-128から127まで扱えます。isizeusizeは動作するOSのビット数によって32ビットか64ビットか決まります。

どれにすべきか迷ったら、とりあえず基準のi32にしておけばOK。

また、整数リテラル(「見たままの値」という意味)は以下の記述方法があります。

リテラル
10進数 98_222
16進数 0xff
8進数 0o77
2進数 0b1111_0000
バイト(u8のみ) b'A'

頭の0xなどで何進数か決めて、_は桁数が多い場合に見た目の区切りに使えます。

Rustの浮動小数点型

Rustの浮動小数点数はビット違いでf32f64の2種類あり、基準はf64です。

let x = 2.0; // f64 こっちが基準
let y: f32 = 3.0; // f32

Rustの数値演算

基本的なものは大体の他の言語と同様。

// 足し算
let sum = 5 + 10;

// 引き算
let difference = 95.5 - 4.3;

// 掛け算
let product = 4 * 30;

// 割り算
let quotient = 56.7 / 32.2;
let floored = 2 / 4; // 結果は0。

// 余り
let remainder = 43 % 5;

2 / 4の結果を0ではなく0.5にするには、2.0 / 4.0にする。

【参考】他の演算子一覧はこちら : https://doc.rust-jp.rs/book-ja/appendix-02-operators.html

Rustの論理値型

こちらも予想通りtruefalseの2値。ただ、Pythonと違って小文字始まりです。

型注釈する場合はbool

Rustの文字型

文字「列」型とは違ってシングルクォーテーション。ユニコードのスカラー値。

型注釈はchar

ダブルクォーテーション(String)とシングルクォーテーション(char)で型が違うというのはややこしいですね。

Rustの複合型

複数の値をまとめることができ、タプルと配列の2種類があります。

Rustのタプル型

()を使って生成する。すべて同じ型である必要はない。あえて型注釈つけると以下のようになる。

let tup: (i32, f64, u8) = (500, 6.4, 1);

逆にこのように値を取り出すこともできます。(分配と呼ばれる)

let (x, y, z) = tup;

値の番号を.につけることで要素に直接アクセスできます。最初のインデクスは0。

let five_hundred = tup.0; // 500が入る

Rustの配列型

[]で宣言。タプルと違って全要素が同じ型である必要があります。

let a = [1, 2, 3, 4, 5];

PythonやTypeScriptと異なり、一度宣言したら配列の長さ(要素の数)を増やしたり減らしたりできません。(え...)

なので、長さが変わらないとわかっている配列の宣言に使うことでエラーを防いだり「長さ変えるなよ!」と暗に牽制できます。

(ちなみに、長さを変えられる型として、ベクタ型という標準ライブラリに用意されたコレクション型があります。)

配列の要素にアクセスするには、[要素の番号]でアクセスできます。

let first = a[0]; // 1

また、配列の要素外のインデクスを指定してアクセスしようとするとパニック(Rustのプログラムがエラー終了)しますので、エラー処理が必要です。

まとめ

というわけで今回はRustで変数がとるデータ型についてまとめました。

  • スカラー型は整数、浮動小数、文字、論理値の4つ
  • 複合型はタプルと配列の2つ

特に配列型は固定長というところがPython等の他言語と違うので注意したいですね。

次回はRustの関数についてまとめたいと思います。

それでは〜

Rust オススメの参考書籍

▼ 入門者向け。Pythonとの比較あり。Kindleでも読める。

手を動かして考えればよくわかる 高効率言語 Rust 書きかた・作りかた

▼ 中級者向け。オライリーならではの詳解。硬派な方向け。

プログラミングRust 第2版

参考リンク

Rustチュートリアル (日本語版 非公式) https://doc.rust-jp.rs/book-ja/

ads【オススメ】未経験からプログラマーへ転職できる【GEEK JOBキャンプ】
▼ Amazonオススメ商品
ディスプレイライト デスクライト BenQ ScreenBar モニター掛け式
スマートLEDフロアライト 間接照明 Alexa/Google Home対応

Author

Penta

都内で働くITエンジニアもどき。好きなものは音楽・健康・貯金・シンプルでミニマルな暮らし。AWSクラウドやデータサイエンスを勉強中。学んだことや体験談をのんびり書いてます。TypeScript / Next.js / React / Python / AWS / インデックス投資 / 高配当株投資 More profile

Location : Tokyo, JPN

Contact : Twitter@penguinchord

Recommended Posts

Copy Right / Penguin Chord, ペンギンコード (penguinchord.com) 2022 / Twitter@penguinchord