dsalgo 0.3.10

A package for Datastructures and Algorithms.
Documentation
pub struct Stack<T>(Vec<T>);

impl<T> Stack<T> {
    pub fn size(&self) -> usize {
        self.0.len()
    }

    pub fn new() -> Self {
        Self(vec![])
    }

    pub fn push(
        &mut self,
        x: T,
    ) {
        self.0.push(x)
    }

    pub fn pop(&mut self) -> T {
        self.0.pop().unwrap()
    }

    pub fn top(&mut self) -> &T {
        self.0.last().unwrap()
    }

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

#[cfg(test)]

mod tests {

    use super::*;

    #[test]

    fn test() {
        let mut st = Stack::new();

        st.push(3);

        st.push(2);

        assert_eq!(st.size(), 2);

        assert_eq!(st.top(), &2);

        assert_eq!(st.size(), 2);

        assert_eq!(st.pop(), 2);

        assert_eq!(st.size(), 1);
    }
}