4
2

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 3 years have passed since last update.

Rustのプリミティブ型まとめ

Last updated at Posted at 2020-09-22

TL;DR

  • Rustの**プリミティブ型**について、まとめてあります。

実行環境

ハードウェア

項目 情報
OS macOS Catalina(10.15.4)
ハードウェア MacBook Pro (13-inch, 2019, Two Thunderbolt 3 ports)
プロセッサ 1.4 GHz クアッドコアIntel Core i5
メモリ 16 GB 2133 MHz LPDDR3

ソフトウェア

項目 情報
言語 Rust(1.46.0)

プリミティブ型

bool

The boolean type.

truefalseで値を決定します。(Pythonでは、TrueFalse

fn main() {
    let bool_true = true;
    let bool_false = false;
}

fn

Function pointers, like fn(usize) -> bool.

pointer

Raw, unsafe pointers, *const T, and *mut T.

reference

References, both shared and mutable.

slice

A dynamically-sized view into a contiguous sequence, [T]. Contiguous here means that elements are laid out so that every element is the same distance from its neighbors.

unit

The () type, also called "unit".

文字列系

char

A character type.

str

String slices.

**strは、文字列スライスと呼ばれており、メモリ上に存在する文字列データのスタート地点と長さを示しています。そのため、文字列自体の変更は出来ません。
変更可能な文字列型は、標準ライブラリ提供型の
String**です。

Pythonから流れてきた身としては、ここの使い分けのイメージがあまり分からない。。。

集合系

array

A fixed-size array, denoted [T; N], for the element type, T, and the non-negative compile-time constant size, N.

配列は、特定の型の値を連続に収めてある集合です。配列のサイズはコンパイル時に定まっている必要があります。そのため、Pythonの.append().extend()などを使って配列サイズを変更することは出来ません。

内部の値にアクセスする際には、[]を使います(Pythonなどと同じ)。また、配列を参照するときには、自動的にスライスとして扱われます。

配列それ自体には、イテレーターとしての機能を持ち合わせていないため、for文などで使用する場合には、iter()メソッドを使ってあげる必要があります。配列サイズが32個以下の場合には、**IntoIterator**で実装することも可能です。(なんで32個という制限があるんでしょうか。。。)

fn main() {
    let array_a: [i32; 6] = [0, 1, 2, 3, 4, 5];
    for x in array_a.iter() { }  // OK
    for x in array_a { }         // コンパイルエラー

    let array_b: [i32; 32] = [0; 32];
    for x in &array_b { }        // OK

    let array_c: [i32; 33] = [0; 33];
    for x in &array_c { }        // コンパイルエラー
}

tuple

A finite heterogeneous sequence, (T, U, ..).

tupleは生成された際に格納された値の型を全て含めて一つの型を構成します。そのため、**一度生成したタプル内の一部の型だけ変更することは出来ません。**内部の値にアクセスする際には、.0といった形式で指定します。

fn main() {
    let mut tuple = ("hello", 5, "c");
    
    tuple.0 = "hoge";  // 出来る
    tuple.0 = 0;       // コンパイルエラー
}

数値系

浮動小数点

f32, f64

The XX-bit floating point type.

浮動小数点型。

整数

i8, i16, i32, i64, i128

The XXX-bit signed integer type.

符号付き整数型。

u8, u16, u32, u64, u128

The XXX-bit unsigned integer type.

符号無し整数型。

isize

The pointer-sized signed integer type.

ポインタサイズの符号付き整数型。

usize

The pointer-sized unsigned integer type.

ポインタサイズの符号なし整数型。

参考情報

4
2
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
4
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?