pub struct Rotate<const N: usize>;Expand description
Rotation: cyclically shifts the active slot.
On each clock cycle, the pipeline advances data for the next
computation. After N cycles, all computations have advanced
by one pipeline stage.
The rotation is a natural transformation ([A; N] -> [A; N]
for all A: Copy). It commutes with any per-element operation,
so applying a pipeline stage then rotating is the same as rotating
then applying.
Note: this is not implemented via comp_cat_rs::foundation::nat_trans::NatTrans
because that trait’s transform<A> has no bounds on A, and we
require Copy (moving individual array elements without Copy is
not possible in safe Rust without allocation). The naturality
property holds for all A: Copy, which covers all hardware signal
types.
Implementations§
Auto Trait Implementations§
impl<const N: usize> Freeze for Rotate<N>
impl<const N: usize> RefUnwindSafe for Rotate<N>
impl<const N: usize> Send for Rotate<N>
impl<const N: usize> Sync for Rotate<N>
impl<const N: usize> Unpin for Rotate<N>
impl<const N: usize> UnsafeUnpin for Rotate<N>
impl<const N: usize> UnwindSafe for Rotate<N>
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