This library provides iterator-like utility methods like map,
fold, for_each, and etc., for tuples whose all elements are same
type(i.e. (T, T), (T, T, T), (T, T, T, T)...). If you want to map individual
elements of arbitrary tuples (T, U), (T, U, V)..., use
map_tuple.
extern crate tuple_map;
use tuple_map::*;
fn main() {
let (x, y) = (3, 4);
let (x, y) = (x, y).map(|a| a + 5);
assert_eq!(x, 8);
assert_eq!(y, 9);
let v = (3, 4, 5, 6).fold(vec![], |mut v, x| {
if x % 3 == 0 {
v.push(x);
}
v
});
assert_eq!(v, vec![3, 6]);
assert!((3, 3, 3).same());
assert_eq!((3, 4, 5).nth(1), Some(4));
assert_eq!((3, 4, 5).add(1, 2, 3), (4, 6, 8));
let a = (1, 2, 3);
let b = ("a", "b", "c");
assert_eq!(
a.zipf(b, |x, y| format!("{}{}", x, y)),
("1a", "2b", "3c").map(|x| x.to_owned())
);
assert_eq!(a.sum(), 6);
assert_eq!(a.tmax(), 3);
assert_eq!(a.tmin(), 1);
}