PI常数不明确

时间:2015-07-03 13:49:56

标签: rust pi ambiguous

请考虑以下代码:

fn main() {
    let i = f32::consts::PI;
}

出现以下错误:

$ 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
  1. 为什么会抱怨“相关类型”?我在这里看到的唯一类型是f32,它与之无关。
  2. 为什么这个暧昧?我明确指出了f32
  3. 这个<f32 as Trait>::consts语法是什么?我以前从未见过它。
  4. 显然,我该怎么做才能修复此错误并将我的变量设置为PI?

2 个答案:

答案 0 :(得分:12)

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

答案 1 :(得分:4)

  

这个<f32 as Trait>::consts语法是什么?我以前从未见过它。

这是目前称为&#34;通用函数调用语法&#34; http://doc.rust-lang.org/stable/book/ufcs.html,但我们正在谈论不再称之为,因为这不是一个功能......它更像是一种扩展的,明确的形式。