Rust 中的结构体(Struct)与元组(Tuple)都可以将若干个类型不一定相同的数据捆绑在一起形成整体,
但结构体的每个成员和其本身都有一个名字,这样访问它成员的时候就不用记住下标了。
元组常用于非定义的多值传递,而结构体用于规范常用的数据结构。
结构体的每个成员叫做"字段"。
struct Site {
domain: String,
name: String,
nation: String,
found: u32
}
注意:如果你常用 C/C++,请记住在 Rust 里 struct 语句仅用来定义,不能声明实例,结尾不需要 ; 符号,而且每个字段定义之后用 , 分隔
Rust 很多地方受 JavaScript 影响,在实例化结构体的时候用 JSON 对象的 key: value 语法来实现定义
结构体类名 {
字段名 : 字段值,
...
}
如果正在实例化的结构体有字段名称和现存变量名称一样的,可以简化书写:
let domain = String::from("www.runoob.com");
let name = String::from("RUNOOB");
let runoob = Site {
domain, // 等同于 domain : domain,
name, // 等同于 name : name,
nation: String::from("China"),
traffic: 2013
};
结构体更新语法:
let site = Site {
domain: String::from("www.runoob.com"),
name: String::from("RUNOOB"),
..runoob
};
注意:..runoob 后面不可以有逗号。这种语法不允许一成不变的复制另一个结构体实例,意思就是说至少重新设定一个字段的值才能引用其他实例的值。
元组结构体:
有一种更简单的定义和使用结构体的方式:元组结构体。