欄位簡寫語法
如果您已有名稱相同的變數,可以透過簡寫 建立結構體:
#[derive(Debug)] struct Person { name: String, age: u8, } impl Person { fn new(name: String, age: u8) -> Person { Person { name, age } } } fn main() { let peter = Person::new(String::from("Peter"), 27); println!("{peter:?}"); }
-
您可以將
Self
用做型別來編寫new
函式,因為它可和結構體型別名稱互通。#[derive(Debug)] struct Person { name: String, age: u8, } impl Person { fn new(name: String, age: u8) -> Self { Self { name, age } } }
-
實作結構體的
Default
特徵。請定義部分欄位,並針對其他欄位使用預設值。#[derive(Debug)] struct Person { name: String, age: u8, } impl Default for Person { fn default() -> Person { Person { name: "Bot".to_string(), age: 0, } } } fn create_default() { let tmp = Person { ..Person::default() }; let tmp = Person { name: "Sam".to_string(), ..Person::default() }; }
-
方法會在
impl
區塊中定義。 -
使用結構體更新語法,利用
peter
定義新結構。請注意,peter
這個變數之後將再也無法存取。 -
輸出結構體時,請使用
{:#?}
提出Debug
表示法要求。