typenum::uint - Rust
Description: Type-level unsigned integers.
Keywords: rust, rustlang, rust-lang, uint

# Module typenum::uint

source ·
Expand description

Type-level unsigned integers.

Type operators implemented:

From `::core::ops`: `BitAnd`, `BitOr`, `BitXor`, `Shl`, `Shr`, `Add`, `Sub`, `Mul`, `Div`, and `Rem`. From `typenum`: `Same`, `Cmp`, and `Pow`.

Rather than directly using the structs defined in this module, it is recommended that you import and use the relevant aliases from the consts module.

## Example

    use std::ops::{Add, BitAnd, BitOr, BitXor, Div, Mul, Rem, Shl, Shr, Sub};
    use typenum::{Unsigned, U1, U2, U3, U4};

    assert_eq!(<U3 as BitAnd<U2>>::Output::to_u32(), 2);
    assert_eq!(<U3 as BitOr<U4>>::Output::to_u32(), 7);
    assert_eq!(<U3 as BitXor<U2>>::Output::to_u32(), 1);
    assert_eq!(<U3 as Shl<U1>>::Output::to_u32(), 6);
    assert_eq!(<U3 as Shr<U1>>::Output::to_u32(), 1);
    assert_eq!(<U3 as Add<U2>>::Output::to_u32(), 5);
    assert_eq!(<U3 as Sub<U2>>::Output::to_u32(), 1);
    assert_eq!(<U3 as Mul<U2>>::Output::to_u32(), 6);
    assert_eq!(<U3 as Div<U2>>::Output::to_u32(), 1);
    assert_eq!(<U3 as Rem<U2>>::Output::to_u32(), 1);

## Re-exports

`pub use crate::marker_traits::PowerOfTwo;`
`pub use crate::marker_traits::Unsigned;`

## Structs

UInt
`UInt` is defined recursively, where `B` is the least significant bit and `U` is the rest of the number. Conceptually, `U` should be bound by the trait `Unsigned` and `B` should be bound by the trait `Bit`, but enforcing these bounds causes linear instead of logrithmic scaling in some places, so they are left off for now. They may be enforced in future.
UTerm
The terminating type for `UInt`; it always comes after the most significant bit. `UTerm` by itself represents zero, which is aliased to `U0`.

## Traits

GetBit
SetBit
A type operator that, when implemented for unsigned integer `N`, sets the bit at position `I` to `B`.

## Type Definitions

GetBitOut
SetBitOut
Alias for the result of calling `SetBit`: `SetBitOut<N, I, B> = <N as SetBit<I, B>>::Output`.