eldek-tad 0.9.1

A project for learning Abstract Data Types (ADTs) in Rust. Heavily inspired by Java's implementation.
Documentation
#[cfg(test)]
mod test{
    use crate::queue::queue::Queue;
    use crate::queue::traits::queue_traits::QueueTrait;

    #[test]
    fn create(){
        let _queue:Queue<i16> = Queue::new();
    }

    #[test]
    fn create_from_vec(){
        let queue:Queue<i16> = Queue::from_vec(vec![1, 2, 3]);
        assert_eq!(3, queue.size())
    }

    #[test]
    fn enqueue(){
        let mut queue = Queue::new();
        queue.enqueue(1);
        assert_eq!(1, queue.size());
    }

    #[test]
    fn peek(){
        let mut queue = Queue::new();
        queue.enqueue(1);
        assert_eq!(&1, queue.peek().unwrap());
    }

    #[test]
    fn peek_mut(){
        let mut queue = Queue::new();
        queue.enqueue(1);
        assert_eq!(&1, queue.peek_mut().unwrap());
    }

    #[test]
    fn dequeue(){
        let mut queue = Queue::new();
        queue.enqueue(10);
        queue.enqueue(2);
        assert_eq!(10, queue.dequeue().unwrap());
        assert_eq!(1, queue.size());
    }

    #[test]
    fn dequeue_empty(){
        let mut queue: Queue<i16> = Queue::new();
        assert!(queue.dequeue().is_err());
    }

    #[test]
    fn peek_empty_panic(){
        let queue: Queue<i16> = Queue::new();
        assert!(queue.peek().is_err());
    }

    #[test]
    fn into_iter_order(){
        let mut queue = Queue::new();
        queue.enqueue(1);
        queue.enqueue(2);
        queue.enqueue(3);

        let collected: Vec<i32> = queue.into_iter().collect();
        assert_eq!(vec![1, 2, 3], collected);
    }

    #[test]
    fn into_iter_empty(){
        let queue: Queue<i32> = Queue::new();
        let collected: Vec<i32> = queue.into_iter().collect();
        assert_eq!(Vec::<i32>::new(), collected);
    }

    #[test]
    fn into_iter_consumes(){
        let mut queue = Queue::new();
        queue.enqueue(1);
        queue.enqueue(2);

        let mut iter = queue.into_iter();
        assert_eq!(Some(1), iter.next());
        assert_eq!(Some(2), iter.next());
        assert_eq!(None, iter.next());
    }

    #[test]
    fn into_iter_sum(){
        let mut queue = Queue::new();
        queue.enqueue(1);
        queue.enqueue(2);
        queue.enqueue(3);

        let sum: i32 = queue.into_iter().sum();
        assert_eq!(6, sum);
    }

    #[test]
    fn into_iter_consumes_list() {
        let mut queue = Queue::new();
        queue.enqueue(1);
        queue.enqueue(2);
        queue.enqueue(3);

        let mut iter = queue.into_iter();

        assert_eq!(iter.next(), Some(1));
        assert_eq!(iter.next(), Some(2));
        assert_eq!(iter.next(), Some(3));
        assert_eq!(iter.next(), None);
    }
}