use crate::primitive::{Variant, VariantMap}; #[derive(Clone, Debug, std::cmp::PartialEq)] pub struct AliasManager { pub aliases: Vec, } #[derive(Clone, Debug, std::cmp::PartialEq)] pub struct Alias { name: String, expansion: String, } impl AliasManager { /// Client to Server /// /// Replaces all properties of the object with the content of the /// "properties" parameter. This parameter is in network representation. /// fn request_update(self: &mut Self, properties: VariantMap) { self.update(properties); } /// Server to Client fn add_alias(self: &mut Self, name: String, expansion: String) { self.aliases.push(Alias { name, expansion }); } /// Server to Client /// /// Replaces all properties of the object with the content of the /// "properties" parameter. This parameter is in network representation. /// fn update(self: &mut Self, properties: VariantMap) { let mut alias: Vec = Vec::new(); // for (i, name) in match_variant!(properties[&"Aliases".to_string()], Variant::String) { // alias.push(Alias { // name, // expansion: match_variant!(properties["Aliases"], Variant::String)["expansions"][i], // }) // } self.aliases = alias } }