pub struct BroadcastChannel<T> { /* private fields */ }
Expand description
A channel that broadcasts values received to one or more callbacks.
This type represents both a sender and a receiver in terms of determining whether a channel is “connected”. This is because at any time additional callbacks can be associated through this type while also allowing values to be sent to already-installed callbacks.
Because of this ability to attach future callbacks, a broadcast channel can
be created with no associated callbacks. When a value is sent to a channel
that has a BroadcastChannel
connected to it, the value will be queued
even if no callbacks are currently associated. To prevent this, use
create_broadcaster()
/into_broadcaster()
to create a Broadcaster
for this channel and drop all
BroadcastChannel
instances after callbacks have been associated.
Implementations§
Source§impl<T> BroadcastChannel<T>
impl<T> BroadcastChannel<T>
Sourcepub fn unbounded() -> Self
pub fn unbounded() -> Self
Returns broadcast channel with no limit to the number of values enqueued.
Sourcepub fn bounded(capacity: usize) -> Self
pub fn bounded(capacity: usize) -> Self
Returns broadcast channel that limits queued values to capacity
items.
Sourcepub fn send(&self, value: T) -> Result<(), T>
pub fn send(&self, value: T) -> Result<(), T>
Sends value
to this channel.
If the channel is full, this function will block the current thread
until space is made available. If one channel’s on_receive
is sending
a value to a bounded channel, that on_receive
should be
on_receive_async
instead and use send_async()
.
§Errors
Returns Err(value)
if the channel is disconnected.
Sourcepub fn send_async(&self, value: T) -> BroadcastAsync<'_, T> ⓘ
pub fn send_async(&self, value: T) -> BroadcastAsync<'_, T> ⓘ
Sends value
to this channel asynchronously.
If the channel is full, this future will wait until space is made available before sending.
§Errors
The returned future will return Err(value)
if the channel is
disconnected.
Sourcepub fn try_send(&self, value: T) -> Result<(), TrySendError<T>>
pub fn try_send(&self, value: T) -> Result<(), TrySendError<T>>
Tries to send value
to this channel. Returns an error if unable to
send.
§Errors
- When the channel is disconnected,
TrySendError::Disconnected
will be returned. - When the channel is full,
TrySendError::Full
will be returned.
Sourcepub fn force_send(&self, value: T) -> Result<Option<T>, T>
pub fn force_send(&self, value: T) -> Result<Option<T>, T>
Sends value
to this channel, removing the oldest unread value if the
channel is full.
If the channel is full, the unread value will be returned in
Ok(Some(unread_value))
. If the channel has capacity, Ok(None)
will
be returned.
§Errors
Returns value
if the channel is disconnected.
Sourcepub fn create_receiver(&self) -> Receiver<T> ⓘ
pub fn create_receiver(&self) -> Receiver<T> ⓘ
Creates a new receiver for this channel.
All receivers and callbacks must receive each value before the next value is able to be received.
Sourcepub fn on_receive<Map>(&self, on_receive: Map) -> CallbackHandle
pub fn on_receive<Map>(&self, on_receive: Map) -> CallbackHandle
Invokes on_receive
each time a value is sent to this channel.
This function assumes on_receive
may block while waiting on another
thread, another process, another callback, a network request, a locking
primitive, or any other number of ways that could impact other callbacks
from executing.
Sourcepub fn on_receive_try<Map>(&self, on_receive: Map) -> CallbackHandle
pub fn on_receive_try<Map>(&self, on_receive: Map) -> CallbackHandle
Invokes on_receive
each time a value is sent to this channel. Once an
error is returned, this callback will be removed from the channel.
This function assumes on_receive
may block while waiting on another
thread, another process, another callback, a network request, a locking
primitive, or any other number of ways that could impact other callbacks
from executing.
Once the last callback associated with a channel is removed, Sender
s
will begin returning disconnected errors.
Sourcepub fn on_receive_nonblocking<Map>(&self, on_receive: Map) -> CallbackHandle
pub fn on_receive_nonblocking<Map>(&self, on_receive: Map) -> CallbackHandle
Invokes on_receive
each time a value is sent to this channel.
This function assumes on_receive
will not block while waiting on
another thread, another process, another callback, a network request, a
locking primitive, or any other number of ways that could impact other
callbacks from executing in a shared environment.
Sourcepub fn on_receive_nonblocking_try<Map>(&self, on_receive: Map) -> CallbackHandle
pub fn on_receive_nonblocking_try<Map>(&self, on_receive: Map) -> CallbackHandle
Invokes on_receive
each time a value is sent to this channel. Once an
error is returned, this callback will be removed from the channel.
This function assumes on_receive
will not block while waiting on
another thread, another process, another callback, a network request, a
locking primitive, or any other number of ways that could impact other
callbacks from executing in a shared environment.
Once the last callback associated with a channel is removed, Sender
s
will begin returning disconnected errors.
Sourcepub fn on_receive_async<Map, Fut>(&self, on_receive: Map) -> CallbackHandle
pub fn on_receive_async<Map, Fut>(&self, on_receive: Map) -> CallbackHandle
Invokes on_receive
each time a value is sent to this channel.
Sourcepub fn on_receive_async_try<Map, Fut>(&self, on_receive: Map) -> CallbackHandle
pub fn on_receive_async_try<Map, Fut>(&self, on_receive: Map) -> CallbackHandle
Invokes on_receive
each time a value is sent to this channel. The
returned future will then be awaited. Once an error is returned, this
callback will be removed from the channel.
Once the last callback associated with a channel is removed, Sender
s
will begin returning disconnected errors.
Source§impl<T> BroadcastChannel<T>
impl<T> BroadcastChannel<T>
Sourcepub fn create_broadcaster(&self) -> Broadcaster<T>
pub fn create_broadcaster(&self) -> Broadcaster<T>
Returns a Broadcaster
that sends to this channel.
Sourcepub fn into_broadcaster(self) -> Broadcaster<T>
pub fn into_broadcaster(self) -> Broadcaster<T>
Returns this instance as a Broadcaster
that sends to this channel.
Trait Implementations§
Source§impl<T> Clone for BroadcastChannel<T>
impl<T> Clone for BroadcastChannel<T>
Source§impl<T> Default for BroadcastChannel<T>
impl<T> Default for BroadcastChannel<T>
Source§impl<T> Drop for BroadcastChannel<T>
impl<T> Drop for BroadcastChannel<T>
Source§impl<T> From<BroadcastChannel<T>> for Notify<T>
impl<T> From<BroadcastChannel<T>> for Notify<T>
Source§fn from(value: BroadcastChannel<T>) -> Self
fn from(value: BroadcastChannel<T>) -> Self
Source§fn from(value: BroadcastChannel<T>) -> Self
fn from(value: BroadcastChannel<T>) -> Self
Source§impl<T, U> Unwrapped<U> for &BroadcastChannel<T>
impl<T, U> Unwrapped<U> for &BroadcastChannel<T>
Source§fn unwrapped_or_else(self, initial: impl FnOnce() -> U) -> Dynamic<U>
fn unwrapped_or_else(self, initial: impl FnOnce() -> U) -> Dynamic<U>
Source§fn for_each_unwrapped_try<ForEach>(self, for_each: ForEach) -> CallbackHandle
fn for_each_unwrapped_try<ForEach>(self, for_each: ForEach) -> CallbackHandle
Source§fn unwrapped(self) -> Dynamic<T>where
T: Default,
fn unwrapped(self) -> Dynamic<T>where
T: Default,
Source§fn for_each_unwrapped<ForEach>(self, for_each: ForEach) -> CallbackHandle
fn for_each_unwrapped<ForEach>(self, for_each: ForEach) -> CallbackHandle
for_each
when self
is updated with a value that can be
unwrapped.Auto Trait Implementations§
impl<T> Freeze for BroadcastChannel<T>
impl<T> !RefUnwindSafe for BroadcastChannel<T>
impl<T> Send for BroadcastChannel<T>where
T: Send,
impl<T> Sync for BroadcastChannel<T>where
T: Send,
impl<T> Unpin for BroadcastChannel<T>
impl<T> !UnwindSafe for BroadcastChannel<T>
Blanket Implementations§
Source§impl<S, D, Swp, Dwp, T> AdaptInto<D, Swp, Dwp, T> for Swhere
T: Real + Zero + Arithmetics + Clone,
Swp: WhitePoint<T>,
Dwp: WhitePoint<T>,
D: AdaptFrom<S, Swp, Dwp, T>,
impl<S, D, Swp, Dwp, T> AdaptInto<D, Swp, Dwp, T> for Swhere
T: Real + Zero + Arithmetics + Clone,
Swp: WhitePoint<T>,
Dwp: WhitePoint<T>,
D: AdaptFrom<S, Swp, Dwp, T>,
Source§fn adapt_into_using<M>(self, method: M) -> Dwhere
M: TransformMatrix<T>,
fn adapt_into_using<M>(self, method: M) -> Dwhere
M: TransformMatrix<T>,
Source§fn adapt_into(self) -> D
fn adapt_into(self) -> D
Source§impl<T, C> ArraysFrom<C> for Twhere
C: IntoArrays<T>,
impl<T, C> ArraysFrom<C> for Twhere
C: IntoArrays<T>,
Source§fn arrays_from(colors: C) -> T
fn arrays_from(colors: C) -> T
Source§impl<T, C> ArraysInto<C> for Twhere
C: FromArrays<T>,
impl<T, C> ArraysInto<C> for Twhere
C: FromArrays<T>,
Source§fn arrays_into(self) -> C
fn arrays_into(self) -> C
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<WpParam, T, U> Cam16IntoUnclamped<WpParam, T> for Uwhere
T: FromCam16Unclamped<WpParam, U>,
impl<WpParam, T, U> Cam16IntoUnclamped<WpParam, T> for Uwhere
T: FromCam16Unclamped<WpParam, U>,
Source§type Scalar = <T as FromCam16Unclamped<WpParam, U>>::Scalar
type Scalar = <T as FromCam16Unclamped<WpParam, U>>::Scalar
parameters
when converting.Source§fn cam16_into_unclamped(
self,
parameters: BakedParameters<WpParam, <U as Cam16IntoUnclamped<WpParam, T>>::Scalar>,
) -> T
fn cam16_into_unclamped( self, parameters: BakedParameters<WpParam, <U as Cam16IntoUnclamped<WpParam, T>>::Scalar>, ) -> T
self
into C
, using the provided parameters.§impl<A> Cast for A
impl<A> Cast for A
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T, C> ComponentsFrom<C> for Twhere
C: IntoComponents<T>,
impl<T, C> ComponentsFrom<C> for Twhere
C: IntoComponents<T>,
Source§fn components_from(colors: C) -> T
fn components_from(colors: C) -> T
§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Box<dyn Trait>
(where Trait: Downcast
) to Box<dyn Any>
. Box<dyn Any>
can
then be further downcast
into Box<ConcreteType>
where ConcreteType
implements Trait
.§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Rc<Trait>
(where Trait: Downcast
) to Rc<Any>
. Rc<Any>
can then be
further downcast
into Rc<ConcreteType>
where ConcreteType
implements Trait
.§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
generate &Any
’s vtable from &Trait
’s.§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
generate &mut Any
’s vtable from &mut Trait
’s.§impl<T> DowncastSync for T
impl<T> DowncastSync for T
Source§impl<T> FromAngle<T> for T
impl<T> FromAngle<T> for T
Source§fn from_angle(angle: T) -> T
fn from_angle(angle: T) -> T
angle
.Source§impl<T, U> FromStimulus<U> for Twhere
U: IntoStimulus<T>,
impl<T, U> FromStimulus<U> for Twhere
U: IntoStimulus<T>,
Source§fn from_stimulus(other: U) -> T
fn from_stimulus(other: U) -> T
other
into Self
, while performing the appropriate scaling,
rounding and clamping.§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T, U> IntoAngle<U> for Twhere
U: FromAngle<T>,
impl<T, U> IntoAngle<U> for Twhere
U: FromAngle<T>,
Source§fn into_angle(self) -> U
fn into_angle(self) -> U
T
.Source§impl<WpParam, T, U> IntoCam16Unclamped<WpParam, T> for Uwhere
T: Cam16FromUnclamped<WpParam, U>,
impl<WpParam, T, U> IntoCam16Unclamped<WpParam, T> for Uwhere
T: Cam16FromUnclamped<WpParam, U>,
Source§type Scalar = <T as Cam16FromUnclamped<WpParam, U>>::Scalar
type Scalar = <T as Cam16FromUnclamped<WpParam, U>>::Scalar
parameters
when converting.Source§fn into_cam16_unclamped(
self,
parameters: BakedParameters<WpParam, <U as IntoCam16Unclamped<WpParam, T>>::Scalar>,
) -> T
fn into_cam16_unclamped( self, parameters: BakedParameters<WpParam, <U as IntoCam16Unclamped<WpParam, T>>::Scalar>, ) -> T
self
into C
, using the provided parameters.Source§impl<T, U> IntoColor<U> for Twhere
U: FromColor<T>,
impl<T, U> IntoColor<U> for Twhere
U: FromColor<T>,
Source§fn into_color(self) -> U
fn into_color(self) -> U
Source§impl<T, U> IntoColorUnclamped<U> for Twhere
U: FromColorUnclamped<T>,
impl<T, U> IntoColorUnclamped<U> for Twhere
U: FromColorUnclamped<T>,
Source§fn into_color_unclamped(self) -> U
fn into_color_unclamped(self) -> U
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self
into a Left
variant of Either<Self, Self>
if into_left
is true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self
into a Left
variant of Either<Self, Self>
if into_left(&self)
returns true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read moreSource§impl<T> IntoReadOnly<T> for T
impl<T> IntoReadOnly<T> for T
Source§fn into_read_only(self) -> ReadOnly<T>
fn into_read_only(self) -> ReadOnly<T>
self
as a ReadOnly
.Source§impl<T> IntoStimulus<T> for T
impl<T> IntoStimulus<T> for T
Source§fn into_stimulus(self) -> T
fn into_stimulus(self) -> T
self
into T
, while performing the appropriate scaling,
rounding and clamping.Source§impl<T> IntoValue<T> for T
impl<T> IntoValue<T> for T
Source§fn into_value(self) -> Value<T>
fn into_value(self) -> Value<T>
Value
.§impl<T> NoneValue for Twhere
T: Default,
impl<T> NoneValue for Twhere
T: Default,
type NoneType = T
§fn null_value() -> T
fn null_value() -> T
§impl<T> Pointable for T
impl<T> Pointable for T
Source§impl<R, P> ReadPrimitive<R> for P
impl<R, P> ReadPrimitive<R> for P
Source§fn read_from_little_endian(read: &mut R) -> Result<Self, Error>
fn read_from_little_endian(read: &mut R) -> Result<Self, Error>
ReadEndian::read_from_little_endian()
.Source§impl<T, C> TryComponentsInto<C> for Twhere
C: TryFromComponents<T>,
impl<T, C> TryComponentsInto<C> for Twhere
C: TryFromComponents<T>,
Source§type Error = <C as TryFromComponents<T>>::Error
type Error = <C as TryFromComponents<T>>::Error
try_into_colors
fails to cast.Source§fn try_components_into(self) -> Result<C, <T as TryComponentsInto<C>>::Error>
fn try_components_into(self) -> Result<C, <T as TryComponentsInto<C>>::Error>
Source§impl<T, U> TryIntoColor<U> for Twhere
U: TryFromColor<T>,
impl<T, U> TryIntoColor<U> for Twhere
U: TryFromColor<T>,
Source§fn try_into_color(self) -> Result<U, OutOfBounds<U>>
fn try_into_color(self) -> Result<U, OutOfBounds<U>>
OutOfBounds
error is returned which contains
the unclamped color. Read more