2015-02-02 14 views
6

Un modo che conosco è quello di fornire le annotazioni di tipo a Rust è dichiarando una variabile intermedia in modo che il compilatore conosce il tipo di ritorno:Come posso fornire annotazioni di tipo in linea quando si chiama una funzione non generica?

use std::num::Int 
let max_usize: usize = Int::max_value(); 
println!("Max usize: {}", max_usize); 

Ma come posso fornire il tipo di annotazione "in linea"?

Per esempio, non mi aspetto la seguente al lavoro non modificato perché non c'è nessun tipo di annotazione a tutti, ma questo è il genere di cosa che sto cercando:

use std::num::Int 
println!("Max usize: {}", Int::max_value()); 

ho provato Int::max_value::<usize>(), che dà error: too many type parameters provided: expected at most 0 parameter(s), found 1 parameter(s) - e questo ha senso perché max_value() non è generico.

In Scala vorrei scrivere myFunction(someDog: Animal) invece di scrivere

val someAnimal: Animal = someDog 
myFunction(someAnimal) 

C'è sintassi equivalente a Rust?

risposta

4

Come così:

fn main() { 
    use std::num::Int; 
    println!("Max usize: {}", <usize as Int>::max_value()); 
} 
Problemi correlati