diff --git a/src/common/stack.rs b/src/common/stack.rs index d4d1bf3..fc1e289 100644 --- a/src/common/stack.rs +++ b/src/common/stack.rs @@ -50,7 +50,13 @@ impl StackWithLimit where T: Clone { pub fn top(&self) -> Result<&T, Error> { self.values .back() - .ok_or(Error("non-empty stack expected".into())) + .ok_or_else(|| Error("non-empty stack expected".into())) + } + + pub fn top_mut(&mut self) -> Result<&mut T, Error> { + self.values + .back_mut() + .ok_or_else(|| Error("non-empty stack expected".into())) } pub fn get(&self, index: usize) -> Result<&T, Error> { @@ -73,7 +79,7 @@ impl StackWithLimit where T: Clone { pub fn pop(&mut self) -> Result { self.values .pop_back() - .ok_or(Error("non-empty stack expected".into())) + .ok_or_else(|| Error("non-empty stack expected".into())) } pub fn resize(&mut self, new_size: usize, dummy: T) {