sprite-core 0.1.5

Sprite Engine — a fault-tolerant actor runtime for Rust
Documentation
use std::collections::HashMap;
use parking_lot::RwLock;

/// Named actor registry. Look up actors by human-readable names.
pub struct Registry {
    names: RwLock<HashMap<String, u64>>,
}

impl Registry {
    pub(crate) fn new() -> Self {
        Self { names: RwLock::new(HashMap::new()) }
    }
    pub(crate) fn register(&self, name: &str, id: u64) {
        self.names.write().insert(name.to_string(), id);
    }
    pub(crate) fn unregister(&self, name: &str) {
        self.names.write().remove(name);
    }
    pub fn lookup(&self, name: &str) -> Option<u64> {
        self.names.read().get(name).copied()
    }
    pub fn contains(&self, name: &str) -> bool {
        self.names.read().contains_key(name)
    }
    pub fn names(&self) -> Vec<String> {
        self.names.read().keys().cloned().collect()
    }
}

#[cfg(test)]
mod tests {
    use super::*;
    #[test]
    fn register_and_lookup() {
        let reg = Registry::new();
        reg.register("logger", 1);
        assert_eq!(reg.lookup("logger"), Some(1));
        assert!(reg.contains("logger"));
        reg.unregister("logger");
        assert!(!reg.contains("logger"));
    }
}