Expand description

This crate provides two types of bounded integer.

Macro-generated bounded integers

The bounded_integer! macro allows you to define your own bounded integer type, given a specific range it inhabits. For example:

bounded_integer! {
    struct MyInteger { 0..8 }
}
let num = MyInteger::new(5).unwrap();
assert_eq!(num, 5);

This macro supports both structs and enums. See the examples module for the documentation of generated types.

Const generics-based bounded integers

You can also create ad-hoc bounded integers via types in this library that use const generics, for example:

let num = <BoundedU8<0, 7>>::new(5).unwrap();
assert_eq!(num, 5);

These integers are shorter to use as they don’t require a type declaration or explicit name, and they interoperate better with other integers that have different ranges. However due to the limits of const generics, they do not implement some traits like Default.

no_std

All the integers in this crate depend only on libcore and so work in #![no_std] environments.

Crate Features

By default, no crate features are enabled.

Modules

Examples of bounded integers generated by the bounded_integer! macro.

Macros

Generate a bounded integer type.

Structs

An i8 constrained to be in the range MIN..=MAX.

An i16 constrained to be in the range MIN..=MAX.

An i32 constrained to be in the range MIN..=MAX.

An i64 constrained to be in the range MIN..=MAX.

An i128 constrained to be in the range MIN..=MAX.

An isize constrained to be in the range MIN..=MAX.

An u8 constrained to be in the range MIN..=MAX.

An u16 constrained to be in the range MIN..=MAX.

An u32 constrained to be in the range MIN..=MAX.

An u64 constrained to be in the range MIN..=MAX.

An u128 constrained to be in the range MIN..=MAX.

An usize constrained to be in the range MIN..=MAX.

An error which can be returned when parsing a bounded integer.

Enums

The cause of the failure to parse the integer.