Skip to main content

ChunkInOut

Struct ChunkInOut 

Source
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: P

Trait Implementations§

Source§

impl<P: Clone, const Q: usize, const R: usize> Clone for ChunkInOut<P, Q, R>

Source§

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)

Performs copy-assignment from source. Read more
Source§

impl<P: Copy, const Q: usize, const R: usize> Copy for ChunkInOut<P, Q, R>

Source§

impl<P: Debug, const Q: usize, const R: usize> Debug for ChunkInOut<P, Q, R>

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl<P: Default, const Q: usize, const R: usize> Default for ChunkInOut<P, Q, R>

Source§

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>
where Self: SplitProcess<[X; N], [X; N], S>,

Source§

fn inplace(&self, state: &mut S, xy: &mut [[X; N]])

Source§

impl<C, S, X: Copy, Y: Default + Copy, const Q: usize, const N: usize, const R: usize, const M: usize> SplitProcess<[X; N], [Y; M], S> for ChunkInOut<C, Q, R>
where C: SplitProcess<[X; Q], [Y; R], S>,

Source§

fn process(&self, state: &mut S, x: [X; N]) -> [Y; M]

Process an input into an output Read more
Source§

fn block(&self, state: &mut S, x: &[[X; N]], y: &mut [[Y; M]])

Process a block of inputs Read more

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> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<'a, X, S, T, const L: usize> SplitViewInplace<ViewMut<'a, X, FrameMajor, L>, S> for T
where X: Copy, T: SplitInplace<X, S>, S: ?Sized,

Source§

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
where X: Copy, T: SplitProcess<X, Y, S>, S: ?Sized,

Source§

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.
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.