08-rustlings-enums

enums1.rs

原始代码:

#[derive(Debug)]
enum Message {
    // TODO: Define a few types of messages as used below.
}

fn main() {
    println!("{:?}", Message::Resize);
    println!("{:?}", Message::Move);
    println!("{:?}", Message::Echo);
    println!("{:?}", Message::ChangeColor);
    println!("{:?}", Message::Quit);
}

编译报错内容:

error[E0599]: no variant or associated item named `Resize` found for enum `Message` in the current scope
 --> exercises/08_enums/enums1.rs:7:31
  |
2 | enum Message {
  | ------------ variant or associated item `Resize` not found for this enum
...
7 |     println!("{:?}", Message::Resize);
  |                               ^^^^^^ variant or associated item not found in `Message`

error[E0599]: no variant or associated item named `Move` found for enum `Message` in the current scope
 --> exercises/08_enums/enums1.rs:8:31
  |
2 | enum Message {
  | ------------ variant or associated item `Move` not found for this enum
...
8 |     println!("{:?}", Message::Move);
  |                               ^^^^ variant or associated item not found in `Message`

error[E0599]: no variant or associated item named `Echo` found for enum `Message` in the current scope
 --> exercises/08_enums/enums1.rs:9:31
  |
2 | enum Message {
  | ------------ variant or associated item `Echo` not found for this enum
...
9 |     println!("{:?}", Message::Echo);
  |                               ^^^^ variant or associated item not found in `Message`

error[E0599]: no variant or associated item named `ChangeColor` found for enum `Message` in the current scope
  --> exercises/08_enums/enums1.rs:10:31
   |
2  | enum Message {
   | ------------ variant or associated item `ChangeColor` not found for this enum
...
10 |     println!("{:?}", Message::ChangeColor);
   |                               ^^^^^^^^^^^ variant or associated item not found in `Message`

error[E0599]: no variant or associated item named `Quit` found for enum `Message` in the current scope
  --> exercises/08_enums/enums1.rs:11:31
   |
2  | enum Message {
   | ------------ variant or associated item `Quit` not found for this enum
...
11 |     println!("{:?}", Message::Quit);
   |                               ^^^^ variant or associated item not found in `Message`

For more information about this error, try `rustc --explain E0599`.
error: could not compile `exercises` (bin "enums1") due to 5 previous errors

这一节的报错已经很明显,每一个错误都有提示,那么根据提示可以看到,Message枚举缺少字段,所以补全字段即可:

error[E0599]: no variant or associated item named `Resize` found for enum `Message` in the current scope
 --> exercises/08_enums/enums1.rs:7:31
  |
2 | enum Message {
  | ------------ variant or associated item `Resize` not found for this enum

根据main 中的逻辑可以得知,需要有Resize,Move,Echo,ChangeColorQuit

补全后:

#[derive(Debug)]
enum Message {
    // TODO: Define a few types of messages as used below.
    Resize,
    Move,
    Echo,
    ChangeColor,
    Quit,
}

将会输出:

Output
Resize
Move
Echo
ChangeColor
Quit


Exercise done ✓
Solution for comparison: solutions/08_enums/enums1.rs
When done experimenting, enter `n` to move on to the next exercise 🦀

Progress: [################################################################>-----------------------------------------------------------------------------------------------------------------------]  33/94
Current exercise: exercises/08_enums/enums1.rs