E0002

E0002#

未使用的变量。

这个变量未被代码的其他部分使用,也没有标记 pub 可见性。

请注意,这个警告可能会揭示你代码中的其他错误。例如,如果你的代码库中有两个变量名称相似,你可能会错误地使用另一个变量。

具体来说,如果变量是在顶层,并且模块的主体包含副作用,则这些副作用将不会发生。

错误示例#

///|
let p : Int = {
  side_effect.val = 42
  42
}

///|
let side_effect : Ref[Int] = { val: 0 }

///|
test {
  let x = 42

}

建议#

有几种方式可以修复这个警告:

  • 如果这个变量确实没有用,你可以移除变量的定义。

  • 如果这个变量是在顶层(即不是局部的),并且是你模块的公开 API 的一部分,你可以给变量添加 pub 关键字。

    ///|
    pub let p = 42
    
  • 如果你在变量名上犯了拼写错误,你可以在使用的地方将变量重命名为正确的名字。

  • 如果你的代码依赖于变量的副作用,你可以将副作用包装在 fn init 块中。

    ///|
    let side_effect : Ref[Int] = { val: 0 }
    
    ///|
    fn init {
      side_effect.val = 42
    }
    

在某些情况下,你可能想要保持变量为私有且同时不使用。在这种情况下,你可以对该变量调用 ignore() 以强制使用它。

///|
let p_unused : Int = 42

///|
test {
  ignore(p_unused)
}

///|
fn main {
  let x = 42
  ignore(x)
}