PI常数不明确

Kap*_*chu 16 pi ambiguous rust

考虑以下代码:

fn main() {
    let i = f32::consts::PI;
}
Run Code Online (Sandbox Code Playgroud)

出现以下错误:

$ rustc --version
rustc 1.0.0 (a59de37e9 2015-05-13) (built 2015-05-14)
$ rustc -
<anon>:2:13: 2:28 error: ambiguous associated type; specify the type using the syntax `<f32 as Trait>::consts` [E0223]
<anon>:2     let i = f32::consts::PI;
                     ^~~~~~~~~~~~~~~
error: aborting due to previous error
Run Code Online (Sandbox Code Playgroud)
  1. 为什么会抱怨"相关类型"?我在这里看到的唯一类型是f32,它没有关联.
  2. 为什么这个暧昧?我明确指出了f32.
  3. 这是什么<f32 as Trait>::consts语法?我以前从未见过它.
  4. 而且,显然,我可以做些什么来修复此错误并将我的变量设置为PI?

Kap*_*chu 12

要解决这个问题,请添加use std::f32或使用std::f32::consts::PI,以便编译器知道我们在这里讨论模块 f32,而不是类型 f32.

  • 如果模块`f32`和类型`f32`默认冲突**,那实际上是糟糕的设计**,尽管这在Rust中甚至是禁止的! (4认同)