结构体定义及实例化

结构体概述

在 Rust 编程语言中,结构体(struct)是一种自定义的数据类型,它允许你将多个相关值组合成一个复合类型。结构体在 Rust 中非常常见,用于表示具有多个字段(field)的复杂数据结构。这些字段可以是不同类型的数据。

定义结构体

你可以使用 struct 关键字来定义一个结构体。以下是一个简单的例子:

struct Person {
    name: String,
    age: i32,
    gender: Option<String>,
}

创建结构体实例

你可以使用字段初始化语法来创建一个结构体的实例(也称为值或对象)。以下是如何创建 Person 结构体的实例:

struct Person {
    name: String,
    age: i32,
    gender: Option<String>,
}
fn main() {
    let p1 = Person{
        name: "John".to_string(),
        age: 25,
        gender: Some("Male".to_string()),
    };
    println!("Name: {}, Age: {}, Gender: {:?}", p1.name, p1.age, p1.gender);
}

访问结构体字段

你可以使用点符号(.)来访问结构体的字段。

struct 更新语法

当你想基于某个 struct实例来创建一个新实例的时候,可以使用struct 更新语法:

fn main() {
    let p1 = Person{
        name: "John".to_string(),
        age: 25,
        gender: Some("Male".to_string())
    };
    println!("Name: {}, Age: {}, Gender: {:?}", p1.name, p1.age, p1.gender);
    let p2 = Person{
        name: "Jane".to_string(),
        ..p1
    };
    println!("Name: {}, Age: {}, Gender: {:?}", p2.name, p2.age, p2.gender);
}

Tuple struct

可定义类似 tuple 的 struct,叫做 tuple struct

Tuple struct整体有个名,但里面的元素没有名。

适用:想给整个tuple起名,并让它不同于其它 tuple,而且又不需要给每个元素起名,

定义 tuple struct : 使用 struct 关键字,后边是名字,以及里面元素的类型。

示例 :

fn main() {
    struct Color(i32, i32, i32);
    let red: Color = Color(255, 0, 0);
    println!("Red: {}, Green: {}, Blue: {}", red.0, red.1, red.2);
}