可以定义一个变量在算术运算上总是饱和吗?

问题描述 投票:0回答:1

我有一个变量,我对其进行了很多算术运算。

我的代码是这样的:

let a: u32 = 3;
let res = (a*2) - 42

a
太低时我添加了溢出,所以我不得不使用
saturating_sub()
来解决问题:

let a: u32 = 3;
let res = (a * 2).saturating_sub(42);

这确实工作得很好,但是

saturating_sub
的可读性比
-
稍差。

因为我有很多这样的操作,并且在每种情况下,我都希望

a
饱和。我想知道是否可以定义
a
应该始终饱和
。并且不要将每个
-
替换为
saturate_sub

rust integer-overflow
1个回答
0
投票

这是

std::num::Saturating
,但是它只实现与其他
Saturating
的操作,而不是底层原语:

let a: u32 = Saturating(3);
let res = (a * Saturating(2)) - Saturating(42);
© www.soinside.com 2019 - 2024. All rights reserved.