Structs  Syntax Struct : StructStruct | TupleStruct StructStruct : struct IDENTIFIER GenericParams? WhereClause? ( { StructFields? } | ; ) TupleStruct : struct IDENTIFIER GenericParams? ( TupleFields? ) WhereClause? ; StructFields : StructField (, StructField)* ,? StructField : OuterAttribute* Visibility? IDENTIFIER : Type TupleFields : TupleField (, TupleField)* ,? TupleField : OuterAttribute* Visibility? Type  A struct is a nominal struct type defined with the keyword struct. An example of a struct item and its use: #![allow(unused)]
fn main() {
struct Point {x: i32, y: i32}
let p = Point {x: 10, y: 11};
let px: i32 = p.x;
}
 A tuple struct is a nominal tuple type, also defined with the keyword struct. For example: #![allow(unused)]
fn main() {
struct Point(i32, i32);
let p = Point(10, 11);
let px: i32 = match p { Point(x, _) => x };
}
 A unit-like struct is a struct without any fields, defined by leaving off the list of fields entirely. Such a struct implicitly defines a constant of its type with the same name. For example: #![allow(unused)]
fn main() {
struct Cookie;
let c = [Cookie, Cookie {}, Cookie, Cookie {}];
}
 is equivalent to #![allow(unused)]
fn main() {
struct Cookie {}
const Cookie: Cookie = Cookie {};
let c = [Cookie, Cookie {}, Cookie, Cookie {}];
}
 The precise memory layout of a struct is not specified. One can specify a particular layout using the repr attribute.

    
{'path': 'public/docs/rust/reference/items/structs.html', 'source': 'DevDocs.IO'}