gpt4 book ai didi

rust - 我不明白错误 E0508

转载 作者:行者123 更新时间:2023-11-29 07:54:34 26 4
gpt4 key购买 nike

当我尝试编译这段代码时,出现 E0508​​ 错误:

cannot move out of type [Enum; 2], a non-copy fixed-size array

enum Enum {
Val1 = 0,
Val2 = 1,
}

fn main() {
let a = [Enum::Val1, Enum::Val2];
let x: i32 = a[0] as i32 + a[1] as i32;
println!("{}", x);
}

我只想访问枚举类型数组中的单个值。

最佳答案

较小的复制品:

enum Enum {
Val1 = 0,
Val2 = 1,
}

fn main() {
let a = [Enum::Val1];
a[0] as i32;
}

最简单的解决方法是使您的枚举复制:

#[derive(Copy, Clone)]
enum Enum {
Val1 = 0,
Val2 = 1,
}

where is the copy needed?

这是一个很好的问题,我不完全确定为什么在强制转换为整数时需要移动值。不过,这与数组无关:

#[derive(Debug)]
enum Enum {
Val1 = 0,
Val2 = 1,
}

fn main() {
let a = Enum::Val1;
let b = a as i32;
println!("{:?}", a); // Error: a was moved in the line above
}

关于rust - 我不明白错误 E0508,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37680893/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com