# Module sp_arithmetic::traits

source · [−]## Expand description

Primitive traits for the runtime arithmetic.

## Traits

A meta trait for arithmetic.

A meta trait for arithmetic. Same as `AtLeast32Bit`

, but also bounded to be unsigned.

A meta trait for arithmetic type operations, regardless of any limitation on size.

Numbers which have upper and lower bounds

Performs addition that returns `None`

instead of wrapping around on
overflow.

Performs division that returns `None`

instead of panicking on division by zero and instead of
wrapping around on underflow and overflow.

Performs multiplication that returns `None`

instead of wrapping around on underflow or
overflow.

Performs negation that returns `None`

if the result can’t be represented.

Performs an integral remainder that returns `None`

instead of panicking on division by zero and
instead of wrapping around on underflow and overflow.

Performs a left shift that returns `None`

on shifts larger than
the type width.

Performs a right shift that returns `None`

on shifts larger than
the type width.

Performs subtraction that returns `None`

instead of wrapping around on underflow.

A trait implementing integer square root.

Defines a multiplicative identity element for `Self`

.

Convenience type to work around the highly unergonomic syntax needed
to invoke the functions of overloaded generic traits, in this case
`SaturatedFrom`

and `SaturatedInto`

.

Saturating arithmetic operations, returning maximum or minimum values instead of overflowing.

Useful functions for signed numbers (i.e. numbers that can be negative).

Just like `From`

except that if the source value is too big to fit into the destination type
then it’ll saturate the destination.

Just like `Into`

except that if the source value is too big to fit into the destination type
then it’ll saturate the destination.

A trait for values which cannot be negative

Defines an additive identity element for `Self`

.

## Functions

Raises a value to the power of exp, returning `None`

if an overflow occurred.