pub trait Digit: Add<Output = Self> + Sub<Output = Self> + Mul<Output = Self> + Rem<Output = Self> + Shl<usize, Output = Self> + Shr<usize, Output = Self> + BitOr<Output = Self> + BitOrAssign + BitAnd<Output = Self> + PartialEq + Ord + Copy + Default + Debug {
    const BYTE_LEN: usize;
    const ONE: Self;
    const ZERO: Self;
Show 14 methods // Required methods fn nlz(self) -> usize; fn bit(&self, idx: usize) -> bool; fn size() -> usize; fn is_zero(self) -> bool; fn is_odd(self) -> bool; fn carry_add(self, rhs: Self, carry: bool) -> (Self, bool); fn overflow_add(self, rhs: Self) -> (Self, bool); fn borrow_sub(self, rhs: Self, carry: bool) -> (Self, bool); fn overflow_sub(self, rhs: Self) -> (Self, bool); fn carry_mul(self, rhs: Self, carry: Self) -> (Self, Self); fn widen_mul(self, rhs: Self) -> (Self, Self); fn overflow_mul(self, rhs: Self) -> (Self, bool); fn from_bool(b: bool) -> Self; fn set_bit(self, idx: usize, b: bool) -> Self;
}

Required Associated Constants§

source

const BYTE_LEN: usize

source

const ONE: Self

source

const ZERO: Self

Required Methods§

source

fn nlz(self) -> usize

number of leading zeros

source

fn bit(&self, idx: usize) -> bool

source

fn size() -> usize

byte size

source

fn is_zero(self) -> bool

source

fn is_odd(self) -> bool

source

fn carry_add(self, rhs: Self, carry: bool) -> (Self, bool)

carrying add

source

fn overflow_add(self, rhs: Self) -> (Self, bool)

overflowing add

source

fn borrow_sub(self, rhs: Self, carry: bool) -> (Self, bool)

source

fn overflow_sub(self, rhs: Self) -> (Self, bool)

source

fn carry_mul(self, rhs: Self, carry: Self) -> (Self, Self)

source

fn widen_mul(self, rhs: Self) -> (Self, Self)

source

fn overflow_mul(self, rhs: Self) -> (Self, bool)

source

fn from_bool(b: bool) -> Self

source

fn set_bit(self, idx: usize, b: bool) -> Self

Implementations on Foreign Types§

source§

impl Digit for u32

source§

const ONE: Self = 1u32

source§

const ZERO: Self = 0u32

source§

const BYTE_LEN: usize = 4usize

source§

fn nlz(self) -> usize

source§

fn size() -> usize

source§

fn is_zero(self) -> bool

source§

fn is_odd(self) -> bool

source§

fn bit(&self, idx: usize) -> bool

source§

fn carry_add(self, rhs: Self, carry: bool) -> (Self, bool)

source§

fn overflow_add(self, rhs: Self) -> (Self, bool)

source§

fn borrow_sub(self, rhs: Self, carry: bool) -> (Self, bool)

source§

fn overflow_sub(self, rhs: Self) -> (Self, bool)

source§

fn carry_mul(self, rhs: Self, carry: Self) -> (Self, Self)

source§

fn overflow_mul(self, rhs: Self) -> (Self, bool)

source§

fn from_bool(b: bool) -> Self

source§

fn widen_mul(self, rhs: Self) -> (Self, Self)

source§

fn set_bit(self, idx: usize, b: bool) -> Self

source§

impl Digit for u8

source§

const ONE: Self = 1u8

source§

const ZERO: Self = 0u8

source§

const BYTE_LEN: usize = 1usize

source§

fn nlz(self) -> usize

source§

fn size() -> usize

source§

fn is_zero(self) -> bool

source§

fn is_odd(self) -> bool

source§

fn bit(&self, idx: usize) -> bool

source§

fn carry_add(self, rhs: Self, carry: bool) -> (Self, bool)

source§

fn overflow_add(self, rhs: Self) -> (Self, bool)

source§

fn borrow_sub(self, rhs: Self, carry: bool) -> (Self, bool)

source§

fn overflow_sub(self, rhs: Self) -> (Self, bool)

source§

fn carry_mul(self, rhs: Self, carry: Self) -> (Self, Self)

source§

fn overflow_mul(self, rhs: Self) -> (Self, bool)

source§

fn from_bool(b: bool) -> Self

source§

fn widen_mul(self, rhs: Self) -> (Self, Self)

source§

fn set_bit(self, idx: usize, b: bool) -> Self

source§

impl Digit for u16

source§

const ONE: Self = 1u16

source§

const ZERO: Self = 0u16

source§

const BYTE_LEN: usize = 2usize

source§

fn nlz(self) -> usize

source§

fn size() -> usize

source§

fn is_zero(self) -> bool

source§

fn is_odd(self) -> bool

source§

fn bit(&self, idx: usize) -> bool

source§

fn carry_add(self, rhs: Self, carry: bool) -> (Self, bool)

source§

fn overflow_add(self, rhs: Self) -> (Self, bool)

source§

fn borrow_sub(self, rhs: Self, carry: bool) -> (Self, bool)

source§

fn overflow_sub(self, rhs: Self) -> (Self, bool)

source§

fn carry_mul(self, rhs: Self, carry: Self) -> (Self, Self)

source§

fn overflow_mul(self, rhs: Self) -> (Self, bool)

source§

fn from_bool(b: bool) -> Self

source§

fn widen_mul(self, rhs: Self) -> (Self, Self)

source§

fn set_bit(self, idx: usize, b: bool) -> Self

source§

impl Digit for u64

source§

const ONE: Self = 1u64

source§

const ZERO: Self = 0u64

source§

const BYTE_LEN: usize = 8usize

source§

fn nlz(self) -> usize

source§

fn size() -> usize

source§

fn is_zero(self) -> bool

source§

fn is_odd(self) -> bool

source§

fn bit(&self, idx: usize) -> bool

source§

fn carry_add(self, rhs: Self, carry: bool) -> (Self, bool)

source§

fn overflow_add(self, rhs: Self) -> (Self, bool)

source§

fn borrow_sub(self, rhs: Self, carry: bool) -> (Self, bool)

source§

fn overflow_sub(self, rhs: Self) -> (Self, bool)

source§

fn carry_mul(self, rhs: Self, carry: Self) -> (Self, Self)

source§

fn widen_mul(self, rhs: Self) -> (Self, Self)

source§

fn overflow_mul(self, rhs: Self) -> (Self, bool)

source§

fn from_bool(b: bool) -> Self

source§

fn set_bit(self, idx: usize, b: bool) -> Self

Implementors§