在 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 更新语法:
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起名,并让它不同于其它 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);
}