cushy::reactive::channel

Struct BroadcastChannel

Source
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>
where T: Unpin + Clone + Send + 'static,

Source

pub fn unbounded() -> Self

Returns broadcast channel with no limit to the number of values enqueued.

Source

pub fn bounded(capacity: usize) -> Self

Returns broadcast channel that limits queued values to capacity items.

Source

pub fn build() -> Builder<T, Broadcast<T>>

Returns a builder for a broadcast channel.

Source

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.

Source

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.

Source

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
Source

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.

Source

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.

Source

pub fn on_receive<Map>(&self, on_receive: Map) -> CallbackHandle
where Map: FnMut(T) + Send + 'static,

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.

Source

pub fn on_receive_try<Map>(&self, on_receive: Map) -> CallbackHandle
where Map: FnMut(T) -> Result<(), CallbackDisconnected> + Send + 'static,

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, Senders will begin returning disconnected errors.

Source

pub fn on_receive_nonblocking<Map>(&self, on_receive: Map) -> CallbackHandle
where Map: FnMut(T) + Send + 'static,

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.

Source

pub fn on_receive_nonblocking_try<Map>(&self, on_receive: Map) -> CallbackHandle
where Map: FnMut(T) -> Result<(), CallbackDisconnected> + Send + 'static,

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, Senders will begin returning disconnected errors.

Source

pub fn on_receive_async<Map, Fut>(&self, on_receive: Map) -> CallbackHandle
where Map: FnMut(T) -> Fut + Send + 'static, Fut: Future<Output = ()> + Send + 'static,

Invokes on_receive each time a value is sent to this channel.

Source

pub fn on_receive_async_try<Map, Fut>(&self, on_receive: Map) -> CallbackHandle
where Map: FnMut(T) -> Fut + Send + 'static, Fut: Future<Output = Result<(), CallbackDisconnected>> + Send + 'static,

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, Senders will begin returning disconnected errors.

Source§

impl<T> BroadcastChannel<T>

Source

pub fn create_broadcaster(&self) -> Broadcaster<T>

Returns a Broadcaster that sends to this channel.

Source

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>

Source§

fn clone(&self) -> Self

Returns a copy of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl<T> Default for BroadcastChannel<T>
where T: Unpin + Clone + Send + 'static,

Source§

fn default() -> Self

Returns an unbounded broadcast channel.

Source§

impl<T> Drop for BroadcastChannel<T>

Source§

fn drop(&mut self)

Executes the destructor for this type. Read more
Source§

impl<T> From<BroadcastChannel<T>> for Notify<T>

Source§

fn from(value: BroadcastChannel<T>) -> Self

Converts to this type from the input type.
Source§

impl<T> From<BroadcastChannel<T>> for SharedNotify<T>

Source§

fn from(value: BroadcastChannel<T>) -> Self

Converts to this type from the input type.
Source§

impl<T, U> Unwrapped<U> for &BroadcastChannel<T>
where T: IntoOption<U> + Clone + Unpin + Send + 'static, U: Send + 'static,

Source§

type Value<'a> = U

The value type provided to the for each functions.
Source§

fn unwrapped_or_else(self, initial: impl FnOnce() -> U) -> Dynamic<U>

Returns a dynamic that is updated with the unwrapped contents of thie source. Read more
Source§

fn for_each_unwrapped_try<ForEach>(self, for_each: ForEach) -> CallbackHandle
where ForEach: for<'a> FnMut(Self::Value<'a>) -> Result<(), CallbackDisconnected> + Send + 'static,

Invokes for_each when self is updated with a value that can be unwrapped. Read more
Source§

fn unwrapped(self) -> Dynamic<T>
where T: Default,

Returns a dynamic that is updated with the unwrapped contents of thie source. Read more
Source§

fn for_each_unwrapped<ForEach>(self, for_each: ForEach) -> CallbackHandle
where ForEach: for<'a> FnMut(Self::Value<'a>) + Send + 'static,

Invokes 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 S
where 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) -> D
where M: TransformMatrix<T>,

Convert the source color to the destination color using the specified method.
Source§

fn adapt_into(self) -> D

Convert the source color to the destination color using the bradford method by default.
Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T, C> ArraysFrom<C> for T
where C: IntoArrays<T>,

Source§

fn arrays_from(colors: C) -> T

Cast a collection of colors into a collection of arrays.
Source§

impl<T, C> ArraysInto<C> for T
where C: FromArrays<T>,

Source§

fn arrays_into(self) -> C

Cast this collection of arrays into a collection of colors.
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<WpParam, T, U> Cam16IntoUnclamped<WpParam, T> for U
where T: FromCam16Unclamped<WpParam, U>,

Source§

type Scalar = <T as FromCam16Unclamped<WpParam, U>>::Scalar

The number type that’s used in parameters when converting.
Source§

fn cam16_into_unclamped( self, parameters: BakedParameters<WpParam, <U as Cam16IntoUnclamped<WpParam, T>>::Scalar>, ) -> T

Converts self into C, using the provided parameters.
§

impl<A> Cast for A

§

fn cast<To>(self) -> To
where To: CastFrom<A>,

Casts self to the To type. This may be a lossy operation.
§

impl<A> CastFrom<A> for A

§

fn from_cast(from: A) -> A

Returns from as Self.
§

impl<A, B> CastInto<A> for B
where A: CastFrom<B>,

§

fn cast_into(self) -> A

Returns self as To.
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dst: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. Read more
Source§

impl<T, C> ComponentsFrom<C> for T
where C: IntoComponents<T>,

Source§

fn components_from(colors: C) -> T

Cast a collection of colors into a collection of color components.
§

impl<T> Downcast<T> for T

§

fn downcast(&self) -> &T

§

impl<T> Downcast for T
where T: Any,

§

fn into_any(self: Box<T>) -> Box<dyn Any>

Convert 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>

Convert 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)

Convert &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)

Convert &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
where T: Any + Send + Sync,

§

fn into_any_arc(self: Arc<T>) -> Arc<dyn Any + Send + Sync>

Convert Arc<Trait> (where Trait: Downcast) to Arc<Any>. Arc<Any> can then be further downcast into Arc<ConcreteType> where ConcreteType implements Trait.
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> FromAngle<T> for T

Source§

fn from_angle(angle: T) -> T

Performs a conversion from angle.
Source§

impl<T, U> FromStimulus<U> for T
where U: IntoStimulus<T>,

Source§

fn from_stimulus(other: U) -> T

Converts other into Self, while performing the appropriate scaling, rounding and clamping.
§

impl<T> Instrument for T

§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided [Span], returning an Instrumented wrapper. Read more
§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T, U> IntoAngle<U> for T
where U: FromAngle<T>,

Source§

fn into_angle(self) -> U

Performs a conversion into T.
Source§

impl<WpParam, T, U> IntoCam16Unclamped<WpParam, T> for U
where T: Cam16FromUnclamped<WpParam, U>,

Source§

type Scalar = <T as Cam16FromUnclamped<WpParam, U>>::Scalar

The number type that’s used in parameters when converting.
Source§

fn into_cam16_unclamped( self, parameters: BakedParameters<WpParam, <U as IntoCam16Unclamped<WpParam, T>>::Scalar>, ) -> T

Converts self into C, using the provided parameters.
Source§

impl<T, U> IntoColor<U> for T
where U: FromColor<T>,

Source§

fn into_color(self) -> U

Convert into T with values clamped to the color defined bounds Read more
Source§

impl<T, U> IntoColorUnclamped<U> for T
where U: FromColorUnclamped<T>,

Source§

fn into_color_unclamped(self) -> U

Convert into T. The resulting color might be invalid in its color space Read more
Source§

impl<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts 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 more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts 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 more
Source§

impl<T> IntoReadOnly<T> for T

Source§

fn into_read_only(self) -> ReadOnly<T>

Returns self as a ReadOnly.
Source§

impl<T> IntoStimulus<T> for T

Source§

fn into_stimulus(self) -> T

Converts self into T, while performing the appropriate scaling, rounding and clamping.
Source§

impl<T> IntoValue<Option<T>> for T

Source§

fn into_value(self) -> Value<Option<T>>

Returns this type as a Value.
Source§

impl<T> IntoValue<T> for T

Source§

fn into_value(self) -> Value<T>

Returns this type as a Value.
§

impl<T> NoneValue for T
where T: Default,

§

type NoneType = T

§

fn null_value() -> T

The none-equivalent value.
§

impl<T> Pointable for T

§

const ALIGN: usize = _

The alignment of pointer.
§

type Init = T

The type for initializers.
§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
Source§

impl<R, P> ReadPrimitive<R> for P
where R: Read + ReadEndian<P>, P: Default,

Source§

fn read_from_little_endian(read: &mut R) -> Result<Self, Error>

Read this value from the supplied reader. Same as ReadEndian::read_from_little_endian().
Source§

fn read_from_big_endian(read: &mut R) -> Result<Self, Error>

Read this value from the supplied reader. Same as ReadEndian::read_from_big_endian().
Source§

fn read_from_native_endian(read: &mut R) -> Result<Self, Error>

Read this value from the supplied reader. Same as ReadEndian::read_from_native_endian().
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, C> TryComponentsInto<C> for T
where C: TryFromComponents<T>,

Source§

type Error = <C as TryFromComponents<T>>::Error

The error for when try_into_colors fails to cast.
Source§

fn try_components_into(self) -> Result<C, <T as TryComponentsInto<C>>::Error>

Try to cast this collection of color components into a collection of colors. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T, U> TryIntoColor<U> for T
where U: TryFromColor<T>,

Source§

fn try_into_color(self) -> Result<U, OutOfBounds<U>>

Convert into T, returning ok if the color is inside of its defined range, otherwise an OutOfBounds error is returned which contains the unclamped color. Read more
Source§

impl<C, U> UintsFrom<C> for U
where C: IntoUints<U>,

Source§

fn uints_from(colors: C) -> U

Cast a collection of colors into a collection of unsigned integers.
Source§

impl<C, U> UintsInto<C> for U
where C: FromUints<U>,

Source§

fn uints_into(self) -> C

Cast this collection of unsigned integers into a collection of colors.
§

impl<T> Upcast<T> for T

§

fn upcast(&self) -> Option<&T>

§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

§

fn vzip(self) -> V

§

impl<T> WithSubscriber for T

§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a [WithDispatch] wrapper. Read more
§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a [WithDispatch] wrapper. Read more
§

impl<T> ErasedDestructor for T
where T: 'static,

§

impl<T> MaybeSendSync for T

§

impl<T> WasmNotSend for T
where T: Send,

§

impl<T> WasmNotSendSync for T
where T: WasmNotSend + WasmNotSync,

§

impl<T> WasmNotSync for T
where T: Sync,