event.rs
1use std::fmt::Debug;
2
3use std::any::Any;
4
5pub struct AbstractEvent {
6 inner: Box<Any>,
7}
8
9impl AbstractEvent {
10 pub fn new<E: Event>(event: E) -> AbstractEvent {
11 AbstractEvent {
12 inner: Box::new(event),
13 }
14 }
15
16 pub fn downcast<E: Event + 'static>(&self) -> Option<&E> {
17 self.inner.downcast_ref::<E>()
18 }
19
20 pub fn is<E: Event + 'static>(&self) -> bool {
21 self.inner.is::<E>()
22 }
23}
24
25pub trait Event: Any + Debug {}