Struct PubSub

Source
pub struct PubSub<T: Clone>(/* private fields */);
Expand description

A pub/sub struct which allows many listeners to subscribe to many publishers, without leaking callbacks as listeners are dropped.

Unlike mpsc etc., PubSub has no internal queue and is completely synchronous.

Implementations§

Source§

impl<T: Clone + 'static> PubSub<T>

Source

pub fn emit(&self, val: T)

Emit a value to all listeners.

§Arguments
  • val The value to emit.
Source

pub fn callback(&self) -> Callback<T>

Get this PubSub<_>’s .emit_all() method as a Callback<T>.

Source

pub fn as_boxfn(&self) -> Box<dyn Fn(T) + Send + Sync + 'static>

Source

pub async fn listen_once(&self) -> Result<T, Canceled>

Await this PubSub<_>’s next call to emit_all(), once.

Source

pub fn subscriber(&self) -> Subscriber<T>

Create a Subscriber from this PubSub, which is the reciprocal of PubSub::callback (a struct which only allows sending), a struct which only allows receiving via Subscriber::add_listener.

Trait Implementations§

Source§

impl<T: Clone + 'static> AddListener<Callback<T>> for PubSub<T>

Source§

fn add_listener(&self, f: Callback<T>) -> Subscription

Register a listener to this PubSub<_>, which will be automatically deregistered when the return Subscription is dropped. Read more
Source§

impl<T, U> AddListener<U> for PubSub<T>
where T: Clone + 'static, U: Fn(T) + 'static,

Source§

fn add_listener(&self, f: U) -> Subscription

Register a listener to this PubSub<_>, which will be automatically deregistered when the return Subscription is dropped. Read more
Source§

impl<T: Clone> Default for PubSub<T>

Source§

fn default() -> Self

Returns the “default value” for a type. Read more
Source§

impl<T: Clone> Drop for PubSub<T>

Source§

fn drop(&mut self)

Executes the destructor for this type. Read more
Source§

impl<T: Clone> Send for PubSub<T>

Source§

impl<T: Clone> Sync for PubSub<T>

Auto Trait Implementations§

§

impl<T> Freeze for PubSub<T>

§

impl<T> !RefUnwindSafe for PubSub<T>

§

impl<T> Unpin for PubSub<T>

§

impl<T> !UnwindSafe for PubSub<T>

Blanket Implementations§

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> 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<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

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

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

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> 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> IntoPropValue<Option<T>> for T

Source§

fn into_prop_value(self) -> Option<T>

Convert self to a value of a Properties struct.
Source§

impl<T> IntoPropValue<T> for T

Source§

fn into_prop_value(self) -> T

Convert self to a value of a Properties struct.
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<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

Source§

impl<T> WithSubscriber for T

Source§

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

fn with_current_subscriber(self) -> WithDispatch<Self>

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

impl<Token, Builder, How> AllPropsFor<Builder, How> for Token
where Builder: Buildable<Token>, <Builder as Buildable<Token>>::WrappedToken: HasAllProps<<Builder as Buildable<Token>>::Output, How>,

Source§

impl<T> HasAllProps<(), T> for T