Stabilize unchecked_{add,sub,mul}
by scottmcm · Pull Request #122520 · rust-lang/rust (original) (raw)
Tracking issue: #85122
I think we might as well just stabilize these basic three. They're the ones that have nuw
/nsw
flags in LLVM.
Notably, this doesn't include the potentially-more-complex or -more-situational things like unchecked_neg
or unchecked_shr
that are under different feature flags.
To quote Ralf #85122 (comment),
Are there any objections to stabilizing at least
unchecked_{add,sub,mul}
? For those there shouldn't be any surprises about what their safety requirements are.
Semantially these are already available on stable, even in const, via checked_*
+unreachable_unchecked
. So IMHO we might as well just let people write them directly, rather than try to go through a let Some(x) = x.checked_add(y) else { unsafe { hint::unreachable_unchecked() }};
dance.
I added additional text to each method to attempt to better describe the behaviour and encourage wrapping_*
instead.
r? rust-lang/libs-api