Rust中的::
语法是什么意思
fn chunk(n: uint, idx: uint) -> uint {
let sh = uint::BITS - (SHIFT * (idx + 1));
(n >> sh) & MASK
}
在像Haskell这样的语言中,它意味着一个类型提示,但是在这里编译器已经有了一个该值类型的注释,所以看起来它很可能是类型转换。
最佳答案
请查看Rust编程语言的Appendix B: Operators and Symbols。
在本例中,双冒号(::
)是路径分隔符。Paths由板条箱、模块和物品组成。
your example item, updated for 1.0的完整路径是:
std::usize::BITS
这里,
std
是一个板条箱,usize
是一个模块,BITS
是一个特定的项目-在本例中是一个常数。如果在文件中向上滚动,您将看到
use core::usize
。use
将路径添加到要查找的项集。这就是你只需说usize::BITS
就可以逃脱的方法。core
板条箱是façade的一个实现细节,即std
板条箱,因此您可以在正常代码中用std
替换core
。::
还可以用作指定泛型类型的方法,否则无法推断泛型类型;这称为turbofish。另见:
What is the syntax: `instance.method::<SomeThing>()`?