I read the below syntax from byteorder:
rdr.read_u16::()
I can\'t find any documentation which explains the syntax i
This construct is called turbofish. If you search for this statement, you will discover its definition and its usage.
Although the first edition of The Rust Programming Language is outdated, I feel that this particular section is better than in the second book.
Quoting the second edition:
path::<...>
,method::<...>
Specifies parameters to generic type, function, or method in an expression; often referred to as turbofish (e.g.,"42".parse::<i32>()
)
You can use it in any kind of situation where the compiler is not able to deduce the type parameter, e.g.
fn main () {
let a = (0..255).sum();
let b = (0..255).sum::<u32>();
let c: u32 = (0..255).sum();
}
a
does not work because it cannot deduce the variable type.
b
does work because we specify the type parameter directly with the turbofish syntax.
c
does work because we specify the type of c
directly.