terrors/
lib.rs

1#![cfg_attr(
2    feature = "error_provide_feature",
3    feature(error_generic_member_access)
4)]
5#![doc = include_str!(concat!(env!("CARGO_MANIFEST_DIR"), "/README.md"))]
6
7#[doc = include_str!(concat!(env!("CARGO_MANIFEST_DIR"), "/README.md"))]
8#[cfg(doctest)]
9pub struct ReadmeDoctests;
10
11mod one_of;
12mod one_of_to_enum;
13mod type_set;
14
15/// Similar to anonymous unions / enums in languages that support type narrowing.
16pub use one_of::OneOf;
17
18pub use type_set::{TypeSet, E1, E2, E3, E4, E5, E6, E7, E8, E9};
19
20/* ------------------------- Helpers ----------------------- */
21
22/// The final element of a type-level Cons list.
23#[doc(hidden)]
24#[derive(Debug)]
25pub enum End {}
26
27impl std::error::Error for End {}
28
29/// A compile-time list of types, similar to other basic functional list structures.
30#[doc(hidden)]
31#[derive(Debug)]
32pub struct Cons<Head, Tail>(core::marker::PhantomData<Head>, Tail);
33
34#[doc(hidden)]
35#[derive(Debug)]
36pub struct Recurse<Tail>(Tail);