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
相关推荐
古城小栈6 分钟前
Rust 网络请求库:reqwest
开发语言·网络·rust
JavaGuide8 分钟前
SpringBoot 官宣停止维护 3.2.x~3.4.x!
java·后端
hqwest25 分钟前
码上通QT实战12--监控页面04-绘制6个灯珠及开关
开发语言·qt·qpainter·qt事件·stackedwidget
i橡皮擦31 分钟前
TheIsle恐龙岛读取游戏基址做插件(C#语言)
开发语言·游戏·c#·恐龙岛·theisle
Victor35637 分钟前
Hibernate(39)Hibernate中如何使用拦截器?
后端
Victor35640 分钟前
Hibernate(40)Hibernate的命名策略是什么?
后端
bing.shao1 小时前
golang 做AI任务执行
开发语言·人工智能·golang
Knight_AL1 小时前
Spring 事务管理:为什么内部方法调用事务不生效以及如何解决
java·后端·spring
WaterRun1 小时前
一个由Rust实现的, 好得多的Windows tree命令: tree++项目简介
rust·github
bcbnb1 小时前
iOS代码混淆技术深度实践:从基础到高级全面解析
后端