我从byteorder中读取了以下语法:
rdr.read_u16::<BigEndian>()
字符串我找不到任何解释语法instance.method::<SomeThing>()的文档
instance.method::<SomeThing>()
z9gpfhce1#
这种结构被称为turbofish。如果你搜索这个语句,你会发现它的定义和用法。虽然第一版的《The Rust Programming Language》已经过时了,但我觉得this particular section比第二本书更好。引用第二版:path::<...>、method::<...>为表达式中的泛型类型、函数或方法指定参数;通常称为turbofish(例如"42".parse::<i32>())你可以在任何编译器不能推导类型参数的情况下使用它,例如。
path::<...>
method::<...>
"42".parse::<i32>()
fn main () { let a = (0..255).sum(); let b = (0..255).sum::<u32>(); let c: u32 = (0..255).sum(); }
字符串a不工作,因为它不能推导变量类型。b可以工作,因为我们直接用turbofish语法指定了类型参数。c可以工作,因为我们直接指定了c的类型。
a
b
c
1条答案
按热度按时间z9gpfhce1#
这种结构被称为turbofish。如果你搜索这个语句,你会发现它的定义和用法。
虽然第一版的《The Rust Programming Language》已经过时了,但我觉得this particular section比第二本书更好。
引用第二版:
path::<...>
、method::<...>
为表达式中的泛型类型、函数或方法指定参数;通常称为turbofish(例如
"42".parse::<i32>()
)你可以在任何编译器不能推导类型参数的情况下使用它,例如。
字符串
a
不工作,因为它不能推导变量类型。b
可以工作,因为我们直接用turbofish语法指定了类型参数。c
可以工作,因为我们直接指定了c
的类型。