06 Rust 枚举类

简单使用

enum Person {
    Good,
    Bad
}

let p1 = Person::Good;

为枚举成员添加属性

#[derive(Debug)]
enum Person {
    Good(String),           // 元组的方式描述属性
    Bad { name: String },   // 结构体方式描述属性, 可为属性命名
}

fn main() {
    let p1 = Person::Good("Jim".to_string());
    let p2 = Person::Bad {
        name: "Tom".to_string(),
    };
    
    match p1 {
        // 元组属性名称可自定义化, 但顺序需一致
        Person::Good(n) => {
            println!("{}, Good person", n);
        },
        // 结构体形式名称需和定义时一致
        Person::Bad {name} => {
            println!("{}, Bad person", name);
        }
    }

    // 使用 if let 语法进行枚举类型判断
    if let Person::Good(_) = p2 {
        println!("Good person");
    } else {
        println!("Not a good person");
    }
}

Option 枚举类

Rust 在语言层面彻底不允许空值 null 的存在,但无奈null 可以高效地解决少量的问题,为此引入了 Option 枚举类

enum Option<T> {
    Some(T),
    None,
}
let opt = Option::Some("Hello");

// 在使用前进行判断
if let Option::None = opt {
    println!("opt is none!");
    return;
}

// 通过 unwrap 获取 Some 内部实际值
println!("{}", opt.unwrap());

// 初始值为空的 Option 必须明确类型
let opt: Option<&str> = Option::None;

// 由于 Option 是 Rust 编译器默认引入的
// 在使用时可以省略 Option:: 直接写 None 或者 Some()
match opt {
    Some(value) => println!("{}", value),
    None => println!("opt is None"),
}

你可能感兴趣的:(rust,java,前端)