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