当我尝试编译此代码时,出现E0508错误:
无法移出
[Enum; 2]
类型,非复制固定大小的数组
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);
}
我只想从枚举类型数组中访问单个值。
答案 0 :(得分:4)
较小的复制品:
A[] array = new A[10];
for (int i = 0; i < array.length; i++) {
array[i] = new A(getRandomString(), getRandomInt());
}
Observable.from(array)
.filter(a -> condition(a))
.// <--- do stuff if condition returns true
.// <- back to parent
.filter(a -> complexCondition(a)) // filter all elements(!)
.// <--- do stuff if complex condition returns true
.// <- back to iterate all elements
最简单的解决方法是制作枚举enum Enum {
Val1 = 0,
Val2 = 1,
}
fn main() {
let a = [Enum::Val1];
a[0] as i32;
}
:
Copy
所需的副本在哪里?
这是一个很好的问题,我不能完全确定为什么在强制转换为整数时需要移动该值。但它与数组无关:
#[derive(Copy, Clone)]
enum Enum {
Val1 = 0,
Val2 = 1,
}