use crate::{Event, LoggerLevel, Window};
macro_rules! define_handler {
(
$(
$(#[$attr:meta])*
$name:ident: ($($arg:ty),*) $(-> $ret:ty)?
);* $(;)?
) => {
$(
$(#[$attr])*
pub trait $name: Fn($($arg),*) $(-> $ret)? + Send + Sync + 'static {}
impl<T> $name for T where T: Fn($($arg),*) $(-> $ret)? + Send + Sync + 'static {}
)*
};
}
define_handler! {
CloseHandler: (&Window) -> bool;
EventHandler: (&Event);
FileHandlerWindow: (&Window, &str) -> Option<String>;
LoggerHandler: (LoggerLevel, &str)
}