neato 0.1.1

Neato package of useful tools.
Documentation
pub struct Queue<T> {
    items: Vec<T>,
}

impl<T> Queue<T> {
    pub fn new() -> Self {
        Queue { items: Vec::new() }
    }

    pub fn size(&self) -> usize {
        self.items.len()
    }

    pub fn enqueue(&mut self, item: T) {
        self.items.push(item)
    }

    pub fn dequeue(&mut self) -> Option<T> {
        if self.items.len() == 0 {
            None
        } else {
            Some(self.items.remove(0))
        }
    }

    pub fn is_empty(&self) -> bool {
        return self.size() == 0;
    }

    pub fn front(&self) -> Option<&T> {
        self.items.first()
    }
}

#[cfg(test)]
mod tests {
    use super::*;

    #[test]
    fn test_enqueue() {
        let mut q = Queue::<i32>::new();
        q.enqueue(1);
        q.enqueue(2);
        assert_eq!(q.size(), 2);
        assert_eq!(q.front(), Some(&1));
    }

    #[test]
    fn test_dequeue() {
        let mut q = Queue::<i32>::new();
        q.enqueue(1);
        q.enqueue(2);
        assert_eq!(q.dequeue(), Some(1));
        assert_eq!(q.size(), 1);
        assert_eq!(q.front(), Some(&2));
        assert_eq!(q.dequeue(), Some(2));
        assert_eq!(q.size(), 0);
        assert_eq!(q.front(), (None));
    }
}