1[![crates.io](https://img.shields.io/crates/v/typenum.svg)](https://crates.io/crates/typenum)
2[![Build Status](https://travis-ci.org/paholg/typenum.svg?branch=master)](https://travis-ci.org/paholg/typenum)
3
4Typenum
5=====
6
7Typenum is a Rust library for type-level numbers evaluated at compile time. It currently
8supports bits, unsigned integers, and signed integers.
9
10Typenum depends only on libcore, and so is suitable for use on any platform!
11
12For the full documentation, go [here](https://docs.rs/typenum).
13
14### Importing
15
16While `typenum` is divided into several modules, they are all re-exported through the crate root,
17so you can import anything contained herein with `use typenum::whatever;`, ignoring the
18crate structure.
19
20You may also find it useful to treat the `consts` module as a prelude, perfoming a glob import.
21
22### Example
23
24Here is a trivial example of `typenum`'s use:
25
26```rust
27use typenum::{Sum, Exp, Integer, N2, P3, P4};
28
29type X = Sum<P3, P4>;
30assert_eq!(<X as Integer>::to_i32(), 7);
31
32type Y = Exp<N2, P3>;
33assert_eq!(<Y as Integer>::to_i32(), -8);
34```
35
36For a non-trivial example of its use, see one of the crates that depends on it. The full
37list is [here](https://crates.io/crates/typenum/reverse_dependencies). Of note are
38[dimensioned](https://crates.io/crates/dimensioned/) which does compile-time type
39checking for arbitrary unit systems and
40[generic-array](https://crates.io/crates/generic-array/) which provides arrays whose
41length you can generically refer to.
42
43