鹏展博
453字约2分钟
2022-06-03
struct
定义struct User {
name: String,
age: u8,
email: String,
}
let user1 = User {
name: String::from("zhangsan"),
age: 20,
email: String::from("zhangsan@email.com"),
};
通过 .
操作符访问实例:
let mut user1 = User {
name: String::from("zhangsan"),
age: 20,
email: String::from("zhangsan@email.com"),
};
user1.name = String::from("lisi");
可以通过 结构体更新语法 进行更新
let user2 = User {
name: String::from("wangwu"),
..user1 // 注意末尾不需要加 逗号
};
..
语法表明了 当前实例未被显式声明的字段,都从 user1
中获取。
..
语法必须放在 结构体的尾部
结构体必须要有名称,但是结构体的字段可以没有名称,这种结构体长得很像元组,因此被称为元组结构体
struct Point(i32, i32, i32);
struct Color(i32, i32, i32);
fn main() {
let point = Ponit(0, 0, 0);
let color = Color(0, 0, 0);
}
类似于 单元类型 。定义一个类型,但是不关心该类型的内容, 只关心它的行为时,就可以使用 单元结构体
struct AlwaysEqual;
let subject = AlwaysEqual;
// 我们不关心 AlwaysEqual 的字段数据,只关心它的行为,因此将它声明为单元结构体,然后再为它实现某个特征
impl SomeTrait for AlwaysEqual {
}