Crate partial_const[][src]

This library provides a way to handle constant and non-constant values in a unified way. This library takes both flexibilities to take dynamic values and (partial) parameter checking by the compiler.

Example

fn maybe_one<T: partial_const::MayBeConst<i32>>(i: T) -> bool
    where T: partial_const::Equals<partial_const::ConstI32<1>> {
//  where T: partial_const::Equals<partial_const::i32::Const<1>> { <- Alternative
    i.value() == 1i32
}

assert!(maybe_one(partial_const::ConstI32::<1>::new()));
assert!(maybe_one::<partial_const::ConstI32<1>>(partial_const::ConstI32::new()));
assert!(maybe_one::<i32>(1));
assert!(!maybe_one::<i32>(2));
// assert!(maybe_one(partial_const::ConstI32::<2>::new())); <- Compile Error

Modules

bool

module for bool

char

module for char

i8

module for i8

i16

module for i16

i32

module for i32

i64

module for i64

i128

module for i128

isize

module for isize

u8

module for u8

u16

module for u16

u32

module for u32

u64

module for u64

u128

module for u128

usize

module for usize

Traits

Equals

A trait for putting equality constraints on constants. It will be implemented if the constants are equal.

MayBeConst

A trait for handling constant and non-constant values in a common way

MayBeConstAT

A trait MayBeConst by associated type for internal trait bounds.

Type Definitions

ConstBool

See bool::Const

ConstChar

See char::Const

ConstI8

See i8::Const

ConstI16

See i16::Const

ConstI32

See i32::Const

ConstI64

See i64::Const

ConstI128

See i128::Const

ConstIsize

See isize::Const

ConstU8

See u8::Const

ConstU16

See u16::Const

ConstU32

See u32::Const

ConstU64

See u64::Const

ConstU128

See u128::Const

ConstUsize

See usize::Const