#[derive(Debug, Clone)]
pub enum EventResult<A> {
Key(Option<A>),
Mouse(Option<A>),
Resize(Option<A>),
FocusGained(Option<A>),
FocusLost(Option<A>),
Unhandled,
}
impl<A> EventResult<A> {
pub fn action(&self) -> Option<&A> {
match self {
EventResult::Key(a)
| EventResult::Mouse(a)
| EventResult::Resize(a)
| EventResult::FocusGained(a)
| EventResult::FocusLost(a) => a.as_ref(),
EventResult::Unhandled => None,
}
}
pub fn has_action(&self) -> bool {
self.action().is_some()
}
pub fn into_action(self) -> Option<A> {
match self {
EventResult::Key(a)
| EventResult::Mouse(a)
| EventResult::Resize(a)
| EventResult::FocusGained(a)
| EventResult::FocusLost(a) => a,
EventResult::Unhandled => None,
}
}
}