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§
Source§impl<P: Clone, const Q: usize, const R: usize> Clone for ChunkInOut<P, Q, R>
impl<P: Clone, const Q: usize, const R: usize> Clone for ChunkInOut<P, Q, R>
Source§fn clone(&self) -> ChunkInOut<P, Q, R>
fn clone(&self) -> ChunkInOut<P, Q, R>
Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreimpl<P: Copy, const Q: usize, const R: usize> Copy for ChunkInOut<P, Q, R>
Source§impl<P: Default, const Q: usize, const R: usize> Default for ChunkInOut<P, Q, R>
impl<P: Default, const Q: usize, const R: usize> Default for ChunkInOut<P, Q, R>
Source§fn default() -> ChunkInOut<P, Q, R>
fn default() -> ChunkInOut<P, Q, R>
Returns the “default value” for a type. Read more
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.