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
//! # `type-level-logic`: Primitives for type-level logic in Rust
//!
//! This crate contains some useful primitive types and traits for writing type-level logic in
//! Rust. This includes signed and unsigned numbers implemented as balanced and unbalanced ternary
//! representations, as well as basic boolean logic. Planned features include SFINAE-style removal
//! of trait bounds using specialization.
//!
//! The `type-level-logic` crate forms the base for several other crates, all offering various
//! sorts of static verification. For example, the `tll-iterator` crate offers statically sized
//! iterators, which can be used to construct and convert between statically sized data structures
//! like those offered by the `tll-array` crate.
//!
//! SFINAE-like functionality will eventually be offered under the `weak` module, hence the
//! existence of the `strong` module.
//!
//! `type-level-logic` depends heavily on the [`type-operators`](https://crates.io/type-operators)
//! crate for defining type-level functionality. If you are interested in contributing, modifying,
//! or just plain curious, you should look at the `type-operators` crate to get a good idea of
//! what's going on.
//!
//! If questions are had, I may be found either at my email (which is listed on GitHub) or on the `#rust` IRC, where I go by
//! the nick `sleffy`.

#![cfg_attr(feature = "specialization", feature(specialization))]

#[macro_use]
extern crate type_operators;

pub mod types;
pub mod strong;

pub use strong::*;