我从byteorder中阅读了以下语法:

rdr.read_u16::<BigEndian>()

我找不到任何解释语法instance.method::<SomeThing>()的文档

推荐答案

这种 struct 被称为turbofish.如果你搜索这个语句,你会发现它的定义和用法.

虽然The Rust Programming Language的第一版已经过时,但我觉得this particular sectionsecond book好.

引用第二版:

path::<...>method::<...>

您可以在编译器无法推断类型参数的任何情况下使用它,例如.

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.

Rust相关问答推荐

即使参数和结果具有相同类型,fn的TypId也会不同

通用池类型xsx

如何从polars DataFrame中获取一个列作为Option String?<>

如何在tauri—leptos应用程序中监听后端值的变化?""

这种获取-释放关系是如何运作的?

通过使用光标拖动角来绕其中心旋转矩形

有没有办法避免在While循环中多次borrow `*分支`

为什么这是&q;,而让&q;循环是无限循环?

有没有一种惯用的方法来判断VEC中是否存在变体?

如何将映射反序列化为具有与键匹配的字段的定制 struct 的向量?

AXUM一路由多个不包括URL的参数类型

Rust Option 的空显式泛型参数

如何处理闭包中的生命周期以及作为参数和返回类型的闭包?

没有明确地说return会产生错误:match arms have incompatible types

如何将这些测试放在一个单独的文件中?

Rust 函数指针似乎被borrow 判断器视为有状态的

Rust 中 `Option` 的内存开销不是常量

在 Rust 中返回对枚举变体的引用是个好主意吗?

有没有办法使用 NASM 语法进行内联汇编?

如何制作具有关联类型的特征的类型擦除版本?