Crate bounded_integer[−][src]
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.
macro: Enable thebounded_integer!macro.types: Enable the bounded integer types that use const generics.serde: ImplementSerializeandDeserializefor the bounded integers, making sure all values will never be out of bounds.step_trait: Implement theSteptrait which allows the bounded integers to be easily used in ranges. This will require you to use nightly and place#![feature(step_trait)]in your crate root if you use the macro.
Modules
Examples of bounded integers generated by the bounded_integer! macro.
Macros
macroGenerate a bounded integer type.
Structs
typesAn
i8
constrained to be in the range MIN..=MAX.
typesAn
i16
constrained to be in the range MIN..=MAX.
typesAn
i32
constrained to be in the range MIN..=MAX.
typesAn
i64
constrained to be in the range MIN..=MAX.
typesAn
i128
constrained to be in the range MIN..=MAX.
typesAn
isize
constrained to be in the range MIN..=MAX.
typesAn
u8
constrained to be in the range MIN..=MAX.
typesAn
u16
constrained to be in the range MIN..=MAX.
typesAn
u32
constrained to be in the range MIN..=MAX.
typesAn
u64
constrained to be in the range MIN..=MAX.
typesAn
u128
constrained to be in the range MIN..=MAX.
typesAn
usize
constrained to be in the range MIN..=MAX.