use ijvm::Result; #[derive(Debug)] pub struct Stack { pub data: Vec } impl Stack { pub fn new() -> Stack { Stack { data: Vec::new() } } // pub fn len(&self) -> usize { // return self.data.len(); // } pub fn top(&self) -> Result { Ok(match self.data.last() { Some(a) => *a, None => return Err("Stack empty"), }) } pub fn pop(&mut self) -> Result { Ok(match self.data.pop() { Some(a) => a, None => return Err("Stack empty"), }) } pub fn push(&mut self, val: i32) { self.data.push(val); } pub fn len(&self) -> usize { self.data.len() } }