[][src]Crate ranged_num

ranged-num is a crate for representing a single number that is in some compile-time known range of values. You can use any underlying numeric type to hold the actual value. The main type to look at is Ranged.

Example:

use typenum::{N2, P3, P4};
use ranged_num::Ranged;

let ranged = Ranged::<N2, P4, isize>::new::<P3>();
assert_eq!(ranged.value(), 3);

Modules

reexports

These are used by a macro. In order for them to be accessible to the macro I re-exported them. If you know of a better way to do this, let me know.

Macros

define_ranged_enum

Define a new enum which can be convered to and from a Ranged usize.

Structs

Ranged

Holds a single value between Min and Max. That value is stored in a single variable of type Underlying.

Traits

AddU

typenum doesn't currently allow you to easily add an Integer with an Unsigned. The AddU trait lets you add some Unsigned to both Integers and Unsigneds.

CanMake

typenum doesn't currently allow you to easily specify any numbers (signed or unsigned) that can be converted to a given type. I've added CanMake<V> as a trait to indicate which types can easily make a runtime value of type V to use in type bounds.

Type Definitions

UZeroTo

Represent a usize in [0, Max] (inclusive).