HomePlayground
Intro
Rustにおけるタプルの使い方とタプル構造体、パターン記法の解説
カニさん
カニさん
September 08, 2022
1
Rustにおけるタプルの使い方とタプル構造体、パターン記法の解説

タプルとは

PythonやKotlinのように、Rustにもタプルというデータ型が存在します。 本記事ではタプルの使い方タプル構造体パターン記法について解説します。

解説

タプルの定義は本来、「順序付けられた複数の要素で構成される組」です。 Rustにおいても、任意の型のデータをグループ化する軽量な方法です。

タプルは特定の名前を持ちません。 名前を付けるとデータ構造は構造体になります。 タプルのフィールドは名前を持ちません。

フィールドへのアクセスは、構造化解除または位置によって行われます。

タプルの使い方

タプル生成

タプルは常にタプル式で作成されます。

// 特に意味を成しませんが使用可能です
let unit = ();
// 一つの要素を含むものもタプル
let single_element = ("コンマを忘れずに⇨",);
// 要素が二つの一般的なタプル
let two_element = (123, "型の異なる要素も可");

タプルは任意の数の要素を持つことができる。

パターン記法によるアクセス

パターン記法によって各要素にアクセスすることができます。 下記コードのように、タプルの個々の要素に変数名を割り当て使用する事もできます。

let (elem1, _elem2) = two_element;
assert_eq!(elem1, 123);

位置アクセス

また、タプルの要素に数値の位置インデックスでアクセスすることも可能です。インデックス付けはいつも通り0から始まります。

let notation = single_element.0;
assert_eq!(notation, "note the comma");

タプル構造体

通常の構造体とは異なり、匿名フィールドを持ちます。 構文は通常のタプルの構文に非常によく似ています。 パターン記法位置アクセスどちらも使用可能です。

struct TupleStruct(u8, i32);
let my_tuple_struct = TupleStruct(123, -321);
let neg = my_tuple_struct.1;
let TupleStruct(byte, _) = my_tuple_struct;
assert_eq!(neg, -321);
assert_eq!(byte, 123);

フィールドの視認性

匿名タプルのすべてのフィールドは常にpublicです。

しかし、タプル構造体のフィールドは、標準的な構造体のフィールドと同様に、デフォルトではprivateとなります。

これはpub修飾子を使用してpublicにすることができます。

// プライベートフィールド(コンパイル失敗)
mod tuple { pub struct TupleStruct(u8, i32); }
fn main() { let _my_tuple_struct = tuple::TupleStruct(123, -321); }

// パブリックフィールド(コンパイル成功)
mod tuple { pub struct TupleStruct(pub u8, pub i32); }
fn main() { let _my_tuple_struct = tuple::TupleStruct(123, -321); }


タグ

TupleTuple Structs

関連記事

RustのOption型の使い方と構文
September 19, 2022
1
© 2023, All Rights Reserved.

初心者向け

RustCoder(推奨)Rust入門(速習)コミュニティ

SNS