Rust-reference/items/structs

来自菜鸟教程
跳转至:导航、​搜索

Structs

结构体

structs.md

commit: b0e0ad6490d6517c19546b1023948986578fc378
本章译文最后维护日期:2020-11-8

句法

Struct :
      StructStruct
   | TupleStruct

StructStruct :
   struct IDENTIFIER  Generics? WhereClause? ( { StructFields? } | ; )

TupleStruct :
   struct IDENTIFIER  Generics? ( TupleFields? ) WhereClause? ;

StructFields :
   StructField (, StructField)* ,?

StructField :
   OuterAttribute*
   Visibility?
   IDENTIFIER : Type

TupleFields :
   TupleField (, TupleField)* ,?

TupleField :
   OuterAttribute*
   Visibility?
   Type

结构体是一个使用关键字 struct 定义的标称型(nominal)结构体类型

结构体(struct)程序项的一个示例和它的使用方法:

struct Point {x: i32, y: i32}
let p = Point {x: 10, y: 11};
let px: i32 = p.x;

元组结构体是一个标称型(nominal)元组类型,也是用关键字 struct 定义的。例如:

struct Point(i32, i32);
let p = Point(10, 11);
let px: i32 = match p { Point(x, _) => x };

单元结构体(unit-like struct)是没有任何字段的结构体,它的定义完全不包含字段(fields)列表。这样的结构体隐式定义了其类型的同名常量(值)。例如:

struct Cookie;
let c = [Cookie, Cookie {}, Cookie, Cookie {}];

等价于

struct Cookie {}
const Cookie: Cookie = Cookie {};
let c = [Cookie, Cookie {}, Cookie, Cookie {}];

结构体的精确内存布局还没有规范下来。目前可以使用 repr属性来指定特定的布局。