rust - usos - La constante de PI es ambigua
usos del numero pi (2)
Considere el siguiente código:
fn main() {
let i = f32::consts::PI;
}
Con el siguiente error:
$ 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
- ¿Por qué se queja de un "tipo asociado"? El único tipo que veo aquí es
f32
, que no está asociado. - ¿Por qué es esto ambigioso? Claramente especifiqué el
f32
. - ¿Qué es esta
<f32 as Trait>::consts
sintaxis<f32 as Trait>::consts
? Nunca lo he visto antes. - Y, obviamente, ¿qué puedo hacer para corregir este error y configurar mi variable en PI?
¿Qué es esta
<f32 as Trait>::consts
sintaxis<f32 as Trait>::consts
? Nunca lo he visto antes.
Esto se denomina actualmente "sintaxis de llamada a la función universal" http://doc.rust-lang.org/stable/book/ufcs.html , pero estamos hablando de no volver a llamar así, ya que esto no es una función. .. Es más de una forma expandida, no ambigua.
Para resolver el problema, agregue use std::f32
o use std::f32::consts::PI
, para que el compilador sepa que estamos hablando del módulo f32
aquí, no del tipo f32
.