pub struct Subscription<T> { /* private fields */ }Expand description
A Subscription is a feed of notifications from the server of a specific
type T, identified by a local ID.
For flexibility, we expose three similar APIs:
- The
Subscription::recvmethod and its variants will discard any notifications of unexpected types. - The
Subscription::recv_anyand its variants will yield unexpected types asSubscriptionItem::Other. - The
Subscription::recv_resultand its variants will attempt to deserialize the notifications and yield theserde_json::Resultof the deserialization.
Implementations§
Source§impl<T> Subscription<T>
impl<T> Subscription<T>
Sourcepub fn into_raw(self) -> RawSubscription
pub fn into_raw(self) -> RawSubscription
Convert the subscription into its inner RawSubscription.
Sourcepub const fn inner(&self) -> &RawSubscription
pub const fn inner(&self) -> &RawSubscription
Get a reference to the inner subscription.
Sourcepub const fn inner_mut(&mut self) -> &mut RawSubscription
pub const fn inner_mut(&mut self) -> &mut RawSubscription
Get a mutable reference to the inner subscription.
Sourcepub fn is_empty(&self) -> bool
pub fn is_empty(&self) -> bool
Returns true if the broadcast channel is empty (i.e. there are
currently no notifications to receive).
Sourcepub fn len(&self) -> usize
pub fn len(&self) -> usize
Returns the number of messages in the broadcast channel that this receiver has yet to receive.
NB: This count may include messages of unexpected types that will be discarded upon receipt.
Sourcepub fn resubscribe_inner(&self) -> RawSubscription
pub fn resubscribe_inner(&self) -> RawSubscription
Wrapper for resubscribe. Create a new RawSubscription, starting
from the current tail element.
Sourcepub fn resubscribe(&self) -> Self
pub fn resubscribe(&self) -> Self
Wrapper for resubscribe. Create a new Subscription, starting from
the current tail element.
Sourcepub fn same_channel<U>(&self, other: &Subscription<U>) -> bool
pub fn same_channel<U>(&self, other: &Subscription<U>) -> bool
Wrapper for same_channel. Returns true if the two subscriptions
share the same broadcast channel.
Source§impl<T: DeserializeOwned> Subscription<T>
impl<T: DeserializeOwned> Subscription<T>
Sourcepub fn blocking_recv_any(&mut self) -> Result<SubscriptionItem<T>, RecvError>
pub fn blocking_recv_any(&mut self) -> Result<SubscriptionItem<T>, RecvError>
Wrapper for blocking_recv, may produce unexpected values. Block the
current thread until a message is available.
Sourcepub async fn recv_any(&mut self) -> Result<SubscriptionItem<T>, RecvError>
pub async fn recv_any(&mut self) -> Result<SubscriptionItem<T>, RecvError>
Wrapper for recv, may produce unexpected values. Await an item from
the channel.
Sourcepub fn try_recv_any(&mut self) -> Result<SubscriptionItem<T>, TryRecvError>
pub fn try_recv_any(&mut self) -> Result<SubscriptionItem<T>, TryRecvError>
Wrapper for try_recv. Attempt to receive a message from the channel
without awaiting.
Sourcepub fn into_stream(self) -> SubscriptionStream<T>
pub fn into_stream(self) -> SubscriptionStream<T>
Convert the subscription into a stream.
Errors are logged and ignored.
Sourcepub fn into_result_stream(self) -> SubResultStream<T>
pub fn into_result_stream(self) -> SubResultStream<T>
Convert the subscription into a stream that returns deserialization results.
Sourcepub fn into_any_stream(self) -> SubAnyStream<T>
pub fn into_any_stream(self) -> SubAnyStream<T>
Convert the subscription into a stream that may yield unexpected types.
Sourcepub fn blocking_recv(&mut self) -> Result<T, RecvError>
pub fn blocking_recv(&mut self) -> Result<T, RecvError>
Wrapper for blocking_recv. Block the current thread until a message
of the expected type is available.
Sourcepub async fn recv(&mut self) -> Result<T, RecvError>
pub async fn recv(&mut self) -> Result<T, RecvError>
Wrapper for recv. Await an item of the expected type from the
channel.
Sourcepub fn try_recv(&mut self) -> Result<T, TryRecvError>
pub fn try_recv(&mut self) -> Result<T, TryRecvError>
Wrapper for try_recv. Attempt to receive a message of the expected
type from the channel without awaiting.
Sourcepub fn blocking_recv_result(&mut self) -> Result<Result<T, Error>, RecvError>
pub fn blocking_recv_result(&mut self) -> Result<Result<T, Error>, RecvError>
Wrapper for blocking_recv. Block the current thread until a message
is available, deserializing the message and returning the result.
Sourcepub async fn recv_result(&mut self) -> Result<Result<T, Error>, RecvError>
pub async fn recv_result(&mut self) -> Result<Result<T, Error>, RecvError>
Wrapper for recv. Await an item from the channel, deserializing the
message and returning the result.
Sourcepub fn try_recv_result(&mut self) -> Result<Result<T, Error>, TryRecvError>
pub fn try_recv_result(&mut self) -> Result<Result<T, Error>, TryRecvError>
Wrapper for try_recv. Attempt to receive a message from the channel
without awaiting, deserializing the message and returning the result.
Trait Implementations§
Source§impl<T: Debug> Debug for Subscription<T>
impl<T: Debug> Debug for Subscription<T>
Source§impl<T> From<RawSubscription> for Subscription<T>
impl<T> From<RawSubscription> for Subscription<T>
Source§fn from(inner: RawSubscription) -> Self
fn from(inner: RawSubscription) -> Self
Auto Trait Implementations§
impl<T> Freeze for Subscription<T>
impl<T> RefUnwindSafe for Subscription<T>where
T: RefUnwindSafe,
impl<T> Send for Subscription<T>where
T: Send,
impl<T> Sync for Subscription<T>where
T: Sync,
impl<T> Unpin for Subscription<T>where
T: Unpin,
impl<T> UnwindSafe for Subscription<T>where
T: UnwindSafe,
Blanket Implementations§
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<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> WithSubscriber for T
impl<T> WithSubscriber for T
Source§fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
Source§fn with_current_subscriber(self) -> WithDispatch<Self>
fn with_current_subscriber(self) -> WithDispatch<Self>
impl<T> ErasedDestructor for Twhere
T: 'static,
Layout§
Note: Most layout information is completely unstable and may even differ between compilations. The only exception is types with certain repr(...) attributes. Please see the Rust Reference's “Type Layout” chapter for details on type layout guarantees.
Size: 48 bytes