为什么`128u8.checked_shl(1)`返回`Some(0)`?

时间:2016-06-16 13:32:34

标签: rust integer-overflow

我的印象是整数类型的.checked_*(_)方法可以帮助避免溢出。但是,.checked_shl(u32)方法很乐意转移出上面示例的最后一点。

我的印象错了吗?那个 for 的方法是什么?

(还想添加它以避免轮班溢出,可以检查((~0) >> rhs) >= self至少是否为无符号类型)

1 个答案:

答案 0 :(得分:5)

因为它仅检查班次金额。来自docs

  如果None大于或等于rhs中的位数,则

self

因此,通过设计,它可以让你移出位,它只是不允许你使用无效的移位量(或者,它允许你,但你得到None)。