定义结构
Rust 中的结构使用 struct
关键字定义。最常见的结构形式包含一组命名字段:
struct Foo {
my_bool: bool,
my_num: isize,
my_string: String,
}
以上声明了 struct
有三个字段:my_bool
,my_num
和 my_string
,分别为 bool
,isize
和 String
。
在 Rust 中创建 struct
s 的另一种方法是创建一个元组结构 :
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,
}