1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
/// Type-level enum of [`True`] and [`False`].
pub trait Bit {
/// Result of negation of bit
type Neg: Bit;
/// Real value of type.
fn val() -> bool;
}
/// Type-level True value, [`Bit`].
#[derive(Debug)]
pub struct True;
/// Type-level False value, [`Bit`].
#[derive(Debug)]
pub struct False;
// /// Default [`Bit`] for filling gaps ([`False`]).
// #[allow(clippy::module_name_repetitions)]
// pub type FillBit = False;
impl Bit for True {
type Neg = False;
fn val() -> bool {
true
}
}
impl Bit for False {
type Neg = True;
fn val() -> bool {
false
}
}