Crate overflower_support [−] [src]
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 |
AbsSaturate |
Compute the absolute value of |
AbsWrap |
Compute the absolute value of |
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 |