E4029

E4029#

这个表达式的类型不是一个枚举值。

错误示例:#

pub(all) struct T {
  value : Int
}

pub fn check(value : Int?) -> Int {
  match value {
    T::None => 0
    Some(value) => value
  }
}

上述例子中,试图把 T::None 用作构造器模式,但 T 是结构体类型,不是 enum 或 enumview 类型,因此会在第 5 行报错:

The type T is a struct type and not an enum or enumview.

建议#

确保使用正确类型的值:

pub fn check(value : Int?) -> Int {
  match value {
    None => 0
    Some(value) => value
  }
}