pub struct RealtimeCommand { /* private fields */ }Expand description
实时命令类型(统一使用 FrameBuffer)
设计决策:不再区分 Single 和 Package,统一使用 FrameBuffer。
- Single 只是 len=1 的 FrameBuffer
- 简化 TX 线程逻辑(不需要 match 分支)
- 消除 CPU 分支预测压力
Implementations§
Source§impl RealtimeCommand
impl RealtimeCommand
Sourcepub fn single(frame: PiperFrame) -> Self
pub fn single(frame: PiperFrame) -> Self
创建单个帧命令(向后兼容)
性能优化:添加 #[inline] 属性,因为此方法处于热路径(Hot Path)上。
Sourcepub fn package(frames: impl IntoIterator<Item = PiperFrame>) -> Self
pub fn package(frames: impl IntoIterator<Item = PiperFrame>) -> Self
创建帧包命令
性能优化:添加 #[inline] 属性,因为此方法处于热路径(Hot Path)上。
注意:如果用户传入 Vec<PiperFrame>,into_iter() 会消耗这个 Vec。
如果 Vec 长度 > 6,SmallVec 可能会尝试重用 Vec 的堆内存或重新分配。
虽然这是安全的,但为了最佳性能,建议用户传入数组(栈分配)。
Sourcepub fn iter(&self) -> impl Iterator<Item = &PiperFrame>
pub fn iter(&self) -> impl Iterator<Item = &PiperFrame>
获取帧迭代器(用于 TX 线程发送)
Sourcepub fn into_frames(self) -> FrameBuffer
pub fn into_frames(self) -> FrameBuffer
消费并获取帧(用于 TX 线程发送)
Trait Implementations§
Source§impl Clone for RealtimeCommand
impl Clone for RealtimeCommand
Source§fn clone(&self) -> RealtimeCommand
fn clone(&self) -> RealtimeCommand
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 moreAuto Trait Implementations§
impl Freeze for RealtimeCommand
impl RefUnwindSafe for RealtimeCommand
impl Send for RealtimeCommand
impl Sync for RealtimeCommand
impl Unpin for RealtimeCommand
impl UnwindSafe for RealtimeCommand
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> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
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> 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 more