【发布时间】:2018-12-11 14:00:22
【问题描述】:
我有一个可能的子类别值列表,以及一个需要关联的子类别分组值列表。用户将输入一个子类别值(这必须是整数吗?)我需要检查这个值是否在枚举中,但如果不是,不知道该怎么办。
- 是否有一种“自动”的方式来进行这项检查?我们是否必须以编程方式在枚举上实现测试?
- 如果子类别用于分组类别,如何使用?怎么设置,怎么读取?
我认为枚举关系应该是这样的:
#[derive(Debug)]
pub enum Subtypes {
acost,
bcost,
//... other subtypes
}
#[derive(Debug)]
pub enum Grouping {
Exp(Subtypes),
//...other grouping associated with different subtypes
}
如何根据分组枚举定义新变量,如何访问?
// this doesn't work!!
let group = Grouping::Exp;
我认为我错过了一些非常基本的东西。我不知道枚举是否可行。
【问题讨论】:
-
我不知道你想问什么。你有read The Rust Programming Language吗?它解释了基本概念,例如带有值的枚举的适当语法:
Grouping::Exp(Subtypes::acost) -
Idiomatic Rust 使用
snake_case表示变量、方法、宏和字段;UpperCamelCase用于类型和枚举变体;SCREAMING_SNAKE_CASE用于静态和常量。请改用Acost/Bcost。 -
不知道应该怎么做——这不是我们可以帮你的。决定如何处理错误与您的特定程序和任何潜在用户密切相关。
-
事实上,枚举
Grouping::Exp指的是多个值——这是什么意思?一个变量一次只能是一个特定的值,而不是多个的“量子叠加”。