pub trait Plugin { fn load(&self); } pub fn say_hello(name: String) { println!("Hello, {name}!"); } #[macro_export] macro_rules! plugin { ($plugin:tt) => { #[unsafe(no_mangle)] pub unsafe extern "Rust" fn provide_plugin() -> Box { Box::new($plugin) } }; }