ternary

Crates.ioternary
lib.rsternary
version0.1.3
sourcesrc
created_at2015-12-18 10:51:28.057112
updated_at2015-12-18 15:19:24.68307
descriptionKleene Logic within Rust's type system
homepage
repositoryhttps://github.com/llogiq/ternary
max_upload_size
id3700
size7,680
(llogiq)

documentation

https://llogiq.github.io/ternary/doc/ternary/index.html

README

Kleene logic within Rust's type system

Build Status Current Version License: MIT

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.

For more information read the API documentation

Examples:

Same and Not

 use ternary::{True, False, Unknown, Same};
 use std::ops::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());

To use it, add ternary = "0.1.0" to your dependencies.

Commit count: 14

cargo fmt