字段简写语法

如果您已有名称正确的变量,则可以使用简写形式创建结构体:

#[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:?}");
}
  • 在编写“new”函数时可以使用“Self”作为类型,因为它可以与结构体类型名称互换

    #[derive(Debug)]
    struct Person {
        name: String,
        age: u8,
    }
    impl Person {
        fn new(name: String, age: u8) -> Self {
            Self { name, age }
        }
    }
  • 为结构体实现“Default”trait。定义一些字段并对其他字段使用默认值。

    #[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”表示法。