Skip to main content

aionbot_core/router/
error.rs

1use std::{error::Error, marker::PhantomData};
2
3use crate::event::Event;
4
5use super::Router;
6
7pub struct ErrorRouter<E: Error> {
8    marker: PhantomData<E>,
9}
10
11impl<E: Error> ErrorRouter<E> {
12    pub fn new() -> Self {
13        Self::default()
14    }
15}
16
17impl<E: Error> Default for ErrorRouter<E> {
18    fn default() -> Self {
19        Self {
20            marker: PhantomData,
21        }
22    }
23}
24
25impl<E: Error + Send + Sync + 'static> Router for ErrorRouter<E> {
26    fn matches(&self, event: &dyn Event) -> bool {
27        event.content().downcast::<E>().is_ok()
28    }
29}