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

```rust use tuplify::*;

asserteq!((1, 2).pushback(3), (1, 2, 3));

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

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

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

asserteq!((1, 2, 3, 4).popback(), (4, (1, 2, 3)));

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

Heterogenous list

```rust use tuplify::*;

asserteq!(hcons![1, 2].pushback(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::("oh no")].validate(), Err("oh no"));

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

asserteq!(hcons![1, 2, 3, 4].popback(), (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.