E0007

E0007#

字段从未被读取。这包括结构体中的字段和枚举构造器中的字段。

错误示例#

///|
priv enum E {
  A(Int)
  B(value~ : Int)
}

///|
priv struct S {
  value : Int
}

///|
test {
  ignore(B(value=1))
  match A(1) {
    A(_) => println("A")
    B(_) => println("B")
  }
  ignore(S::{ value : 1 })
}

建议#

  • 如果枚举构造器中的字段未使用,你可以在模式中展开它们以使用它们:

    ///|
    priv enum E {
      A(Int)
      B(value~ : Int)
    }
    
    ///|
    priv struct S {
      value : Int
    }
    
    ///|
    test {
      ignore(B(value=1))
      match A(1) {
        A(x) => inspect("A(\{x})", content="A(1)")
        B(value~) => inspect("B(\{value})")
      }
      let s = S::{ value: 1 }
      match s {
        { value } => println("S(\{value})")
      }
      println("S(\{s.value})")
    }
    
  • 如果字段确实没有用,你可以从构造器中移除字段:

    ///|
    priv enum E2 {
      A2
      B2
    }
    
    ///|
    priv struct S2 {}
    
    ///|
    test {
      ignore(E2::B2)
      match E2::A2 {
        A2 => println("A")
        B2 => println("B")
      }
      ignore(S2::{  })
    }
    
  • 如果字段预计会被其他人使用,你可以将类型标记为 pubpub(all)

    ///|
    pub enum E3 {
      A3(Int)
      B3(value~ : Int)
    }
    
    ///|
    pub struct S3 {
      value : Int
    }