pub struct Sender<T: State = TaskCompletion> { /* private fields */ }Expand description
Completion notifier for one-shot tasks
Optimized implementation using direct RawWaker storage + AtomicU8:
- Zero Box allocation: stores waker components directly in atomic fields
- Faster creation than Notify (no waitlist) or AtomicWaker (no state machine)
- Lower memory footprint (three atomic fields: data ptr, vtable ptr, state)
- Direct waker management without intermediate futures or heap allocation
- Single Arc allocation for both sender and receiver
一次性任务完成通知器
使用直接 RawWaker 存储 + AtomicU8 的优化实现:
- 零 Box 分配:直接在原子字段中存储 waker 组件
- 比 Notify(无等待列表)或 AtomicWaker(无状态机)创建更快
- 更小的内存占用(三个原子字段:data 指针、vtable 指针、状态)
- 直接管理 waker,无中间 future 或堆分配
- 发送器和接收器共享单个 Arc 分配
Implementations§
Auto Trait Implementations§
impl<T> Freeze for Sender<T>
impl<T = TaskCompletion> !RefUnwindSafe for Sender<T>
impl<T> Send for Sender<T>
impl<T> Sync for Sender<T>
impl<T> Unpin for Sender<T>
impl<T = TaskCompletion> !UnwindSafe for Sender<T>
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