Rust安全之数值

文章目录

数值溢出

编译通过,运行失败

cargo run 1

rust 复制代码
fn main() {
    let mut arg = std::env::args()
        .skip(1)
        .map(|x| x.parse::<i32>().unwrap())
        .next()
        .unwrap();
    let m_i = i32::MAX - 1;
    let a = m_i + arg;

    println!("{:?}", a);
}
bash 复制代码
thread 'main' panicked at 'attempt to add with overflow', src\bin\rssh3.rs:13:13
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
error: process didn't exit successfully: `target\debug\rssh3.exe 1` (exit code: 101)

编译不通过

rust 复制代码
fn main() {
    let m_i = i32::MAX;
    let a = m_i + 1;

    println!("{:?}", a);
}

输出

bash 复制代码
error: this arithmetic operation will overflow
 --> src\bin\rssh3.rs:9:13
  |
9 |     let a = m_i + 1;
  |             ^^^^^^^ attempt to compute `i32::MAX + 1_i32`, which would overflow
  |
  = note: `#[deny(arithmetic_overflow)]` on by default

warning: `datetime-util` (bin "rssh3") generated 4 warnings
error: could not compile `datetime-util` due to previous error; 4 warnings emitted
相关推荐
幼稚诠释青春几秒前
面试实例题
java·开发语言
JohnYan2 分钟前
Bun技术评估 - 05 SQL
javascript·后端·bun
weixin_457665393 分钟前
C++11新标准
开发语言·c++
阿蒙Amon4 分钟前
C#封装HttpClient:HTTP请求处理最佳实践
开发语言·http·c#
喵个咪10 分钟前
开箱即用的GO后台管理系统 Kratos Admin - 后端权限控制
后端·go·api
用户67570498850216 分钟前
如何判断两张图片的相似度?原来图片对比也可以如此简单!
后端
轻松Ai享生活17 分钟前
超越可观察性:使用 eBPF 修改系统调用行为
后端
大白爱琴21 分钟前
使用python进行图像处理—像素级操作与图像算术(4)
开发语言·图像处理·python
一眼万年0422 分钟前
Kafka ReplicaManager 深度解析:副本管理的核心引擎
后端
梁凌锐25 分钟前
重构手法——代码健壮性增强类 | 防御性编程 | 引入断言
后端