此问题在此处已有答案:
How do you access enum values in Rust?(6个答案)
13小时前关门了。
在Rust中,如何将值推送到枚举结构中的vec?
我试图弄清楚如何将值推送到定义为结构的枚举中的vec。
下面是设置沿着我尝试的一些东西:
enum Widget {
Alfa { strings: Vec<String> },
}
fn main() {
let wa = Widget::Alfa { strings: vec![] };
// wa.strings.push("a".to_string());
// no field `strings` on type `Widget`
// wa.Alfa.strings.push("a".to_string());
// no field `Alfa` on type `Widget`
// wa.alfa.strings.push("a".to_string());
// no field `alfa` on type `Widget`
// wa.Widget::Alfa.strings.push("a".to_string());
// expected one of `(`, `.`, `;`, `?`, `}`, or an operator, found `::`
// wa["strings"].push("a".to_string());
// cannot index into a value of type `Widget`
}
有没有可能在一个emum中的vec被创建后更新它?如果有,该怎么做呢?
2条答案
按热度按时间brccelvz1#
你不能直接访问枚举变量上的字段,因为编译器只知道值是枚举类型(
Widget
),而不知道它是枚举的哪一个变量。你必须解构枚举,例如使用match
:或者,您可以改用
if let
:dddzy1tm2#
如果你有一个匹配的手臂(没有意义),你可以这样做:
或者使用
match
(if let
):