rust_multistackvm 0.38.0

Stack-based virtual machine on top of rust_multistack crate
Documentation
use crate::multistackvm::*;
use easy_error::{Error};

impl VM {
    pub fn push_stacks(&mut self, name: String) -> Result<&mut VM, Error> {
        self.stacks_stack.push_back(name);
        Ok(self)
    }

    pub fn pop_stacks(&mut self) -> Option<String> {
        if self.stacks_stack.len() > 1 {
            return self.stacks_stack.pop_back();
        } else {
            return self.peek_stacks();
        }
    }

    pub fn peek_stacks(&mut self) -> Option<String> {
        match self.stacks_stack.back() {
            Some(last_stack) => {
                return Some(last_stack.clone());
            }
            None => {
                return None;
            }
        }
    }

    pub fn clear_stacks(&mut self) -> bool {
        if self.stacks_stack.len() > 1 {
            match self.pop_stacks() {
                Some(last_stack) => {
                    self.stacks_stack.clear();
                    let _ = self.push_stacks(last_stack);
                }
                None => {
                    return false;
                }
            }
        }
        true
    }

}