Rozważmy następujący kod:PI stała jest niejednoznaczna
fn main() {
let i = f32::consts::PI;
}
z następującym błędem:
$ 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
- Dlaczego narzekać na "wiązanego typu"? Jedyny typ, jaki widzę tutaj, to
f32
, który nie jest powiązany. - Dlaczego jest to jednoznaczne? Wyraźnie określiłem numer
f32
. - Co to jest składnia
<f32 as Trait>::consts
? Nigdy wcześniej tego nie widziałem. - I, oczywiście, co mogę zrobić, aby naprawić ten błąd i ustawić zmienną na PI?
błąd jest zaskakujący (i jest to błąd IMHO). Aby kod zadziałał, możesz podać 'std :: f32 :: consts :: PI' lub dodać użycie' std :: f32' –
Działa, dzięki! To rozwiązuje czwarte pytanie, a może nawet 1 i 2, jeśli naprawdę jest to błąd (który wygląda) – Kapichu
Zgłosiłem to jako problem https://github.com/rust-lang/rust/issues/26760, więc poszukiwacz Rusta może w to zaglądać. –