定义结构
Rust 中的结构使用 struct 关键字定义。最常见的结构形式包含一组命名字段:
struct Foo {
my_bool: bool,
my_num: isize,
my_string: String,
}
以上声明了 struct 有三个字段:my_bool,my_num 和 my_string,分别为 bool,isize 和 String。
在 Rust 中创建 structs 的另一种方法是创建一个元组结构 :
struct Bar (bool, isize, String);
这定义了一个新类型 Bar,它有三个未命名的字段,类型为 bool,isize 和 String。这被称为 newtype 模式 ,因为它有效地为特定类型引入了新的名称。但是,它使用比使用 type 关键字创建的别名更强大的方式; Bar 在这里是一个功能齐全的类型,这意味着你可以为它编写自己的方法(如下)。
最后,声明一个没有字段的 struct ,称为类单元结构 :
struct Baz;
这对于模拟或测试(当你想要简单地实现特征时)或作为标记类型时非常有用。但是,一般情况下,你不太可能遇到许多类似单位的结构。
请注意,Rust 中的 struct 字段默认都是私有的 - 也就是说,它们不能从定义类型的模块之外的代码访问。你可以使用 pub 关键字为字段添加前缀,以使该字段可公开访问。此外,struct 型本身也是私人的。要使类型可用于其他模块,struct 定义还必须以 pub 为前缀:
pub struct X {
my_field: bool,
pub our_field: bool,
}