定義結構
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,
}