如何创建特定枚举变量的集合?



我想在Rust中创建一个枚举的特定变体的vector。例如:

enum EnumExample {
VariantExample,
}
fn main() {
let singleEnum = EnumExample::VariantExample;
let vectorOfEnums = Vec::<EnumExample>::new();
let vectorOfEnumVariants = Vec::<EnumExample::VariantExample>::new();
}

但是对于vectorOfEnumVariants,我得到了错误error[E0573]: expected type, found variant 'EnumExample::VariantExample'。有办法做到这一点吗?我是不是该做点别的事?

我不知道约束enum变体的方法。但是您可以为枚举使用内部类型并创建它们的Vec,然后实现From,以便您可以在需要时将它们转换为枚举变体:

struct Variant;
enum EnumExample {
VariantExample(Variant),
}
impl From<Variant> for EnumExample {
fn from(v: Variant) -> Self {
Self::VariantExample(v)
}
}
fn main() {
let singleEnum = EnumExample::VariantExample;
let vectorOfEnums = Vec::<EnumExample>::new();
let vectorOfVariants = Vec::<Variant>::new();
let vectorOfEnumVariants: Vec<EnumExample> =
vectorOfVariants.into_iter().map(Into::into).collect();
}

游乐场

最新更新