结构
语法
结构体 :
Struct结构体
| 元组结构体Struct结构体 :
struct
标识符 泛型参数组? Where从句? ({
结构体字段组?}
|;
)元组结构体 :
struct
标识符 泛型参数组?(
元组字段组?)
Where从句?;
结构体字段组 :
结构体字段 (,
结构体字段)*,
?元组字段组 :
元组字段 (,
元组字段)*,
?
结构体 是使用关键字 struct
定义的具名的 结构体类型 。
以下是 struct
类型的一个例子:
#![allow(unused)] fn main() { struct Point {x: i32, y: i32} let p = Point {x: 10, y: 11}; let px: i32 = p.x; }
元组结构体 是一种具名的 [元组类型] ,同样使用关键字 struct
定义。例如:
#![allow(unused)] fn main() { struct Point(i32, i32); let p = Point(10, 11); let px: i32 = match p { Point(x, _) => x }; }
单元结构体 是一种没有任何字段的结构体,通过完全省略字段列表定义。这样的结构体隐式地定义了一个与其类型相同的常量名称。例如:
#![allow(unused)] fn main() { struct Cookie; let c = [Cookie, Cookie {}, Cookie, Cookie {}]; }
相似于
#![allow(unused)] fn main() { struct Cookie {} const Cookie: Cookie = Cookie {}; let c = [Cookie, Cookie {}, Cookie, Cookie {}]; }
结构体没有精确指定内存布局。可以使用 repr
属性 指定特定的布局。