use super::basic::{B0, B1, Z0, P1, N1, NonZero, NonNegOne};
use core::ops::Not;
impl Not for Z0 { type Output = N1;
fn not(self) -> Self::Output {
N1
}
}
impl Not for N1 { type Output = Z0;
fn not(self) -> Self::Output {
Z0
}
}
impl Not for P1 { type Output = B0<N1>;
fn not(self) -> Self::Output {
B0::new()
}
}
impl<H: NonZero + NonNegOne + Not> Not for B0<H> { type Output = B1<H::Output>;
fn not(self) -> Self::Output {
B1::new()
}
}
impl<H: NonZero+Not> Not for B1<H> { type Output = B0<H::Output>;
fn not(self) -> Self::Output {
B0::new()
}
}
impl Not for B0<N1> { type Output = P1;
fn not(self) -> Self::Output {
P1
}
}