rust - 在枚举中使用预定义的结构
问题描述
我看到了这段代码:
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() {}
我想这行不通,那我应该怎么做呢?
解决方案
您定义的枚举成员和它们包含的结构或值是不同的,因此您不能完全做您想做的事情;但你可以接近:
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
。
推荐阅读
- python-3.x - 我制作了一个程序来打印使用星号形成的“字母”。我有很多行代码。有一个更好的方法吗?
- android - Android 4 上 packageManager.hasSystemFeature(PackageManager.FEATURE_CAMERA_FLASH) 处的 java.lang.verifyError
- python - 用于 for 循环的字符串 join() 方法
- reactjs - 覆盖模块中的全局 CSS 样式不起作用
- assembly - 如何使用 Irvine32 for x86 从表中写入文本文件?
- java - 如何将 ActiveProfiles 与带有 WebMvcTest 的 Spring Boot 测试一起使用?
- python - 使用子图 Matplotlib 绘制水平线
- javascript - JavaScript - setTimeout() / clearTimeout()
- python - 在常数张量上评估时,Tensorflow 的 Argmax 函数不打印值
- amazon-web-services - http://169.254.169.254/ 托管在哪里?