submap 0.3.6

B-Tree map for pub/sub services
Documentation
use crate::submap::SubMap;

#[derive(Debug, Default, Clone)]
pub struct AclMap {
    smap: SubMap<()>,
}

impl AclMap {
    #[inline]
    pub fn new() -> Self {
        let mut acl_map = Self::default();
        acl_map.smap.register_client(&());
        acl_map
    }
    #[inline]
    pub fn separator(mut self, separator: char) -> Self {
        self.smap = self.smap.separator(separator);
        self
    }
    #[inline]
    pub fn wildcard(mut self, wildcard: &str) -> Self {
        self.smap = self.smap.wildcard(wildcard);
        self
    }
    #[inline]
    pub fn match_any(mut self, match_any: &str) -> Self {
        self.smap = self.smap.match_any(match_any);
        self
    }
    #[inline]
    pub fn formula_prefix(mut self, formula_prefix: &str) -> Self {
        self.smap = self.smap.formula_prefix(formula_prefix);
        self
    }
    #[inline]
    pub fn regex_prefix(mut self, regex_prefix: &str) -> Self {
        self.smap = self.smap.regex_prefix(regex_prefix);
        self
    }
    #[inline]
    pub fn wildcard_multiple(mut self, wildcard_multiple: &[&str]) -> Self {
        self.smap = self.smap.wildcard_multiple(wildcard_multiple);
        self
    }
    #[inline]
    pub fn match_any_multiple(mut self, match_any_multiple: &[&str]) -> Self {
        self.smap = self.smap.match_any_multiple(match_any_multiple);
        self
    }
    #[inline]
    pub fn insert(&mut self, topic: &str) {
        self.smap.subscribe(topic, &());
    }
    #[inline]
    pub fn remove(&mut self, topic: &str) {
        self.smap.unsubscribe(topic, &());
    }
    #[inline]
    pub fn matches(&self, topic: &str) -> bool {
        self.smap.is_subscribed(topic)
    }
    #[inline]
    pub fn list(&self) -> Vec<&str> {
        self.smap.list_topics(&())
    }
    #[inline]
    pub fn is_empty(&self) -> bool {
        self.smap.is_empty()
    }
}