:: 在 Rust 中是什么意思?

What does :: mean in Rust?

here 所示,Rust 中的 :: 语法是什么意思:

fn chunk(n: uint, idx: uint) -> uint {
    let sh = uint::BITS - (SHIFT * (idx + 1));
    (n >> sh) & MASK
}

在像Haskell这样的语言中,它意味着类型提示,但这里的编译器已经有了该值类型的注释,所以看起来很可能是类型转换。

糟糕。我没有看得很清楚。在这种情况下,它只是引用模块下任何内容的正常方式。 uint::BITS似乎是一个常数。

请复习 Appendix B: Operators and SymbolsRust 编程语言


在这种情况下,双冒号 (::) 是路径分隔符。 Pathscratesmodulesitems.

组成

your example item, updated for 1.0 的完整路径是:

std::usize::BITS

这里,std 是箱子,usize 是模块,BITS 是具体的项目——在本例中是常量。

如果向上滚动文件,您会看到 use core::usizeuse 将路径添加到要查看的项目集。这就是您只需说 usize::BITS 就可以逃脱的方法。 core crate 是 std crate 外观的实现细节,因此您可以在普通代码中用 std 替换 core


:: 也可以用作在无法以其他方式推断泛型类型时指定泛型类型的方法;这叫做 turbofish.

另请参阅: