構造体

Rustの構造体(struct)は、関連するデータを一つの単位としてまとめるためのカスタムデータ型です。 構造体を使うことで、異なるデータ型を持つ複数のフィールドを一つにまとめて管理できます。

構造体の定義

構造体は struct キーワードを使って定義します。 例えば、Person という名前の構造体を定義する場合は次のようになります:

#![allow(unused)]
fn main() {
struct Person {
    name: String,
    age: u32,
}
}

フィールドとは?

Rustの構造体におけるフィールドは、その構造体が持つデータの各要素を表しているようです。 上の例では、nameageという2つのフィールドがあります。

インスタンスの生成

構造体のインスタンスを生成するには、次のように記述します:

#![allow(unused)]
fn main() {
let person = Person {
    name: String::from("Alice"),
    age: 30,
};
}

フィールドへのアクセス

struct Person { // 構造体を定義
    name: String,
    age: u32,
}

fn main() {
    let person = Person { //Personという名の構造体のインスタンスを生成
    name: String::from("Alice"),
    age: 30,
    };
    // フィールドへアクセス
    println!("Name: {}, Age: {}", person.name, person.age);
}

Cスタイル構造体

  • フィールドに名前を付けて定義する、最も一般的な構造体です。

    #![allow(unused)]
    fn main() {
    struct Color {
        red: u8,
        green: u8,
        blue: u8,
    }
    
    let black = Color { red: 0, green: 0, blue: 0 };
    }

タプルスタイル構造体

  • タプル構造体は、通常のタプルに名前を付けたものです。 フィールドに名前を付けずに、位置でアクセスします。

    #![allow(unused)]
    fn main() {
    struct Point(i32, i32, i32);
    
    let origin = Point(0, 0, 0);
    }

ユニットスタイル構造体

  • フィールドを持たない構造体です。主に型としての意味を持たせるために使用されます。

    #![allow(unused)]
    fn main() {
    struct Unit;
    
    let unit = Unit;
    }