#[derive(Debug)]
pub struct Error {
pub message: String,
}
impl std::fmt::Display for Error {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
write!(f, "{}", self.message)
}
}
impl std::error::Error for Error {}
impl Error {
pub fn new(message: impl Into<String>) -> Self {
Self { message: message.into() }
}
}
pub trait InitProvider {
fn on_init(&self) -> Result<(), Error>;
}
#[macro_export]
macro_rules! register_lifecycle_init {
($plugin_type:ty) => {
#[extism_pdk::plugin_fn]
pub fn nd_on_init(
) -> extism_pdk::FnResult<()> {
let plugin = <$plugin_type>::default();
$crate::lifecycle::InitProvider::on_init(&plugin)?;
Ok(())
}
};
}