【发布时间】:2015-12-07 23:15:40
【问题描述】:
我有一个包含多个单字段元组结构变体的枚举。每个元组结构字段都是不同的结构。我试过这段代码:
struct Foo { a: i32 }
struct Bar { b: i32 }
enum Foobar {
Foo(Foo),
Bar(Bar)
}
impl Foobar {
fn new_foo() -> Foobar {
Foobar::Foo(Foo { a: 1 })
}
fn new_bar() -> Foobar {
Foobar::Bar(Bar { b: 2 })
}
}
fn main() {
let x = vec![Foobar::new_foo(), Foobar::new_bar()];
let mut i = 0;
while i < x.len() {
let element = &x[i];
match element {
&Foobar::Foo(_) => { x[i].a = 3 },
&Foobar::Bar(_) => { x[i].b = 4 }
}
i += 1
}
}
编译器说:
错误:尝试访问类型
Foobar上的字段a,但未找到具有该名称的字段
我尝试了this question 中的解决方案,但它说:
错误:不能将不可变匿名字段借用为可变字段
如何修改vectorx的内容字段?
【问题讨论】: