macro_rules! event_consume {
( < $ty:ty > $callback:expr $(,)? ) => { ... };
( $ty:ty , $callback:expr $(,)? ) => { ... };
( | $arg:ident : Option<& $ty:ty > | $body:expr $(,)? ) => { ... };
( $callback:expr $(,)? ) => { ... };
}Expand description
Macro to wrap an event callback.
Generates a RawEventConsume wrapper around the passed callback.
ยงUsage
let event_callback = event_consume!(|data: Option<&i32>| {
use nexus::log::{log, LogLevel};
log(LogLevel::Info, "My Addon", format!("received event with data {data:?}"));
});
let event_callback = event_consume!(<i32> |data| {
use nexus::log::{log, LogLevel};
log(LogLevel::Info, "My Addon", format!("received event with data {data:?}"));
});fn event_callback(data: Option<&i32>) {
use nexus::log::{log, LogLevel};
log(LogLevel::Info, "My Addon", format!("Received event with data {data:?}"));
}
let event_callback = event_consume!(<i32> event_callback);Note that the payload type corresponds to the pointee in Nexus documentation. If you are interested in the pointer itself, you have to cast the obtained reference back to a pointer:
use std::ffi::{c_char, CStr};
let event_callback = event_consume!(<c_char> |data| {
if let Some(data) = data {
let ptr = data as *const c_char;
let c_str = unsafe { CStr::from_ptr(ptr) };
}
});