Macro event_consume

Source
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) };
    }
});