4
Я могу использовать синтаксис обновления структуры с помощью одной структуры, но я не могу использовать его со структурным вариантом перечисления. Также я не могу обновить поле из структурного варианта перечисления с синтаксисом точки.Обновить поле в варианте struct-like enum
Например:
enum Enum {
Struct {
field1: i32,
field2: i32,
}
}
fn main() {
let mut my_enum = Enum::Struct {
field1: 1,
field2: 2,
};
my_enum = Enum::Struct {
field1: 1,
.. my_enum
};
my_enum = match my_enum {
[email protected]::Struct { field1, field2 } => Enum::Struct {
field1: 1,
.. strct
},
};
}
Оба способа дают мне ошибку:
functional record update syntax requires a struct
Этот код:
my_enum.field1 = 3;
дает мне следующую ошибку:
attempted access of field `field1` on type `Enum`, but no field with that name was found
Как обновить поле из структурного варианта перечисления?
Это на самом деле не «структура в перечисление». Такая вещь будет выглядеть как 'enum Foo {Variant (StructName)}'. Я забываю, что такое точное имя того, что у вас есть, но оно может быть «enum struct» или, возможно, «перечислимым вариантом структуры»? – Shepmaster
Связанный, но не отвечает на ваш вопрос, это недавняя [серия блога] (http://smallcultfollowing.com/babysteps/blog/2015/08/20/virtual-structs-part-3-bringing-enums-and -структуры-вместе /), в котором говорится о совместном сближении двух концепций. – Shepmaster
Это ссылка на "struct-like enum variant" [согласно] (http://doc.rust-lang.org/reference.html#enumerations) на ссылку, но я думаю, что ее обычно называют просто структурным вариантом. –