结构体
与 C 和 C++ 一样,Rust 支持自定义结构体:
struct Person { name: String, age: u8, } fn main() { let mut peter = Person { name: String::from("Peter"), age: 27, }; println!("{} is {} years old", peter.name, peter.age); peter.age = 28; println!("{} is {} years old", peter.name, peter.age); let jackie = Person { name: String::from("Jackie"), ..peter }; println!("{} is {} years old", jackie.name, jackie.age); }
关键点:
- 结构体的运作方式与使用 C 或 C++ 时类似。
- 不需要 typedef 即可定义类型,这与使用 C++ 类似,但与使用 C 不同。
- 与使用 C++ 不同的是,结构体之间没有继承关系。
- 方法是在“impl”块中进行定义的,我们将在后面的幻灯片中看到。
- 这时可能很适合告诉学员存在不同类型的结构体。
- 针对某类型实现 trait 时,可能会使用大小为零的结构体“e.g., struct Foo;”,但其中没有任何您要储存在值本身中的数据。
- 下一张幻灯片将介绍元组结构体,当字段名称不重要时使用。
- 通过语法“..peter”,我们可以从旧结构体复制大部分字段,而无需明确地输入所有字段。它必须始终是最后一个元素。