Rust の構造体
1. 構造体 (Structs)
構造体(Structs / Structureの略)は、関連する値を一つにまとめることができるカスタムデータ構造です。
「名前」や「年齢」を持つ一人の「人物」のように、特定の対象に関する情報を整理して保持するためのミニデータベースのようなものだと考えると分かりやすいでしょう。
2. 構造体の作成
struct キーワードを使用して構造体を定義し、その内部にフィールド(Fields)と呼ばれる変数を配置します。
サンプルコード
struct Person {
name: String,
age: u32,
can_vote: bool,
}構造体を定義したら、そのオブジェクト(インスタンス)を作成できます。作成したオブジェクトのフィールドには、ドット記法(.)を使ってアクセスします。
サンプルコード
// Personという名前の構造体を定義
struct Person {
name: String,
age: u32,
can_vote: bool,
}
fn main() {
// Personオブジェクトを作成
let user = Person {
name: String::from("John"),
age: 35,
can_vote: true,
};
// フィールドの値にアクセスしてプリント
println!("名前: {}", user.name);
println!("年齢: {}", user.age);
println!("投票可能か?: {}", user.can_vote);
}フィールドは変数と似ていますが、構造体に属している点が異なります。Person や Car のような大きな構造の一部であるため、Rustではこれらを通常の変数ではなく「フィールド」と呼びます。
3. フィールドの変更
構造体内部の値を変更するには、mut キーワードを使用して、そのオブジェクト自体をミュータブル(変更可能)として宣言する必要があります。
サンプルコード
struct Person {
name: String,
age: u32,
}
fn main() {
let mut user = Person {
name: String::from("John"),
age: 35,
};
user.age = 36; // ageフィールドの値を変更
println!("名前: {}", user.name);
println!("更新された年齢: {}", user.age);
}4. 構造体を使用する理由
エンジニアが開発において構造体を利用する主な理由は以下の通りです。
- 関連データの整理: 関連するデータをクリーンな形でグループ化できるため
- 可読性と保守性: コードが読みやすくなり、後のメンテナンスが容易になるため
- モデリング: ユーザー、書籍、車といった現実世界の概念をプログラム上で表現しやすくするため