rust_multistackvm/
multistackvm_alias.rs

1use crate::multistackvm::*;
2use easy_error::{bail, Error};
3
4impl VM {
5    pub fn register_alias(&mut self, alias: String, name: String) -> Result<&mut VM, Error> {
6        match self.unregister_alias(alias.clone()) {
7            Ok(_) => {
8                self.name_mapping.insert(alias, name.clone());
9            }
10            Err(err) => {
11                bail!("VM Alias unregistering returns error: {}", err);
12            }
13        }
14        Ok(self)
15    }
16
17    pub fn unregister_alias(&mut self, name: String) -> Result<&mut VM, Error> {
18        if self.name_mapping.contains_key(&name) {
19            self.name_mapping.remove(&name);
20        }
21        Ok(self)
22    }
23
24    pub fn is_alias(&mut self, name: String) -> bool {
25        if self.name_mapping.contains_key(&name) {
26            return true;
27        }
28        false
29    }
30
31    pub fn get_alias(&mut self, name: String) -> Result<String, Error> {
32        if self.name_mapping.contains_key(&name) {
33            return match self.name_mapping.get(&name) {
34                Some(aname) => Ok(aname.clone()),
35                None => bail!("VM Alias {} is registered, but not found.", &name),
36            };
37        }
38        bail!("VM Alias {} not registered", &name);
39    }
40
41}