类似结构的枚举变量中的更新字段

ant*_*oyo 8 enums struct rust

我能够将结构更新语法与单个结构一起使用,但我无法将它与类似结构的枚举变体一起使用。我也不能使用点语法从类似结构的枚举变体更新字段。

例如:

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 {
        strct@Enum::Struct { field1, field2 } => Enum::Struct {
            field1: 1,
            .. strct
        },
    };
}
Run Code Online (Sandbox Code Playgroud)

两种方式都给我一个错误:

functional record update syntax requires a struct
Run Code Online (Sandbox Code Playgroud)

这段代码:

my_enum.field1 = 3;
Run Code Online (Sandbox Code Playgroud)

给了我以下错误:

attempted access of field `field1` on type `Enum`, but no field with that name was found
Run Code Online (Sandbox Code Playgroud)

如何从类似结构的枚举变体更新字段?

Mat*_*eck 9

这是一种方法:

match my_enum {
    Enum::Struct { ref mut field1, .. } => {
        *field1 = 3;
    }
}
Run Code Online (Sandbox Code Playgroud)