Modules
A type-level array of type-level numbers.
Type-level bits.
Type aliases for many constants.
Type-level signed integers.
All of the marker traits used in typenum.
Aliases for the type operators used in this crate.
Their purpose is to increase the ergonomics of performing operations on the types defined
here. For even more ergonomics, consider using the
op! macro instead.Useful type operators that are not defined in
core::ops.Type-level unsigned integers.
Macros
Asserts that a type is
True, aka B1.Asserts that two types are the same.
cmpDeprecated
A convenience macro for comparing type numbers. Use
op! instead.Convenient type operations.
Create a new type-level arrray. Only usable on Rust 1.13.0 or newer.
Structs
The terminating type for type arrays.
The type-level bit 0.
The type-level bit 1.
A potential output from
Cmp, this is the type equivalent to the enum variant
core::cmp::Ordering::Equal.A potential output from
Cmp, this is the type equivalent to the enum variant
core::cmp::Ordering::Greater.A potential output from
Cmp, this is the type equivalent to the enum variant
core::cmp::Ordering::Less.Type-level signed integers with negative sign.
Type-level signed integers with positive sign.
TArr is a type that acts as an array of types. It is defined similarly to UInt, only its
values can be more than bits, and it is designed to act as an array. So you can only add two if
they have the same number of elements, for example.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.The terminating type for
UInt; it always comes after the most significant
bit. UTerm by itself represents zero, which is aliased to U0.The type-level signed integer 0.
Traits
A type operator that returns the absolute value.
The marker trait for compile time bits.
A type operator for comparing
Self and Rhs. It provides a similar functionality to
the function
core::cmp::Ord::cmp
but for types.The marker trait for compile time signed integers.
A type operator that returns
True if Self == Rhs, otherwise returns False.A type operator that returns
True if Self > Rhs, otherwise returns False.A type operator that returns
True if Self >= Rhs, otherwise returns False.A type operator that returns
True if Self < Rhs, otherwise returns False.A type operator that returns
True if Self <= Rhs, otherwise returns False.A type operator that returns
True if Self != Rhs, otherwise returns False.A type operator that gives the length of an
Array or the number of bits in a UInt.A type operator for taking the integer binary logarithm of
Self.A type operator that returns the maximum of
Self and Rhs.A type operator that returns the minimum of
Self and Rhs.A marker trait to designate that a type is not zero. All number types in this
crate implement
NonZero except B0, U0, and Z0.A Marker trait for the types
Greater, Equal, and Less.Division as a partial function. This type operator performs division just as
Div, but is
only defined when the result is an integer (i.e. there is no remainder).A type operator that provides exponentiation by repeated squaring.
The marker trait for type-level numbers which are a power of two.
A type operator that ensures that
Rhs is the same as Self, it is mainly useful
for writing macros that can take arbitrary binary or unary operators.A type operator for taking the integer square root of
Self.A type operator for taking a concrete integer value from a type.
The marker trait for type-level arrays of type-level numbers.
The marker trait for compile time unsigned integers.
A marker trait to designate that a type is zero. Only
B0, U0, and Z0
implement this trait.Type Definitions
Alias for the associated type of
Abs: AbsVal<A> = <A as Abs>::OutputAlias to make it easy to add 1:
Add1<A> = <A as Add<B1>>::OutputAlias for the associated type of
BitAnd: And<A, B> = <A as BitAnd<B>>::OutputAlias for the associated type of
Cmp: Compare<A, B> = <A as Cmp<B>>::OutputAlias to make it easy to cube.
Cube<A> = <Square<A> as Mul<A>>::OutputAlias for the associated type of
Sub: Diff<A, B> = <A as Sub<B>>::OutputAlias to make it easy to multiply by 2.
Double<A> = Shleft<A, B1>Alias for the associated type of
IsEqual: Eq<A, B> = <A as IsEqual<B>>::OutputAlias for the associated type of
Pow: Exp<A, B> = <A as Pow<B>>::OutputAlias for the associated type of
Gcd: Gcf<A, B> = <A as Gcd<B>>::Output>Alias for the associated type of
IsGreater: Gr<A, B> = <A as IsGreater<B>>::OutputAlias for the associated type of
IsGreaterOrEqual:
GrEq<A, B> = <A as IsGreaterOrEqual<B>>::OutputAlias for the associated type of
IsLess: Le<A, B> = <A as IsLess<B>>::OutputAlias for the associated type of
IsLessOrEqual: LeEq<A, B> = <A as IsLessOrEqual<B>>::OutputAlias for the associated type of
Len: Length<A> = <A as Len>::OutputAlias for the associated type of
Logarithm2: Log2<A> = <A as Logarithm2>::OutputAlias for the associated type of
Max: Maximum<A, B> = <A as Max<B>>::OutputAlias for the associated type of
Min: Minimum<A, B> = <A as Min<B>>::OutputAlias for the associated type of
Rem: Mod<A, B> = <A as Rem<B>>::OutputAlias for the associated type of
Neg: Negate<A> = <A as Neg>::OutputAlias for the associated type of
IsNotEqual: NotEq<A, B> = <A as IsNotEqual<B>>::OutputAlias for the associated type of
BitOr: Or<A, B> = <A as BitOr<B>>::OutputAlias for the associated type of
PartialDiv: PartialQuot<A, B> = <A as PartialDiv<B>>::OutputAlias for the associated type of
Mul: Prod<A, B> = <A as Mul<B>>::OutputAlias for the associated type of
Div: Quot<A, B> = <A as Div<B>>::OutputAlias for the associated type of
Shl: Shleft<A, B> = <A as Shl<B>>::OutputAlias for the associated type of
Shr: Shright<A, B> = <A as Shr<B>>::OutputAlias for the associated type of
SquareRoot: Sqrt<A> = <A as SquareRoot>::OutputAlias to make it easy to square.
Square<A> = <A as Mul<A>>::OutputAlias to make it easy to subtract 1:
Sub1<A> = <A as Sub<B1>>::OutputAlias for the associated type of
Add: Sum<A, B> = <A as Add<B>>::OutputAlias for the associated type of
BitXor: Xor<A, B> = <A as BitXor<B>>::Output