Compile time numbers in Rust.
Clone or download
Latest commit 11b5193 Nov 8, 2018
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
build Cleanup Jun 20, 2018
src fix windows paths Oct 24, 2018
tests Add associated constants to marker traits (#95) Mar 11, 2018
.gitignore Run everything through rustfmt and clippy Apr 22, 2016
.travis.yml Cleanup Jun 20, 2018
CHANGELOG.md Cleanup Jun 20, 2018
Cargo.toml Add associated constants to marker traits (#95) Mar 11, 2018
LICENSE Add license Sep 25, 2015
README.md Various cleanups (#94) Mar 10, 2018

README.md

crates.io Build Status

Typenum

Typenum is a Rust library for type-level numbers evaluated at compile time. It currently supports bits, unsigned integers, and signed integers.

Typenum depends only on libcore, and so is suitable for use on any platform!

For the full documentation, go here.

Importing

While typenum is divided into several modules, they are all re-exported through the crate root, so you can import anything contained herein with use typenum::whatever;, ignoring the crate structure.

You may also find it useful to treat the consts module as a prelude, perfoming a glob import.

Example

Here is a trivial example of typenum's use:

use typenum::{Sum, Exp, Integer, N2, P3, P4};

type X = Sum<P3, P4>;
assert_eq!(<X as Integer>::to_i32(), 7);

type Y = Exp<N2, P3>;
assert_eq!(<Y as Integer>::to_i32(), -8);

For a non-trivial example of its use, see one of the crates that depends on it. The full list is here. Of note are dimensioned which does compile-time type checking for arbitrary unit systems and generic-array which provides arrays whose length you can generically refer to.