use std::collections::HashMap;
use super::PluginStep;
#[allow(dead_code)]
pub struct PluginRegistry {
plugins: HashMap<String, Box<dyn PluginStep>>,
}
#[allow(dead_code)]
impl PluginRegistry {
pub fn new() -> Self {
Self {
plugins: HashMap::new(),
}
}
pub fn register(&mut self, plugin: Box<dyn PluginStep>) {
let name = plugin.name().to_string();
self.plugins.insert(name, plugin);
}
pub fn get(&self, name: &str) -> Option<&dyn PluginStep> {
self.plugins.get(name).map(|b| b.as_ref())
}
pub fn len(&self) -> usize {
self.plugins.len()
}
pub fn is_empty(&self) -> bool {
self.plugins.is_empty()
}
}
impl Default for PluginRegistry {
fn default() -> Self {
Self::new()
}
}