我不明白错误E0508

时间:2016-06-07 13:32:46

标签: rust

当我尝试编译此代码时,出现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);
}

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

1 个答案:

答案 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,
}