Crate tuplify

Source
Expand description

§Tuplify

Crate link Documentation License

Utility library that facilitates the use of tuples as generic arguments.

See individual Traits for features implementation and detailled examples.

§Examples

§Tuples

use tuplify::*;

assert_eq!((1, 2).push_back(3), (1, 2, 3));

assert_eq!((Some(1), Some(2), Some(3)).validate(), Some((1, 2, 3)));

assert_eq!((Some(1), Some(2), None::<i32>).validate(), None);

assert_eq!((1, 2).extend((3, 4)), (1, 2, 3, 4));

assert_eq!((1, 2, 3, 4).pop_back(), (4, (1, 2, 3)));

assert_eq!((1, 2, 3, 4).uncons(), (1, (2, 3, 4)));

§Heterogenous list

use tuplify::*;

assert_eq!(hcons![1, 2].push_back(3), hcons![1, 2, 3]);

assert_eq!(hcons![Some(1), Some(2), Some(3)].validate(), Some(hcons![1, 2, 3]));

assert_eq!(hcons![Ok(1), Ok(2), Err::<u32, _>("oh no")].validate(), Err("oh no"));

assert_eq!(hcons![1, 2].extend(hcons![3, 4]), hcons![1, 2, 3, 4]);

assert_eq!(hcons![1, 2, 3, 4].pop_back(), (4, hcons![1, 2, 3]));

assert_eq!(hcons![1, 2, 3, 4].uncons(), (1, hcons![2, 3, 4]));

§Contribution

Found a problem or have a suggestion? Feel free to open an issue.

Macros§

HCons
Constructs an HCons type.
count_tokens
Helper macro that counts the number of tokens passed to it.
hcons
Constructs an HCons value.
hcons_pat
Constructs a pattern matching HCons values.

Structs§

HCons
Heterogeneous List.
HEmpty
The empty HCons.

Enums§

Never
a type that can never be instantiated
NeverList
the never list

Traits§

AsMuts
Turns a mutable reference into an heterogeneous list of mutable references.
AsRefs
Turns a reference to an heterogenous list into a list of references.
Extend
Concatenate 2 heterogenous lists, extending self with Other
Fun
Helper trait to use heterogenous lists as arguments for Fns.
FunMut
Helper trait to use heterogenous lists as arguments for FnMuts.
FunOnce
Helper trait to use heterogenous lists as arguments for FnOnces.
HList
Heterogenous fixed size (aka: compile time) list.
IntoHCons
Trait for converting a heterogeneous list into a HCons list.
IntoOpts
Trait for wrapping each element of an heterogenous list in Some.
IntoTuple
Utility trait used to convert something into a crate::Tuple.
PopBack
Removes the element at the back of the list
PopBackExt
Removes the element at the back of the list
PushBack
Adds an element at the end of the list
PushFront
Adds an element at the begining of the list
Reverse
Reversible heterogeneous list.
TryPopBack
Removes the element at the back of the list
TryUncons
Removes the list front element if the list is empty, returns None
TryValidateOpt
Try to convert a list of Somes to a list of the inner values.
TryValidateRes
Trait used for the conversion of a list of Oks to a list of the inner values.
Tuple
Identifier for tuple types
Uncons
Removes the list front element
UnconsExt
Extension trait for types implementing Uncons.
UnconsOpt
Removes the list front element.
Unpack
Unpacks heterogeneous lists containing exactly one element.
ValidateOpt
Convert a list of Options to an option of the inner elements.
ValidateRes
Convert a list of Results to an option of the inner elements.