Expand description

Crates.io docs.rs GitHub license Rust

Utility library for dealing with arithmetic on type limits by upcasting into types with higher limits.

Examples

Without upcast_arithmetic (panics)

let a = u8::MAX;
let b = 2u8;

let modulo = u8::MAX;

let res = (a + b) % modulo;
assert_eq!(res, 2);

With upcast_arithmetic

use upcast_arithmetic::*;

let a = u8::MAX;
let b = 2u8;

let modulo = u8::MAX;

let res = a.upcast_add_mod(b, modulo);
assert_eq!(res, 2);

Performance

The performance overhead is very small. In benchmarks it seems like there is only a neglegible performance penelty, compared to assuming no overflow occurs.

no_std

The crate is fully #![no_std] compatible.

Unsafe

There is no unsafe code and the flag #![deny(unsafe_code)] is set.

Modules

utilities for performing upcast arithmetic in const.

Traits

Performs checked addition. Maps directly to the integers checked_add method. (i.e. u8::checked_add) Consult the docs of the primitive methods to learn more.

Performs checked multiplication. Maps directly to the integers checked_mul method. (i.e. u8::checked_mul) Consult the docs of the primitive methods to learn more.

Performs checked power. Maps directly to the integers checked_pow method. (i.e. u8::checked_pow) Consult the docs of the primitive methods to learn more.

Performs checked substraction. Maps directly to the integers checked_sub method. (i.e. u8::checked_sub) Consult the docs of the primitive methods to learn more.

Trait for the one value of a type.

Performs power (self ^ exp). Maps directly to the underlaying integer method.

Performs upcasting to type with higher (and/or lower) limits.

Trait to implement upcast add. (Casting up when type bounds are hit during arithmetic)

Trait to implement upcast mul. (Casting up when type bounds are hit during arithmetic)

Trait to perform upcast pow. (Casting up when type bounds are hit during arithmetic)

Trait to implement upcast sub. (Casting up when type bounds are hit during arithmetic)