No description
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Daniel Baumann d2e13935ff
Releasing fastforward version 1.20.1-1~ffwd13+u1.
Signed-off-by: Daniel Baumann <daniel@debian.org>
2026-07-20 16:09:25 +02:00
debian Releasing fastforward version 1.20.1-1~ffwd13+u1. 2026-07-20 16:09:25 +02:00
src Merging upstream version 1.20.1. 2026-07-20 16:09:00 +02:00
tests Adding upstream version 1.20.0. 2026-07-20 16:08:28 +02:00
.cargo_vcs_info.json Merging upstream version 1.20.1. 2026-07-20 16:09:00 +02:00
.gitattributes Adding upstream version 1.20.0. 2026-07-20 16:08:28 +02:00
.gitignore Adding upstream version 1.20.0. 2026-07-20 16:08:28 +02:00
Cargo.lock Merging upstream version 1.20.1. 2026-07-20 16:09:00 +02:00
Cargo.toml Merging upstream version 1.20.1. 2026-07-20 16:09:00 +02:00
Cargo.toml.orig Merging upstream version 1.20.1. 2026-07-20 16:09:00 +02:00
CHANGELOG.md Merging upstream version 1.20.1. 2026-07-20 16:09:00 +02:00
LICENSE Adding upstream version 1.20.0. 2026-07-20 16:08:28 +02:00
LICENSE-APACHE Adding upstream version 1.20.0. 2026-07-20 16:08:28 +02:00
LICENSE-MIT Adding upstream version 1.20.0. 2026-07-20 16:08:28 +02:00
README.md Merging upstream version 1.20.1. 2026-07-20 16:09:00 +02:00

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, performing 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.

Error messages

Typenum's error messages aren't great, and can be difficult to parse. The good news is that the fine folks at Auxon have written a tool to help with it. Please take a look at tnfilt.

License

Licensed under either of

at your option.

Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.