Rust中的::
语法(见here)是什么意思:
fn chunk(n: uint, idx: uint) -> uint {
let sh = uint::BITS - (SHIFT * (idx + 1));
(n >> sh) & MASK
}
在Haskell这样的语言中,它意味着类型提示,但在这里,编译器已经有了该值类型的注释,所以它似乎是类型转换.
Rust中的::
语法(见here)是什么意思:
fn chunk(n: uint, idx: uint) -> uint {
let sh = uint::BITS - (SHIFT * (idx + 1));
(n >> sh) & MASK
}
在Haskell这样的语言中,它意味着类型提示,但在这里,编译器已经有了该值类型的注释,所以它似乎是类型转换.
请复习The Rust Programming Language中的Appendix B: Operators and Symbols.
在这种情况下,双冒号(::
)是路径分隔符.Paths由crates、modules和items组成.
your example item, updated for 1.0的完整路径是:
std::usize::BITS
这里,std
是一个 crate ,usize
是一个模块,BITS
是一个特定的项目-在这种情况下是一个常数.
如果你在文件中向上滚动,你会看到use core::usize
.use
将路径添加到要查找的项目集.这就是你只说usize::BITS
就可以逃脱的方法.core
crate 是std
crate 外立面的一个实现细节,所以在普通代码中,您可以用std
代替core
.
::
还可用作指定泛型类型的一种方法,如果不能以其他方式推断泛型类型;这被称为turbofish.
另见: