ene_kafka 0.2.0

Ene Kafka is an easy-to-use Rust client for Apache Kafka
Documentation
use async_trait::async_trait;

use crate::messages::cloud_events::cloud_event::{CloudEvent, DeserializeFrom, EventType};

#[async_trait]
pub trait EventHandler<
    InputEvent: CloudEvent<String, String>,
    HandlableEvent: CloudEvent<String, String> + DeserializeFrom<String, String, InputEvent>,
>
{
    fn can_handle(&self, event: &InputEvent) -> anyhow::Result<bool> {
        Ok(event.event_type()? == self.event_type()?)
    }

    fn event_type(&self) -> anyhow::Result<EventType>;

    async fn deserialize_and_handle(&self, event: &InputEvent) -> anyhow::Result<()> {
        let deserialized_event = HandlableEvent::deserialize_from(&event)?;
        self.handle(&deserialized_event).await
    }

    async fn handle(&self, event: &HandlableEvent) -> anyhow::Result<()>;
}