6 stable releases

1.1.4 May 3, 2023
1.0.3 Apr 8, 2023

#1658 in Rust patterns

40 downloads per month
Used in 2 crates

BSD-3-Clause

58KB
780 lines

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.

No runtime deps