Crate ternary [−] [src]
Kleene logic within Rust's type system
Values are True
, False
and Unknown
. Operations are Not
, BitAnd
and BitOr
from std::ops
. There is also the Ternary
enum which
represents the values at runtime and the ToTernary
trait that adds the
to_ternary()
methods to our value types.
Examples:
Same
and Not
type NotTrue = <<True as Not>::Output as Same<False>>::Output; type NotFalse = <<False as Not>::Output as Same<True>>::Output; type NotUnknown = <<Unknown as Not>::Output as Same<Unknown>>::Output;
Transforming Values to Runtime, BitAnd
and BitOr
assert_eq!(Ternary::T, <True as BitOr<<Unknown as BitAnd<False>>::Output>>::Output::to_ternary());
Enums
False |
Our False type value |
Ternary |
runtime representation |
True |
Our True type value |
Unknown |
Our Unknown type value |
Traits
Same |
shamelessly copied from typenum |
ToTernary |
conversion to runtime enum |