Skip to main content

link_cli/sequences/
default_stack.rs

1#[derive(Clone, Debug)]
2pub struct DefaultStack<T> {
3    items: Vec<T>,
4}
5
6impl<T> Default for DefaultStack<T> {
7    fn default() -> Self {
8        Self { items: Vec::new() }
9    }
10}
11
12impl<T> DefaultStack<T> {
13    pub fn new() -> Self {
14        Self::default()
15    }
16
17    pub fn push(&mut self, item: T) {
18        self.items.push(item);
19    }
20
21    pub fn pop(&mut self) -> Option<T> {
22        self.items.pop()
23    }
24
25    pub fn len(&self) -> usize {
26        self.items.len()
27    }
28
29    pub fn is_empty(&self) -> bool {
30        self.items.is_empty()
31    }
32}