pub struct ChunkInOut<P, const Q: usize, const R: usize>(pub P);Expand description
General fixed-ratio regrouping adapter for chunked input and output.
Adapt a [X; Q] -> [Y; R] processor to [X; N = Q*I]->[Y; M = R*I] for any I
by flattening and re-chunking input and output.
This is the most general fixed-ratio chunk adapter in the crate. It requires
the input and output to represent the same number of inner chunks. Reach for
it when neither plain Chunk, ChunkIn, nor ChunkOut captures the
actual grouping relation.
§Examples
use dsp_process::{ChunkInOut, FnSplitProcess, Process, Split};
let mut p = Split::stateless(ChunkInOut::<_, 2, 1>(FnSplitProcess(
|_: &mut (), [a, b]: [i32; 2]| [a + b],
)));
assert_eq!(p.process([1, 2, 3, 4]), [3, 7]);Tuple Fields§
§0: PTrait Implementations§
impl<P: Copy, const Q: usize, const R: usize> Copy for ChunkInOut<P, Q, R>
Source§impl<C: SplitInplace<[X; 1], S>, S, X: Copy, const N: usize> SplitInplace<[X; N], S> for ChunkInOut<C, 1, 1>
impl<C: SplitInplace<[X; 1], S>, S, X: Copy, const N: usize> SplitInplace<[X; N], S> for ChunkInOut<C, 1, 1>
Auto Trait Implementations§
impl<P, const Q: usize, const R: usize> Freeze for ChunkInOut<P, Q, R>where
P: Freeze,
impl<P, const Q: usize, const R: usize> RefUnwindSafe for ChunkInOut<P, Q, R>where
P: RefUnwindSafe,
impl<P, const Q: usize, const R: usize> Send for ChunkInOut<P, Q, R>where
P: Send,
impl<P, const Q: usize, const R: usize> Sync for ChunkInOut<P, Q, R>where
P: Sync,
impl<P, const Q: usize, const R: usize> Unpin for ChunkInOut<P, Q, R>where
P: Unpin,
impl<P, const Q: usize, const R: usize> UnsafeUnpin for ChunkInOut<P, Q, R>where
P: UnsafeUnpin,
impl<P, const Q: usize, const R: usize> UnwindSafe for ChunkInOut<P, Q, R>where
P: UnwindSafe,
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<'a, X, S, T, const L: usize> SplitViewInplace<ViewMut<'a, X, FrameMajor, L>, S> for T
impl<'a, X, S, T, const L: usize> SplitViewInplace<ViewMut<'a, X, FrameMajor, L>, S> for T
Source§fn inplace_view(&self, state: &mut S, xy: ViewMut<'a, X, FrameMajor, L>)
fn inplace_view(&self, state: &mut S, xy: ViewMut<'a, X, FrameMajor, L>)
Process one typed view in place.
Source§impl<'a, 'b, X, Y, S, T, const L: usize> SplitViewProcess<View<'a, X, FrameMajor, L>, ViewMut<'b, Y, FrameMajor, L>, S> for T
impl<'a, 'b, X, Y, S, T, const L: usize> SplitViewProcess<View<'a, X, FrameMajor, L>, ViewMut<'b, Y, FrameMajor, L>, S> for T
Source§fn process_view(
&self,
state: &mut S,
x: View<'a, X, FrameMajor, L>,
y: ViewMut<'b, Y, FrameMajor, L>,
)
fn process_view( &self, state: &mut S, x: View<'a, X, FrameMajor, L>, y: ViewMut<'b, Y, FrameMajor, L>, )
Process one typed input view into one typed output view.