Rust语言 学习05 枚举与模式匹配
  dBFTbkVLMBge 2023年11月02日 48 0

一、定义枚举

Rust语言 学习05 枚举与模式匹配_rust

Rust语言 学习05 枚举与模式匹配_rust_02

Rust语言 学习05 枚举与模式匹配_rust_03

Rust语言 学习05 枚举与模式匹配_rust_04

Rust语言 学习05 枚举与模式匹配_rust_05

定义枚举的方法

enum Message {
    Quit,
    Move {x:i32,y:i32},
    Write(String),
    ChangeColor(i32,i32,i32),
}

impl Message {
    fn call(&self) {

    }
}



fn main() {
    let q = Message::Quit;
    let m = Message::Move{x:12,y:24};
    let w = Message::Write(String::from("Hello"));
    let c = Message::ChangeColor(0,255,255);

    m.call()
}

二、Option枚举

Rust语言 学习05 枚举与模式匹配_rust_06

Rust语言 学习05 枚举与模式匹配_rust_07

Rust语言 学习05 枚举与模式匹配_rust_08

fn main() {
    let some_number = Some(5);
    let some_string = Some("string test");
    let absent_number : Option<i32> = None;
}

Rust语言 学习05 枚举与模式匹配_rust_09

Rust语言 学习05 枚举与模式匹配_rust_10

Rust语言 学习05 枚举与模式匹配_rust_11

三、控制流与运算符 Match

Rust语言 学习05 枚举与模式匹配_rust_12

enum Coin {
    Penny,
    Nickel,
    Dime,
    Quarter,
}

fn value_in_cents(coin : Coin) -> u8 {
    match coin {
        Coin::penny => {
          println!("Penny");
            1
        },
        Coin::Nickel =>5,
        Coin::Dime =>10,
        Coin::Quarter =>20,
    }
}

fn main() {

}

Rust语言 学习05 枚举与模式匹配_rust_13

匹配Option<T>

fn plus_one(x : Option<i32>) -> Option<i32> {
    match x {
        None => None,
        Some(i) => Some(i+1)
    }
}


fn main() {
    let five = Some(5);
    let six = plus_one(five);
    let none = plus_one(None);
}

Rust语言 学习05 枚举与模式匹配_rust_14

Rust语言 学习05 枚举与模式匹配_rust_15

四、if let

Rust语言 学习05 枚举与模式匹配_rust_16

Rust语言 学习05 枚举与模式匹配_rust_17

效果一样


【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

推荐阅读
  oS1xgoxjr0QZ   2023年11月02日   65   0   0 数组Rust
  oS1xgoxjr0QZ   2023年11月02日   50   0   0 Rust
  dBFTbkVLMBge   2023年11月02日   45   0   0 Rust
  oS1xgoxjr0QZ   2023年11月02日   51   0   0 Rust
  oS1xgoxjr0QZ   2023年11月02日   34   0   0 Rust
  oS1xgoxjr0QZ   2023年11月02日   62   0   0 Rust
  oS1xgoxjr0QZ   2023年11月02日   67   0   0 Rust
  y5zqVixaDLkE   2023年11月02日   61   0   0 RustmysqlPostgreSQL
dBFTbkVLMBge