use cordis::{CordisError, ErrorCode, PluginHandle};
pub trait PluginResolver: Send + Sync + 'static {
fn resolve(&self, name: &str) -> cordis::Result<PluginHandle>;
}
impl<F> PluginResolver for F
where
F: Fn(&str) -> cordis::Result<PluginHandle> + Send + Sync + 'static,
{
fn resolve(&self, name: &str) -> cordis::Result<PluginHandle> {
self(name)
}
}
pub fn unknown_plugin(name: &str) -> CordisError {
CordisError::with_message(
ErrorCode::MissingService,
format!("no plugin registered under the name `{name}`"),
)
}