定義結構

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,
}