Rust中::
语法的含义如here所示:
fn chunk(n: uint, idx: uint) -> uint {
let sh = uint::BITS - (SHIFT * (idx + 1));
(n >> sh) & MASK
}
在像Haskell这样的语言中,它意味着一个类型提示,但是这里的编译器已经有了这个值类型的注释,所以它似乎很可能是类型转换。
答案 0 :(得分:15)
请查看 The Rust Programming Language 的Appendix B: Operators and Symbols。
在这种情况下,双冒号(::
)是路径分隔符。 Paths由 crates , modules 和 items 组成。
your example item, updated for 1.0的完整路径是:
std::usize::BITS
此处,std
是包,usize
是模块,BITS
是特定项目 - 在这种情况下是常量。
如果向上滚动文件,则会看到use core::usize
。 use
会添加要查看的项目集的路径。这就是您只需说usize::BITS
即可逃脱的方法。 core
crate是std
crate的外观的实现细节,因此您只需将std
替换为普通代码中的core
。
::
也可用作指定泛型类型的方法,否则无法推断它们;这称为turbofish。
另见:
答案 1 :(得分:2)
糟糕。我读的不是很清楚。在这种情况下,它只是在模块下引用任何东西的常规方式。似乎uint::BITS
是常数。