tuple-iter 0.1.0

Generate iterator types for tuples of items implementing the same trait
Documentation
#[test]
fn test() {
    trait Foo {
        fn call_shared(&self) -> i32;

        fn call_mut(&mut self) -> i32;
    }

    struct A(i32);
    impl Foo for A {
        fn call_shared(&self) -> i32 {
            self.0
        }

        fn call_mut(&mut self) -> i32 {
            -self.0
        }
    }

    struct B(i32);
    impl Foo for B {
        fn call_shared(&self) -> i32 {
            self.0
        }

        fn call_mut(&mut self) -> i32 {
            -self.0
        }
    }

    let mut tuple = (A(1), B(2), A(3));

    let iter = tuple_iter::iter!(tuple, (Foo; 3));
    let vec: Vec<i32> = iter.map(|foo| foo.call_shared()).collect();
    assert_eq!(vec, vec![1, 2, 3]);

    let iter = tuple_iter::iter_mut!(tuple, (Foo; 3));
    let vec: Vec<i32> = iter.map(|foo| foo.call_mut()).collect();
    assert_eq!(vec, vec![-1, -2, -3]);

    let iter = tuple_iter::iter!(tuple, (Foo; 3));
    let vec: Vec<i32> = iter.map(|foo| foo.call_shared()).collect();
    assert_eq!(vec, vec![1, 2, 3]);
}