Skip to content
On this page

枚举2: exercises/enums/enums2.rs

题目

rust
// enums2.rs
//
// Execute `rustlings hint enums2` or use the `hint` watch subcommand for a
// hint.

// I AM NOT DONE

#[derive(Debug)]
enum Message {
    // TODO: define the different variants used below
}

impl Message {
    fn call(&self) {
        println!("{:?}", self);
    }
}

fn main() {
    let messages = [
        Message::Move { x: 10, y: 30 },
        Message::Echo(String::from("hello world")),
        Message::ChangeColor(200, 255, 255),
        Message::Quit,
    ];

    for message in &messages {
        message.call();
    }
}

题目解析

这道题目主要也是各种类型枚举的定义:

  • Message::Move { x: 10, y: 30 }: 类似结构体,包含命名字段
  • Message::Echo(String::from("hello world")): 包含一个字符串
  • Message::ChangeColor(200, 255, 255): 有点类似元组,包含3个字段
  • Message::Quit: 不包含任何字段
rust
#[derive(Debug)]
enum Message {
    // TODO: define the different variants used below
    Move { x: u8, y: u8 }, 
    Echo(String), 
    ChangeColor(u8, u8, u8), 
    Quit, 
}

参考资料

Powered by VitePress