Crate overflower_support

Source
Expand description

This defines some traits so we can replace ops with method calls of the respective traits (provided they’re in scope) without worrying about argument types (hopefully)

The traits are:

  • AddPanic, SubPanic, MulPanic, DivPanic, RemPanic, ShlPanic, ShrPanic, NegPanic
  • AddWrap, SubWrap, Mulwrap, DivWrap, RemWrap, ShlWrap, ShrWrap, NegWrap
  • AddSaturate, SubSaturate, MulSaturate

The *Panic traits all panic on overflow, the *Wrap traits wrap around and the *Saturate traits saturate.

Note: This needs a nightly compiler because it uses the specialization feature.

Traits§

AbsPanic
Compute the absolute value of self, panicking on overflow
AbsSaturate
Compute the absolute value of self, saturating on overflow
AbsWrap
Compute the absolute value of self, wrapping on overflow
AddAssignPanic
Add a value to a given value in-place, panicking on overflow
AddAssignWrap
Add a value to a given value in-place, wrapping on overflow
AddPanic
Add two values, panicking on overflow
AddSaturate
Add two values, saturating on overflow
AddWrap
Add two values, wrapping on overflow
DivAssignPanic
Divide this value by a given value in-place, panicking on overflow
DivAssignWrap
Divide a value by a given value in-place, wrapping on overflow
DivPanic
Divide two values, panicking on overflow
DivSaturate
Divide two values, saturating on overflow
DivWrap
Divide two values, wrapping on overflow
MulAssignPanic
Multiply a value with a given value in-place, panicking on overflow
MulAssignWrap
Multiply a value with a given value in-place, wrapping on overflow
MulPanic
Multiply two values, panicking on overflow
MulSaturate
Multiply two values, saturating on overflow
MulWrap
Multiply two values, wrapping on overflow
NegPanic
Negate a value, panic on overflow
NegSaturate
Negate a value, saturate on overflow
NegWrap
Negate a value, wrap on overflow
RemAssignPanic
Get the remainder of dividing this value by a given value in-place, panicking on overflow
RemAssignWrap
Divide a value to a given value, getting the remainder in-place, wrapping on overflow
RemPanic
Get the remainder of dividing one value by another, panicking on overflow
RemSaturate
Divide two values and get the remainder, saturating on overflow
RemWrap
Divide two values and get the remainder, wrapping on overflow
ShlAssignPanic
Shift left in place, panic if bits are shifted out of the value
ShlAssignSaturate
Shift left in place, set self to 0 if the number of bits shifted are higher than the width of the type
ShlAssignWrap
Shift left in place, set self to 0 if the number of bits shifted are higher than the width of the type
ShlPanic
Shift left, panic if bits are shifted out of the value
ShlSaturate
Shift left, return 0 if the number of bits shifted are higher than the width of the type
ShlWrap
Shift left, return 0 if the number of bits shifted are higher than the width of the type
ShrAssignPanic
Shift right in place, panic if the number of bits shifted are higher than the width of the type
ShrAssignSaturate
Shift right in place, set self to 0 if the number of bits shifted are higher than the width of the type
ShrAssignWrap
Shift right in place, set self to 0 if the number of bits shifted are higher than the width of the type
ShrPanic
Shift right, panic if the number of bits shifted are higher than the width of the type
ShrSaturate
Shift right, return 0 if the number of bits shifted are higher than the width of the type
ShrSaturateAssign
Shift right in place, set self to 0 if the number of bits shifted are higher than the width of the type
ShrWrap
Shift right, return 0 if the number of bits shifted are higher than the width of the type
SubAssignPanic
SUbtract a value from a given value in-place, panicking on overflow
SubAssignWrap
Subtract a value from a given value in-place, wrapping on overflow
SubPanic
Subtract two values, panicking on overflow
SubSaturate
Subtract two values, saturating on overflow
SubWrap
Subtract two values, wrapping on overflow