use std::rc::Rc;
use crate::app::{Application, WeakMain};
pub type Callback = Rc<Fn()>;
pub type CallbackArg<T> = Rc<Fn(T)>;
pub fn no_arg<A, H>(main: WeakMain<A>, handler: H) -> Callback
where
A: Application + 'static,
H: Fn() -> A::Message + 'static,
{
Rc::new(move || main.send_message(handler()))
}
pub fn with_arg<A, T, H>(main: WeakMain<A>, handler: H) -> CallbackArg<T>
where
A: Application + 'static,
H: Fn(T) -> A::Message + 'static,
{
Rc::new(move |value: T| main.send_message(handler(value)))
}