pub trait GenericMulti<const INSTRUMENTS: usize> {
type ItemType: Debug + Sync + Send + 'static;
type DerivedItemType: Debug + Sync + Send + 'static;
type MultiChannelType: FullDuplexMultiChannel<ItemType = Self::ItemType, DerivedItemType = Self::DerivedItemType> + Sync + Send;
type MutinyStreamType;
const INSTRUMENTS: usize;
// Required methods
fn new<IntoString>(multi_name: IntoString) -> Self
where IntoString: Into<String>;
fn to_multi(
self,
) -> Multi<Self::ItemType, Self::MultiChannelType, INSTRUMENTS, Self::DerivedItemType>;
}
Expand description
This trait exists to allow simplifying generic declarations of concrete Multi types.
See also [GenericUni].
Usage:
struct MyGenericStruct<T: GenericMulti> { the_multi: T }
let the_multi = Multi<Lots,And,Lots<Of,Generic,Arguments>>::new();
let my_struct = MyGenericStruct { the_multi };
Required Associated Constants§
Sourceconst INSTRUMENTS: usize
const INSTRUMENTS: usize
The instruments this Multi will collect/report
Required Associated Types§
Sourcetype ItemType: Debug + Sync + Send + 'static
type ItemType: Debug + Sync + Send + 'static
The payload type this Multi’s producers will receive
Sourcetype DerivedItemType: Debug + Sync + Send + 'static
type DerivedItemType: Debug + Sync + Send + 'static
The payload type this Multi’s Stream
s will yield
Sourcetype MultiChannelType: FullDuplexMultiChannel<ItemType = Self::ItemType, DerivedItemType = Self::DerivedItemType> + Sync + Send
type MultiChannelType: FullDuplexMultiChannel<ItemType = Self::ItemType, DerivedItemType = Self::DerivedItemType> + Sync + Send
The channel through which payloads will travel from producers to listeners (see Multi for more info)
Sourcetype MutinyStreamType
type MutinyStreamType
Defined as MutinyStream<'static, ItemType, MultiChannelType, DerivedItemType>
,
the concrete type for the Stream
of DerivedItemType
s to be given to listeners
Required Methods§
Sourcefn new<IntoString>(multi_name: IntoString) -> Self
fn new<IntoString>(multi_name: IntoString) -> Self
See Multi::new()
fn to_multi( self, ) -> Multi<Self::ItemType, Self::MultiChannelType, INSTRUMENTS, Self::DerivedItemType>
Dyn Compatibility§
This trait is not dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.