orx-iterable 1.3.0

Defines and implements Iterable, Collection and CollectionMut traits to represent types that can be iterated over multiple times.
Documentation
mod common_testers;
mod custom_iterables;
use common_testers::test_col;
use std::collections::{LinkedList, VecDeque};

#[test]
fn std_collections() {
    let values = || vec![1, 3, 7];

    test_col(values(), [1, 3, 7]);
    test_col(values(), vec![1, 3, 7]);
    test_col(values(), VecDeque::from_iter([1, 3, 7].into_iter()));
    test_col(values(), LinkedList::from_iter([1, 3, 7].into_iter()));

    test_col(vec![10], Some(10));
    test_col(vec![], None);

    test_col(vec![10], Result::<_, String>::Ok(10));
    test_col(vec![], Result::<_, String>::Err("error".to_string()));
}

#[test]
fn custom_collection() {
    let col = custom_iterables::EvensThenOddsCol {
        evens: vec![4, 12, 8, 2],
        odds: vec![1, 7],
    };

    test_col(vec![4, 12, 8, 2, 1, 7], col);
}

// obj

#[cfg(feature = "std")]
#[test]
fn obj_std_collections() {
    use common_testers::obj_test_col;

    let values = || vec![1, 3, 7];

    obj_test_col(values(), &[1, 3, 7]);
    obj_test_col(values(), &vec![1, 3, 7]);
    obj_test_col(values(), &VecDeque::from_iter([1, 3, 7].into_iter()));
    obj_test_col(values(), &LinkedList::from_iter([1, 3, 7].into_iter()));
}

#[cfg(feature = "std")]
#[test]
fn obj_custom_collection() {
    use common_testers::obj_test_col;

    let col = custom_iterables::EvensThenOddsCol {
        evens: vec![4, 12, 8, 2],
        odds: vec![1, 7],
    };

    obj_test_col(vec![4, 12, 8, 2, 1, 7], &col);

    obj_test_col(vec![10], &Some(10));
    obj_test_col(vec![], &None);

    obj_test_col(vec![10], &Result::<_, String>::Ok(10));
    obj_test_col(vec![], &Result::<_, String>::Err("error".to_string()));
}