结构体是用户定义的数据类型,其中包含定义特定实例的字段。结构有助于实现更容易理解的抽象概念。本文介绍几种初始化结构体对象的方法,包括常规方法、Default特征、第三方包实现以及构建器模式。
Struct声明与初始化
struct Employee {
id: i32,
name: String,
address: String,
designation: String,
}
每个字段的类型都写在它的名称前面(例如,id的类型是i32,名称是String,地址也是String,等等)。在声明结构体时,应给每个属性值赋,这个过程称为初始化。
struct Student {
name:String,
gpa:i32,
faculty:String,
}
fn main() {
let std1 = Student {
faculty:String::from("Computer Science"),
name:String::from("Nil"),
gpa:3
};
println!("Name is :{}, Faculty is :{}, GPA is :{}",std1.name,std1.faculty,std1.gpa);
}
// 输出结果:Name is :Nil, Faculty is :Computer Science, GPA is :3
我们创建了一个名为Student的结构体,其中包含三个属性name、gpa和faculty。数据类型分别为String、i32和String。该结构在main()中初始化,然后利用println!宏打印结构的属性值。
实现Default 特征
实现Default trait可以为结构体提供默认值。我们可以通过对数据结构进行适度调整来使用自动生成的默认实现。当在数据结构中使用#[derived (Default)]时,编译器给每个属性中设置默认值。默认的布尔值为false,而默认的整数值为0。
#[derive(Default)]
struct Student {
name:String,
gpa:i32,
faculty:String,
}
fn main() {
let std1 = Student {
faculty: String::