pub struct WeakMailboxRouter(/* private fields */);
Expand description
A version of MailboxRouter
that holds a weak reference to the underlying
state. This allows router references to be circular: an entity holding a reference
to the router may also contain the router itself.
TODO: this currently holds a weak reference to the entire router. This helps prevent cycle leaks, but can cause excess memory usage as the cycle is at the granularity of each entry. Possibly the router should allow weak references on a per-entry basis.
Implementations§
Source§impl WeakMailboxRouter
impl WeakMailboxRouter
Sourcepub fn upgrade(&self) -> Option<MailboxRouter>
pub fn upgrade(&self) -> Option<MailboxRouter>
Upgrade the weak router to a strong reference router.
Trait Implementations§
Source§impl Clone for WeakMailboxRouter
impl Clone for WeakMailboxRouter
Source§fn clone(&self) -> WeakMailboxRouter
fn clone(&self) -> WeakMailboxRouter
Returns a duplicate of the value. Read more
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source
. Read moreSource§impl Debug for WeakMailboxRouter
impl Debug for WeakMailboxRouter
Source§impl MailboxSender for WeakMailboxRouter
impl MailboxSender for WeakMailboxRouter
Source§fn post(
&self,
envelope: MessageEnvelope,
return_handle: PortHandle<Undeliverable<MessageEnvelope>>,
)
fn post( &self, envelope: MessageEnvelope, return_handle: PortHandle<Undeliverable<MessageEnvelope>>, )
TODO: consider making this publicly inaccessible. While the trait itself
needs to be public, its only purpose for the end-user API is to provide
the typed messaging APIs from (Once)PortRef and ActorRef.
Auto Trait Implementations§
impl Freeze for WeakMailboxRouter
impl RefUnwindSafe for WeakMailboxRouter
impl Send for WeakMailboxRouter
impl Sync for WeakMailboxRouter
impl Unpin for WeakMailboxRouter
impl UnwindSafe for WeakMailboxRouter
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
Mutably borrows from an owned value. Read more
Source§impl<T> BoxableMailboxSender for Twhere
T: MailboxSender + Clone + 'static,
impl<T> BoxableMailboxSender for Twhere
T: MailboxSender + Clone + 'static,
Source§fn boxed(&self) -> BoxedMailboxSender
fn boxed(&self) -> BoxedMailboxSender
A boxed clone of this MailboxSender.
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
§impl<T> FutureExt for T
impl<T> FutureExt for T
§fn with_context(self, otel_cx: Context) -> WithContext<Self>
fn with_context(self, otel_cx: Context) -> WithContext<Self>
§fn with_current_context(self) -> WithContext<Self>
fn with_current_context(self) -> WithContext<Self>
Source§impl<A, M> Handler<IndexedErasedUnbound<M>> for A
impl<A, M> Handler<IndexedErasedUnbound<M>> for A
§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> IntoBoxedMailboxSender for Twhere
T: MailboxSender + 'static,
impl<T> IntoBoxedMailboxSender for Twhere
T: MailboxSender + 'static,
Source§fn into_boxed(self) -> BoxedMailboxSender
fn into_boxed(self) -> BoxedMailboxSender
Rehome this MailboxSender into a BoxedMailboxSender.
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>
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 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>
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 moreSource§impl<T> MailboxServer for T
impl<T> MailboxServer for T
Source§fn serve(
self,
rx: impl Rx<MessageEnvelope> + Send + 'static,
) -> MailboxServerHandle ⓘ
fn serve( self, rx: impl Rx<MessageEnvelope> + Send + 'static, ) -> MailboxServerHandle ⓘ
Serve the provided port on the given channel on this sender on
a background task which may be joined with the returned handle.
The task fails on any send error.
§impl<T> Pointable for T
impl<T> Pointable for T
Source§impl<T> PortSender for Twhere
T: MailboxSender + ?Sized,
impl<T> PortSender for Twhere
T: MailboxSender + ?Sized,
Source§fn serialize_and_send<M: RemoteMessage>(
&self,
port: &PortRef<M>,
message: M,
return_handle: PortHandle<Undeliverable<MessageEnvelope>>,
) -> Result<(), MailboxSenderError>
fn serialize_and_send<M: RemoteMessage>( &self, port: &PortRef<M>, message: M, return_handle: PortHandle<Undeliverable<MessageEnvelope>>, ) -> Result<(), MailboxSenderError>
Deliver a message to the provided port.
Source§fn serialize_and_send_once<M: RemoteMessage>(
&self,
once_port: OncePortRef<M>,
message: M,
return_handle: PortHandle<Undeliverable<MessageEnvelope>>,
) -> Result<(), MailboxSenderError>
fn serialize_and_send_once<M: RemoteMessage>( &self, once_port: OncePortRef<M>, message: M, return_handle: PortHandle<Undeliverable<MessageEnvelope>>, ) -> Result<(), MailboxSenderError>
Deliver a message to a one-shot port, consuming the provided port,
which is not reusable.