😺

Rust構造体-struct-の基本的な使い方

2023/08/27に公開

構造体は複数の異なるデータ型を1つのデータ型にまとめるための仕組みです。

構造体を定義する

構造体は struct キーワードを用いて定義します。各フィールドはそのデータ型と名前を指定します。下記の例では、name(String型)、age(u32型)、is_student(bool型)という3つのフィールドを持つ構造体になります。

struct Person {
    name:String,
    age: u32,
    is_student: bool,
}

構造体をインスタンス化&フィールドへのアクセス

構造体のインスタンスを作成するには、
struct名 { フィールド名: 値, ... }
の形式で初期化します。

フィールドへのアクセスには'.'を用います。

fn main() {
    // 構造体のインスタンス化
    let person1 = Person {
        name: String::from("Alice"),
        age: 25,
        is_student: false,
    };

    let person2 = Person {
        name: String::from("Bob"),
        age: 30,
        is_student: true,
    };

    // 構造体のフィールドにアクセスする
    println!("Name: {}", person1.name);               // Name: Alice
    println!("Age: {}", person1.age);                 // Age: 25
    println!("Is Student: {}", person1.is_student);   // Is Student: false
    println!("Name: {}", person2.name);               // Name: Bob
    println!("Age: {}", person2.age);                 // Age: 30
    println!("Is Student: {}", person2.is_student);   // Is Student: true

構造体にメソッドを実装する

構造体にはメソッド(関数)を実装することもできます。
impl ブロックを使用してメソッドを定義し、&self を使って構造体自体への参照を受け取ることができます。

struct Person {
    name:String,
    age: u32,
    is_student: bool,
}

// 構造体にメソッド(関数)を実装することもできる
impl Person {
    // メソッドの定義
    fn introduce(&self) {
        println!("My name is {} and I am {} years old.", self.name, self.age);
    }
}

fn main() {
    // 構造体のメソッドを実行する
    person1.introduce();     // My name is Alice and I am 25 years old.
    person2.introduce();     // My name is Bob and I am 30 years old.
}```

Discussion