什么在Rust中意味着什么?

时间:2015-10-26 16:22:47

标签: syntax rust

Rust中::语法的含义如here所示:

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

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

2 个答案:

答案 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::usizeuse会添加要查看的项目集的路径。这就是您只需说usize::BITS即可逃脱的方法。 core crate是std crate的外观的实现细节,因此您只需将std替换为普通代码中的core

::也可用作指定泛型类型的方法,否则无法推断它们;这称为turbofish

另见:

答案 1 :(得分:2)

糟糕。我读的不是很清楚。在这种情况下,它只是在模块下引用任何东西的常规方式。似乎uint::BITS是常数。