Trait partial_const::Equals[][src]

pub trait Equals<T: MayBeConstAT>: MayBeConstAT<Type = T::Type> {
    type ConstSide: MayBeConst<T::Type>;
    fn get_const_side(&self, rhs: &T) -> Option<Self::ConstSide>;
}

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

Example

fn equal<A: partial_const::MayBeConst<u8>, B: partial_const::MayBeConst<u8>>(a: A, b: B) -> bool
    where A: partial_const::Equals<B> {
    a.value() == b.value()
}

assert!(equal(partial_const::ConstU8::<1>::new(), partial_const::ConstU8::<1>::new()));
assert!(equal(partial_const::ConstU8::<1>::new(), 1));
assert!(!equal(partial_const::ConstU8::<1>::new(), 2));
// assert!(equal(partial_const::ConstU8::<1>::new(), partial_const::ConstU8::<2>::new())); <- Compile Error

Associated Types

type ConstSide: MayBeConst<T::Type>[src]

The const side of two types.

Example

assert_eq!(<partial_const::ConstU16<0> as partial_const::Equals<partial_const::ConstU16<0>>>::ConstSide::default(), partial_const::ConstU16::<0>::new());
assert_eq!(<partial_const::ConstU16<0> as partial_const::Equals<u16>>::ConstSide::default(), partial_const::ConstU16::<0>::new());
assert_eq!(<u16 as partial_const::Equals<partial_const::ConstU16<0>>>::ConstSide::default(), partial_const::ConstU16::<0>::new());
assert_eq!(<u16 as partial_const::Equals<u16>>::ConstSide::default(), 0_u16);
Loading content...

Required methods

fn get_const_side(&self, rhs: &T) -> Option<Self::ConstSide>[src]

Return the const side value of two values if two values are equal.

Example

assert_eq!(ConstU32::<0>::new().get_const_side(&ConstU32::<0>::new()), Some(ConstU32::<0>::new()));
assert_eq!(ConstU32::<0>::new().get_const_side(&0_u32), Some(ConstU32::<0>::new()));
assert_eq!(0_u32.get_const_side(&ConstU32::<0>::new()), Some(ConstU32::<0>::new()));
assert_eq!(0_u32.get_const_side(&0_u32), Some(0_u32));

assert_eq!(ConstU32::<0>::new().get_const_side(&1_u32), None);
assert_eq!(1_u32.get_const_side(&ConstU32::<0>::new()), None);
assert_eq!(0_u32.get_const_side(&1_u32), None);
Loading content...

Implementations on Foreign Types

impl Equals<bool> for bool

type ConstSide = bool

impl<const VALUE: bool> Equals<Const<VALUE>> for bool[src]

type ConstSide = Const<VALUE>

impl Equals<usize> for usize[src]

type ConstSide = usize

impl<const VALUE: usize> Equals<Const<VALUE>> for usize[src]

type ConstSide = Const<VALUE>

impl Equals<isize> for isize[src]

type ConstSide = isize

impl<const VALUE: isize> Equals<Const<VALUE>> for isize[src]

type ConstSide = Const<VALUE>

impl Equals<i8> for i8[src]

type ConstSide = i8

impl<const VALUE: i8> Equals<Const<VALUE>> for i8[src]

type ConstSide = Const<VALUE>

impl Equals<i16> for i16[src]

type ConstSide = i16

impl<const VALUE: i16> Equals<Const<VALUE>> for i16[src]

type ConstSide = Const<VALUE>

impl Equals<i32> for i32[src]

type ConstSide = i32

impl<const VALUE: i32> Equals<Const<VALUE>> for i32[src]

type ConstSide = Const<VALUE>

impl Equals<i64> for i64[src]

type ConstSide = i64

impl<const VALUE: i64> Equals<Const<VALUE>> for i64[src]

type ConstSide = Const<VALUE>

impl Equals<i128> for i128[src]

type ConstSide = i128

impl<const VALUE: i128> Equals<Const<VALUE>> for i128[src]

type ConstSide = Const<VALUE>

impl Equals<u8> for u8[src]

type ConstSide = u8

impl<const VALUE: u8> Equals<Const<VALUE>> for u8[src]

type ConstSide = Const<VALUE>

impl Equals<u16> for u16[src]

type ConstSide = u16

impl<const VALUE: u16> Equals<Const<VALUE>> for u16[src]

type ConstSide = Const<VALUE>

impl Equals<u32> for u32[src]

type ConstSide = u32

impl<const VALUE: u32> Equals<Const<VALUE>> for u32[src]

type ConstSide = Const<VALUE>

impl Equals<u64> for u64[src]

type ConstSide = u64

impl<const VALUE: u64> Equals<Const<VALUE>> for u64[src]

type ConstSide = Const<VALUE>

impl Equals<u128> for u128[src]

type ConstSide = u128

impl<const VALUE: u128> Equals<Const<VALUE>> for u128[src]

type ConstSide = Const<VALUE>

impl Equals<char> for char[src]

type ConstSide = char

impl<const VALUE: char> Equals<Const<VALUE>> for char[src]

type ConstSide = Const<VALUE>

Loading content...

Implementors

impl<const VALUE: bool> Equals<bool> for partial_const::bool::Const<VALUE>[src]

type ConstSide = Const<VALUE>

impl<const VALUE: bool> Equals<Const<VALUE>> for partial_const::bool::Const<VALUE>[src]

type ConstSide = Const<VALUE>

impl<const VALUE: char> Equals<char> for partial_const::char::Const<VALUE>[src]

type ConstSide = Const<VALUE>

impl<const VALUE: char> Equals<Const<VALUE>> for partial_const::char::Const<VALUE>[src]

type ConstSide = Const<VALUE>

impl<const VALUE: i8> Equals<i8> for partial_const::i8::Const<VALUE>[src]

type ConstSide = Const<VALUE>

impl<const VALUE: i8> Equals<Const<VALUE>> for partial_const::i8::Const<VALUE>[src]

type ConstSide = Const<VALUE>

impl<const VALUE: i16> Equals<i16> for partial_const::i16::Const<VALUE>[src]

type ConstSide = Const<VALUE>

impl<const VALUE: i16> Equals<Const<VALUE>> for partial_const::i16::Const<VALUE>[src]

type ConstSide = Const<VALUE>

impl<const VALUE: i32> Equals<i32> for partial_const::i32::Const<VALUE>[src]

type ConstSide = Const<VALUE>

impl<const VALUE: i32> Equals<Const<VALUE>> for partial_const::i32::Const<VALUE>[src]

type ConstSide = Const<VALUE>

impl<const VALUE: i64> Equals<i64> for partial_const::i64::Const<VALUE>[src]

type ConstSide = Const<VALUE>

impl<const VALUE: i64> Equals<Const<VALUE>> for partial_const::i64::Const<VALUE>[src]

type ConstSide = Const<VALUE>

impl<const VALUE: i128> Equals<i128> for partial_const::i128::Const<VALUE>[src]

type ConstSide = Const<VALUE>

impl<const VALUE: i128> Equals<Const<VALUE>> for partial_const::i128::Const<VALUE>[src]

type ConstSide = Const<VALUE>

impl<const VALUE: isize> Equals<isize> for partial_const::isize::Const<VALUE>[src]

type ConstSide = Const<VALUE>

impl<const VALUE: isize> Equals<Const<VALUE>> for partial_const::isize::Const<VALUE>[src]

type ConstSide = Const<VALUE>

impl<const VALUE: u8> Equals<u8> for partial_const::u8::Const<VALUE>[src]

type ConstSide = Const<VALUE>

impl<const VALUE: u8> Equals<Const<VALUE>> for partial_const::u8::Const<VALUE>[src]

type ConstSide = Const<VALUE>

impl<const VALUE: u16> Equals<u16> for partial_const::u16::Const<VALUE>[src]

type ConstSide = Const<VALUE>

impl<const VALUE: u16> Equals<Const<VALUE>> for partial_const::u16::Const<VALUE>[src]

type ConstSide = Const<VALUE>

impl<const VALUE: u32> Equals<u32> for partial_const::u32::Const<VALUE>[src]

type ConstSide = Const<VALUE>

impl<const VALUE: u32> Equals<Const<VALUE>> for partial_const::u32::Const<VALUE>[src]

type ConstSide = Const<VALUE>

impl<const VALUE: u64> Equals<u64> for partial_const::u64::Const<VALUE>[src]

type ConstSide = Const<VALUE>

impl<const VALUE: u64> Equals<Const<VALUE>> for partial_const::u64::Const<VALUE>[src]

type ConstSide = Const<VALUE>

impl<const VALUE: u128> Equals<u128> for partial_const::u128::Const<VALUE>[src]

type ConstSide = Const<VALUE>

impl<const VALUE: u128> Equals<Const<VALUE>> for partial_const::u128::Const<VALUE>[src]

type ConstSide = Const<VALUE>

impl<const VALUE: usize> Equals<usize> for partial_const::usize::Const<VALUE>[src]

type ConstSide = Const<VALUE>

impl<const VALUE: usize> Equals<Const<VALUE>> for partial_const::usize::Const<VALUE>[src]

type ConstSide = Const<VALUE>

Loading content...