Feature gate: #![feature(strict_overflow_ops)]
This is a tracking issue for doing arithmetic that is guaranteed to panic on overflow, see the ACP for more details: rust-lang/libs-team#270.
Public API
For both signed and unsigned integers:
pub const fn strict_add(self, rhs: Self) -> Self;
pub const fn strict_sub(self, rhs: Self) -> Self;
pub const fn strict_mul(self, rhs: Self) -> Self;
pub const fn strict_div(self, rhs: Self) -> Self;
pub const fn strict_div_euclid(self, rhs: Self) -> Self;
pub const fn strict_rem(self, rhs: Self) -> Self;
pub const fn strict_rem_euclid(self, rhs: Self) -> Self;
pub const fn strict_neg(self) -> Self;
pub const fn strict_shl(self, rhs: u32) -> Self;
pub const fn strict_shr(self, rhs: u32) -> Self;
pub const fn strict_pow(self, exp: u32) -> Self;
Additionally, signed integers have:
pub const fn strict_add_unsigned(self, rhs: $UnsignedT) -> Self;
pub const fn strict_sub_unsigned(self, rhs: $UnsignedT) -> Self;
pub const fn strict_abs(self) -> Self;
And unsigned integers have:
pub const fn strict_add_signed(self, rhs: $SignedT) -> Self;
Steps / History
Unresolved Questions
Feature gate:
#![feature(strict_overflow_ops)]This is a tracking issue for doing arithmetic that is guaranteed to panic on overflow, see the ACP for more details: rust-lang/libs-team#270.
Public API
For both signed and unsigned integers:
Additionally, signed integers have:
And unsigned integers have:
Steps / History
strict_overflow_ops#144682Unresolved Questions
strict_negon unsigned types? It's basically identical toassert_ne!(x, 0).strict_div,strict_rem,strict_div_euclidandstrict_rem_euclidon unsigned types? Those will never panic; they are identical to the non-strict versions.Footnotes
https://std-dev-guide.rust-lang.org/feature-lifecycle/stabilization.html ↩