rust - 检查 Rust 中的整数溢出
问题描述
有没有一种规范的方法来显式检查 Rust 中的整数溢出?我用谷歌搜索,但找不到答案。
就像是:
match add_or_overflow(x, y) {
None => println!("overflow!"),
Some(z) => println!("{} + {} = {}", x, y, z),
}
或者:
let x = OverflowChecked<i32>(_x);
let y = OverflowChecked<i32>(_y);
match x + y {
OverflowChecked::Overflow => println!("overflow!"),
OverflowChecked::Value(z) => println!("{} + {} = {}", x, y, z),
}
我可以手动编写这个,因为 Rust 保证包装语义,但我只是检查没有一些标准的方法可以做到这一点。
解决方案
这些函数被命名为checked_[operator]
。参见checked_add
例如:
fn main() {
let x: u8 = 255;
let y: u8 = 1;
let z = x.checked_add(y);
assert_eq!(z, None);
}
推荐阅读
- python - 类型错误:create_superuser() 缺少 1 个必需的位置参数:“名称”
- javascript - 如何根据容器大小设置 maxResolution?
- python-3.x - TypeError:“生成器”对象在 python 中不可下标
- c# - LiveCharts 绘制 XY 值
- angularjs - IBM Single Sign On Service 是否允许使用 JWT 令牌?
- joomla3.0 - 微风形式的年龄计算
- python - 在 python 的 shell 文件中使用路径作为参数
- javascript - 从更新中排除 NPM 包
- python - 使用 Azure Databricks 将 JSON 转换为 CSV
- view - 奥利奥 - 视图布局管理已更改?