hermes-async-runtime-components 0.1.0

Modular runtime components implemented using Tokio
Documentation
use alloc::boxed::Box;
use core::marker::PhantomData;
use core::pin::Pin;

use cgp::prelude::*;
use futures_core::stream::Stream;

use crate::subscription::traits::subscription::Subscription;

pub struct EmptySubscription<T>(pub PhantomData<T>);

impl<T> Default for EmptySubscription<T> {
    fn default() -> Self {
        Self(PhantomData)
    }
}

impl<T> EmptySubscription<T> {
    pub fn new() -> Self {
        Self(PhantomData)
    }
}

#[async_trait::async_trait]
impl<T: Async> Subscription for EmptySubscription<T> {
    type Item = T;

    async fn subscribe(
        &self,
    ) -> Option<Pin<Box<dyn Stream<Item = Self::Item> + Send + Sync + 'static>>> {
        None
    }
}