simple-collections 0.1.0

Collection of simple collections
Documentation
#[derive(Debug)]
pub struct Stack<T> {
    stack: Vec<T>,
}

impl<T> Stack<T> {
    pub fn new() -> Self {
        Stack { stack: Vec::new() }
    }
    pub fn push(&mut self, val: T) {
        self.stack.push(val);
    }
    pub fn pop(&mut self) -> Option<T> {
        self.stack.pop()
    }
    pub fn size(&self) -> usize {
        self.stack.len()
    }
    pub fn empty(&self) -> bool {
        self.size() == 0
    }
}

#[cfg(test)]
mod tests {
    use super::*;
    fn test() {
        let mut s = Stack::new();
        assert_eq!(s.size(), 0);
        assert!(s.empty());
        assert_eq!(s.pop(), None);
        s.push(1);
        assert!(!s.empty());
        assert_eq!(s.size(), 1); 
        s.push(2);
        assert_eq!(s.size(), 2);
        s.push(3); 
        assert_eq!(s.size(), 3);
        assert_eq!(s.pop(), Some(3));
        assert_eq!(s.pop(), Some(2));
        assert_eq!(s.pop(), Some(1));
        assert_eq!(s.pop(), None);
        assert_eq!(s.size(), 0);
        assert!(s.empty());
    }
}