aionbot-core 0.1.4

Rust-based high concurrency cross platform bot runtime
Documentation
use std::{error::Error, marker::PhantomData};

use crate::event::Event;

use super::Router;

pub struct ErrorRouter<E: Error> {
    marker: PhantomData<E>,
}

impl<E: Error> ErrorRouter<E> {
    pub fn new() -> Self {
        Self::default()
    }
}

impl<E: Error> Default for ErrorRouter<E> {
    fn default() -> Self {
        Self {
            marker: PhantomData,
        }
    }
}

impl<E: Error + Send + Sync + 'static> Router for ErrorRouter<E> {
    fn matches(&self, event: &dyn Event) -> bool {
        event.content().downcast::<E>().is_ok()
    }
}