pub trait FullDuplexMultiChannel: ChannelCommon<'static, Self::ItemType, Self::DerivedItemType> + ChannelMulti<'static, Self::ItemType, Self::DerivedItemType> + ChannelProducer<'static, Self::ItemType, Self::DerivedItemType> + ChannelConsumer<'static, Self::DerivedItemType> {
    type ItemType: 'static + Debug + Send + Sync;
    type DerivedItemType: 'static + Debug + Send + Sync;

    const MAX_STREAMS: usize;
    const BUFFER_SIZE: usize;
}
Expand description

A fully fledged Multi channel, that has both the producer and consumer parts Also, laverages generic programming by allowing simpler generic parameters:

    struct MyGenericStruct<T: FullDuplexUniChannel> { the_channel: T }
    let the_channel = uni::channels::xxx<Lots,And,Lots<Of,Generic,Arguments>>::new();
    let my_struct = MyGenericStruct { the_channel };
    // see more at `tests/use_cases.rs`

Required Associated Types§

source

type ItemType: 'static + Debug + Send + Sync

source

type DerivedItemType: 'static + Debug + Send + Sync

Required Associated Constants§

Implementors§

source§

impl<ItemType, OgreAllocatorType, const BUFFER_SIZE: usize, const MAX_STREAMS: usize> FullDuplexMultiChannel for reactive_mutiny::multi::channels::ogre_arc::atomic::Atomic<'static, ItemType, OgreAllocatorType, BUFFER_SIZE, MAX_STREAMS>where ItemType: 'static + Debug + Send + Sync, OgreAllocatorType: OgreAllocator<ItemType> + 'static + Sync + Send,

source§

const MAX_STREAMS: usize = MAX_STREAMS

source§

const BUFFER_SIZE: usize = BUFFER_SIZE

§

type ItemType = ItemType

§

type DerivedItemType = OgreArc<ItemType, OgreAllocatorType>

source§

impl<ItemType, OgreAllocatorType, const BUFFER_SIZE: usize, const MAX_STREAMS: usize> FullDuplexMultiChannel for reactive_mutiny::multi::channels::ogre_arc::full_sync::FullSync<'static, ItemType, OgreAllocatorType, BUFFER_SIZE, MAX_STREAMS>where ItemType: 'static + Debug + Send + Sync, OgreAllocatorType: OgreAllocator<ItemType> + 'static + Sync + Send,

source§

const MAX_STREAMS: usize = MAX_STREAMS

source§

const BUFFER_SIZE: usize = BUFFER_SIZE

§

type ItemType = ItemType

§

type DerivedItemType = OgreArc<ItemType, OgreAllocatorType>

source§

impl<ItemType, const BUFFER_SIZE: usize, const MAX_STREAMS: usize> FullDuplexMultiChannel for reactive_mutiny::multi::channels::arc::atomic::Atomic<'static, ItemType, BUFFER_SIZE, MAX_STREAMS>where ItemType: 'static + Debug + Send + Sync + Default,

source§

const MAX_STREAMS: usize = MAX_STREAMS

source§

const BUFFER_SIZE: usize = BUFFER_SIZE

§

type ItemType = ItemType

§

type DerivedItemType = Arc<ItemType, Global>

source§

impl<ItemType, const BUFFER_SIZE: usize, const MAX_STREAMS: usize> FullDuplexMultiChannel for Crossbeam<'static, ItemType, BUFFER_SIZE, MAX_STREAMS>where ItemType: 'static + Debug + Send + Sync,

source§

const MAX_STREAMS: usize = MAX_STREAMS

source§

const BUFFER_SIZE: usize = BUFFER_SIZE

§

type ItemType = ItemType

§

type DerivedItemType = Arc<ItemType, Global>

source§

impl<ItemType, const BUFFER_SIZE: usize, const MAX_STREAMS: usize> FullDuplexMultiChannel for reactive_mutiny::multi::channels::arc::full_sync::FullSync<'static, ItemType, BUFFER_SIZE, MAX_STREAMS>where ItemType: 'static + Debug + Send + Sync + Default,

source§

const MAX_STREAMS: usize = MAX_STREAMS

source§

const BUFFER_SIZE: usize = BUFFER_SIZE

§

type ItemType = ItemType

§

type DerivedItemType = Arc<ItemType, Global>

source§

impl<ItemType, const MAX_STREAMS: usize> FullDuplexMultiChannel for MmapLog<'static, ItemType, MAX_STREAMS>where ItemType: 'static + Debug + Send + Sync,

source§

const MAX_STREAMS: usize = MAX_STREAMS

source§

const BUFFER_SIZE: usize = 274_877_906_944usize

§

type ItemType = ItemType

§

type DerivedItemType = &'static ItemType