首页 > 解决方案 > 在枚举中使用预定义的结构

问题描述

我看到了这段代码:

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

fn main() {}

看起来代码的作者在枚举中定义了结构。什么是正确的术语?这是如何运作的?有没有办法将预定义的结构放入枚举中?

struct Run { distance: i32 }
enum Message {
    Run, // already defined so we just write Run instead of Run { distance: i32 }
    Quit,
    Move { x: i32, y: i32 },
    Write(String),
    ChangeColor(i32, i32, i32),
}

fn main() {}

我想这行不通,那我应该怎么做呢?

标签: rust

解决方案


您定义的枚举成员和它们包含的结构或值是不同的,因此您不能完全做您想做的事情;但你可以接近:

struct Run { distance: i32 }
enum Message {
    Run(Run),
    Quit,
}

fn main() {
    let m = Message::Run(Run { distance: 32 });
}

在这种情况下,您有 astruct Run和 a Message::Run,其中包含一个恰好是 a 的值struct Run


推荐阅读