E1002

E1002#

未使用的变量。

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

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

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

错误示例#

let p : Int = {
//  ^ Warning: Unused toplevel variable 'p'.
//             Note if the body contains side effect, it will not happen.
//             Use `fn init { .. }` to wrap the effect.
  println("Side effect")
  42
}

fn main {
  let x = 42 // Warning: Unused variable 'x'
}

建议#

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

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

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

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

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

    fn init {
      println("Side effect")
    }
    

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

let p : Int = {
  println("Side effect")
  42
}

fn init {
  ignore(p)
}

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