Turbofish!
We'll cover the following...
Let’s go back to fruit. We can write static methods just as easily as normal methods. Behold, my new fruit!
Press + to interact
struct Fruit<T> {apples: T,bananas: T,}impl Fruit<i32> {fn new() -> Self {Fruit {apples: 5,bananas: 10,}}}fn main() {let fruit = Fruit::new();assert_eq!(fruit.apples, 5);assert_eq!(fruit.bananas, 10);println!("Success!");}
Pop quiz: what’s the type of the fruit
variable in main
? Given that we have an impl
block for a Fruit<i32>
, it seems a fair guess that the type is Fruit<i32>
. And you’d be right. But how did Rust know you wanted that? Why not give you a Fruit<String>
? That’s because there was only one static method on Fruit
available, called ...