定义结构

Rust 中的结构使用 struct 关键字定义。最常见的结构形式包含一组命名字段:

struct Foo {
    my_bool: bool,
    my_num: isize,
    my_string: String,
}

以上声明了 struct 有三个字段:my_boolmy_nummy_string,分别为 boolisizeString

在 Rust 中创建 structs 的另一种方法是创建一个元组结构

struct Bar (bool, isize, String);

这定义了一个新类型 Bar,它有三个未命名的字段,类型为 boolisizeString。这被称为 newtype 模式 ,因为它有效地为特定类型引入了新的名称。但是,它使用比使用 type 关键字创建的别名更强大的方式; Bar 在这里是一个功能齐全的类型,这意味着你可以为它编写自己的方法(如下)。

最后,声明一个没有字段的 struct ,称为类单元结构

struct Baz;

这对于模拟或测试(当你想要简单地实现特征时)或作为标记类型时非常有用。但是,一般情况下,你不太可能遇到许多类似单位的结构。

请注意,Rust 中的 struct 字段默认都是私有的 - 也就是说,它们不能从定义类型的模块之外的代码访问。你可以使用 pub 关键字为字段添加前缀,以使该字段可公开访问。此外,struct本身也是私人的。要使类型可用于其他模块,struct 定义还必须以 pub 为前缀:

pub struct X {
    my_field: bool,
    pub our_field: bool,
}