Rust:Providing a default implementation,how use to Default::default()

2020年11月23日 2404点热度 0人点赞 0条评论
内容纲要

Providing a default implementation

Often, when dealing with structures that represent configurations, you don't care about certain values and just want to silently assign them a standard value.

通常,当处理表示配置的结构时,你并不关心某些值,只想为其默默分配一个标准值。

Rust 使用 Default::default(); 为类型分配一个默认值,相当于 C# 的 defaultdefault({type})

Rust 中几乎每个原始类型都有一个默认值。

Default::default() 使用方法如下:

    // There's a default value for nearly every primitive type
    let foo: i32 = Default::default();
    println!("foo: {}", foo); // Prints "foo: 0"

结构体(struct)要设置默认值,需要带上 #[derive(Default)] 特性。

#[derive(Default)]
struct PizzaConfig {
    wants_cheese: bool,
    number_of_olives: i32,
    special_message: String,
}

... ...

    // A struct that derives from Default can be initialized like this
    let pizza: PizzaConfig = Default::default();

    // Prints "wants_cheese: false
    println!("wants_cheese: {}", pizza.wants_cheese);

    // Prints "number_of_olives: 0"
    println!("number_of_olives: {}", pizza.number_of_olives);

    // Prints "special_message: "
    println!("special message: {}", pizza.special_message);

结构体设置默认值

rust 枚举默认栈需要实现 Default 接口:

// You can implement default easily for your own types
enum CrustType {
    Thin,
    Thick,
}
impl Default for CrustType {
    fn default() -> CrustType {
        CrustType::Thin
    }
}
    let _enum:CrustType=Default::default();

痴者工良

高级程序员劝退师

文章评论