pub struct MemoryBoundedSender<T: InMemorySize> { /* private fields */ }common only.Expand description
A sender that enforces a byte budget before enqueueing messages.
Uses a shared atomic counter to track memory usage. Each message’s size is added to the counter on send and subtracted when the message is dequeued by the receiver.
The current call sites (specifically crate::common::mpsc::MemoryBoundedSender used
for the NetworkManager → TransactionsManager channel) have a single producer driven
from a single poll, so the fetch_add → check → fetch_sub-on-overflow reservation
pattern can never race with itself. The atomic is still used so the receiver can
release budget from a different task.
Implementations§
Trait Implementations§
Source§impl<T: Clone + InMemorySize> Clone for MemoryBoundedSender<T>
impl<T: Clone + InMemorySize> Clone for MemoryBoundedSender<T>
Auto Trait Implementations§
impl<T> !RefUnwindSafe for MemoryBoundedSender<T>
impl<T> !UnwindSafe for MemoryBoundedSender<T>
impl<T> Freeze for MemoryBoundedSender<T>where
UnboundedMeteredSender<Budgeted<T>>: Freeze,
impl<T> Send for MemoryBoundedSender<T>where
UnboundedMeteredSender<Budgeted<T>>: Send,
impl<T> Sync for MemoryBoundedSender<T>where
UnboundedMeteredSender<Budgeted<T>>: Sync,
impl<T> Unpin for MemoryBoundedSender<T>where
UnboundedMeteredSender<Budgeted<T>>: Unpin,
impl<T> UnsafeUnpin for MemoryBoundedSender<T>where
UnboundedMeteredSender<Budgeted<T>>: UnsafeUnpin,
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
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
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 more§impl<T> Pointable for T
impl<T> Pointable for T
impl<T> Read<Exclusive, BecauseExclusive> for Twhere
T: ?Sized,
§impl<T> WithSubscriber for T
impl<T> WithSubscriber for T
§fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self> ⓘwhere
S: Into<Dispatch>,
fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self> ⓘwhere
S: Into<Dispatch>,
§fn with_current_subscriber(self) -> WithDispatch<Self> ⓘ
fn with_current_subscriber(self) -> WithDispatch<Self> ⓘ
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