Provides many useful tools related to tuples
rust
let a = (1, 2, 3);
let b = a.map(|v| v * 3);
assert_eq!(b, (3, 6, 9));
rust
let a = (1, 2, 3, 4, 5);
let b = a.map3(|v| v * 5);
assert_eq!(b, (1, 2, 3, 20, 5));
rust
let t = (5, 6, 7);
let (a, b, c) = t.as_ref();
assert_eq!(*a, 5);
assert_eq!(*b, 6);
assert_eq!(*c, 7);
rust
let a = (&1, &2, &3);
let b = a.cloned();
assert_eq!(b, (1, 2, 3))
rust
let a = ((1, 2, 3), (4, 5, 6), (7, 8, 9));
let b = a.flatten();
assert_eq!(b, (1, 2, 3, 4, 5, 6, 7, 8, 9));
meta ```rust let a = (1, 2, 3, 4, 5); assert_eq!(a.arity(), 5);
let b = (); assert_eq!(b.arity(), 0); ```
rust
let a = (1, 2, 3)
.into_iter()
.map(|v| v * 3)
.collect_tuple::<tuple![3;]>();
let b: (i32, i32, i32) = (3, 6, 9);
assert_eq!(a, b);
rust
let a = (1, 2, 3)
.into_iter()
.map(|v| v * 3)
.try_collect_tuple::<tuple![3;]>();
let b: Option<(i32, i32, i32)> = Some((3, 6, 9));
assert_eq!(a, b);
rust
let a = (1, 2, 3)
.into_iter()
.map(|v| v * 3)
.collect_tuple_try::<tuple![3;]>();
let b: (Option<i32>, Option<i32>, Option<i32>) = (Some(3), Some(6), Some(9));
assert_eq!(a, b);
transpose ```rust let a = Some((1, 2, 3)).transpose(); assert_eq!(a, (Some(1), Some(2), Some(3)));
let b = (Some(1), Some(2), Some(3)).transpose();
asserteq!(b, Some((1, 2, 3)));
rust
let a: (Result
rust
let a: (Result
combin ```rust let a = (1, 2).push(3); assert_eq!(a, (1, 2, 3));
let b = (2, 1).left(3); assert_eq!(b, (3, 2, 1));
let c = (1, 2, 3).concat((4, 5, 6)); assert_eq!(c, (1, 2, 3, 4, 5, 6)) ```