40 lines
738 B
Rust
40 lines
738 B
Rust
use ijvm::Result;
|
|
|
|
#[derive(Debug)]
|
|
pub struct Stack {
|
|
pub data: Vec<i32>
|
|
}
|
|
|
|
impl Stack {
|
|
pub fn new() -> Stack {
|
|
Stack {
|
|
data: Vec::new()
|
|
}
|
|
}
|
|
|
|
// pub fn len(&self) -> usize {
|
|
// return self.data.len();
|
|
// }
|
|
|
|
pub fn top(&self) -> Result<i32> {
|
|
Ok(match self.data.last() {
|
|
Some(a) => *a,
|
|
None => return Err("Stack empty"),
|
|
})
|
|
}
|
|
|
|
pub fn pop(&mut self) -> Result<i32> {
|
|
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()
|
|
}
|
|
} |