# 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 |