diff --git a/src/tls/acme/types.rs b/src/tls/acme/types.rs index 199abf1..dcc4be7 100644 --- a/src/tls/acme/types.rs +++ b/src/tls/acme/types.rs @@ -9,10 +9,10 @@ pub struct DnsBackendPlugin { inventory::collect!(DnsBackendPlugin); -static PROVIDERS: LazyLock>> = LazyLock::new(|| { +static FACTORIES: LazyLock Box>> = LazyLock::new(|| { let mut map = HashMap::new(); for plugin in inventory::iter:: { - map.insert(plugin.name, (plugin.factory)()); + map.insert(plugin.name, plugin.factory); } map }); @@ -24,9 +24,9 @@ pub trait DnsProvider: Send + Sync { async fn delete_txt_record(&self, record_id: &str, record_name: &str) -> Result<(), Box>; } -pub fn get_provider(provider: String) -> &'static dyn DnsProvider { - PROVIDERS +pub fn get_provider(provider: String) -> Box { + FACTORIES .get(provider.as_str()) - .map(|boxed| boxed.as_ref()) - .unwrap_or_else(|| panic!("Unknown DNS provider '{}'. Available providers: {:?}", provider, PROVIDERS.keys().collect::>())) + .map(|factory| factory()) + .unwrap_or_else(|| panic!("Unknown DNS provider '{}'. Available providers: {:?}", provider, FACTORIES.keys().collect::>())) }