VarChannelBuffer

Struct VarChannelBuffer 

Source
pub struct VarChannelBuffer<T: Clone + Copy + Default + Sized + Unpin, const MAX_CHANNELS: usize> { /* private fields */ }
Expand description

A memory-efficient buffer of samples with a fixed runtime number of channels each with a fixed runtime number of frames (samples in a single channel of audio).

This version uses an owned Vec as its data source.

Implementations§

Source§

impl<T: Clone + Copy + Default + Sized + Unpin, const MAX_CHANNELS: usize> VarChannelBuffer<T, MAX_CHANNELS>

Source

pub fn empty() -> Self

Create an empty VarChannelBuffer with no allocated capacity.

Source

pub fn new(channels: NonZeroUsize, frames: usize) -> Self

Create a new VarChannelBuffer allocated with the given number of channels each allocated with the given number of frames (samples in a single channel of audio).

All data will be initialized with the default value.

§Panics

Panics if channels.get() > MAX_CHANNELS.

Source

pub unsafe fn new_uninit(channels: NonZeroUsize, frames: usize) -> Self

Create a new VarChannelBuffer allocated with the given number of channels each allocated with the given number of frames (samples in a single channel of audio).

No data will be initialized.

§Safety

Any data must be initialized before reading.

§Panics

Panics if channels.get() > MAX_CHANNELS.

Source

pub fn channels(&self) -> NonZeroUsize

The number of channels in this buffer.

Source

pub fn frames(&self) -> usize

The number of frames (samples in a single channel of audio) that are allocated in this buffer.

Source

pub fn channel(&self, index: usize) -> Option<&[T]>

Get an immutable reference to the channel at index. The slice will have a length of self.frames().

Returns None if index is out of bounds.

Source

pub unsafe fn channel_unchecked(&self, index: usize) -> &[T]

Get an immutable reference to the channel at index. The slice will have a length of self.frames().

§Safety

index must be less than self.channels()

Source

pub fn channel_mut(&mut self, index: usize) -> Option<&mut [T]>

Get a mutable reference to the channel at index. The slice will have a length of self.frames().

Returns None if index is out of bounds.

Source

pub unsafe fn channel_unchecked_mut(&mut self, index: usize) -> &mut [T]

Get a mutable reference to the channel at index. The slice will have a length of self.frames().

§Safety

index must be less than self.channels()

Source

pub fn as_slices(&self) -> ArrayVec<&[T], MAX_CHANNELS>

Get all channels as immutable slices. Each slice will have a length of self.frames().

Source

pub fn as_mut_slices(&mut self) -> ArrayVec<&mut [T], MAX_CHANNELS>

Get all channels as mutable slices. Each slice will have a length of self.frames().

Source

pub fn as_slices_with_length( &self, frames: usize, ) -> ArrayVec<&[T], MAX_CHANNELS>

Get all channels as immutable slices with the given length in frames.

If frames > self.frames(), then each slice will have a length of self.frames() instead.

Source

pub fn as_mut_slices_with_length( &mut self, frames: usize, ) -> ArrayVec<&mut [T], MAX_CHANNELS>

Get all channels as mutable slices with the given length in frames.

If frames > self.frames(), then each slice will have a length of self.frames() instead.

Source

pub fn as_slices_with_range( &self, range: Range<usize>, ) -> ArrayVec<&[T], MAX_CHANNELS>

Get all channels as immutable slices in the given range.

If all or part of the range falls out of bounds, then only the part that falls within range will be returned.

Source

pub fn as_mut_slices_with_range( &mut self, range: Range<usize>, ) -> ArrayVec<&mut [T], MAX_CHANNELS>

Get all channels as mutable slices in the given range.

If all or part of the range falls out of bounds, then only the part that falls within range will be returned.

Source

pub fn raw(&self) -> &[T]

Get the entire contents of the buffer as a single immutable slice.

Source

pub fn raw_mut(&mut self) -> &mut [T]

Get the entire contents of the buffer as a single mutable slice.

Source

pub fn clear(&mut self)

Clear all data with the default value.

Source

pub fn clear_frames(&mut self, frames: usize)

Clear all data in each channel up to frames with the default value.

Source

pub fn as_ref<'a>(&'a self) -> VarChannelBufferRef<'a, T, MAX_CHANNELS>

Source

pub fn as_mut<'a>(&'a mut self) -> VarChannelBufferRefMut<'a, T, MAX_CHANNELS>

Trait Implementations§

Source§

impl<T: Clone + Copy + Default + Sized + Unpin, const CHANNELS: usize> Clone for VarChannelBuffer<T, CHANNELS>

Source§

fn clone(&self) -> Self

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl<T: Debug + Clone + Copy + Default + Sized + Unpin, const MAX_CHANNELS: usize> Debug for VarChannelBuffer<T, MAX_CHANNELS>

Source§

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

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

impl<T: Clone + Copy + Default + Sized + Unpin, const MAX_CHANNELS: usize> Default for VarChannelBuffer<T, MAX_CHANNELS>

Source§

fn default() -> Self

Returns the “default value” for a type. Read more
Source§

impl<T: Clone + Copy + Default + Sized + Unpin, const MAX_CHANNELS: usize> Index<usize> for VarChannelBuffer<T, MAX_CHANNELS>

Source§

type Output = [T]

The returned type after indexing.
Source§

fn index(&self, index: usize) -> &Self::Output

Performs the indexing (container[index]) operation. Read more
Source§

impl<T: Clone + Copy + Default + Sized + Unpin, const MAX_CHANNELS: usize> IndexMut<usize> for VarChannelBuffer<T, MAX_CHANNELS>

Source§

fn index_mut(&mut self, index: usize) -> &mut Self::Output

Performs the mutable indexing (container[index]) operation. Read more
Source§

impl<'a, T: Clone + Copy + Default + Sized + Unpin, const MAX_CHANNELS: usize> Into<VarChannelBufferRef<'a, T, MAX_CHANNELS>> for &'a VarChannelBuffer<T, MAX_CHANNELS>

Source§

fn into(self) -> VarChannelBufferRef<'a, T, MAX_CHANNELS>

Converts this type into the (usually inferred) input type.
Source§

impl<'a, T: Clone + Copy + Default + Sized + Unpin, const MAX_CHANNELS: usize> Into<VarChannelBufferRefMut<'a, T, MAX_CHANNELS>> for &'a mut VarChannelBuffer<T, MAX_CHANNELS>

Source§

fn into(self) -> VarChannelBufferRefMut<'a, T, MAX_CHANNELS>

Converts this type into the (usually inferred) input type.
Source§

impl<T: Clone + Copy + Default + Sized + Unpin, const MAX_CHANNELS: usize> Into<Vec<T>> for VarChannelBuffer<T, MAX_CHANNELS>

Source§

fn into(self) -> Vec<T>

Converts this type into the (usually inferred) input type.
Source§

impl<T: Clone + Copy + Default + Sized + Unpin, const CHANNELS: usize> Send for VarChannelBuffer<T, CHANNELS>

Source§

impl<T: Clone + Copy + Default + Sized + Unpin, const CHANNELS: usize> Sync for VarChannelBuffer<T, CHANNELS>

Auto Trait Implementations§

§

impl<T, const MAX_CHANNELS: usize> Freeze for VarChannelBuffer<T, MAX_CHANNELS>

§

impl<T, const MAX_CHANNELS: usize> RefUnwindSafe for VarChannelBuffer<T, MAX_CHANNELS>
where T: RefUnwindSafe,

§

impl<T, const MAX_CHANNELS: usize> Unpin for VarChannelBuffer<T, MAX_CHANNELS>

§

impl<T, const MAX_CHANNELS: usize> UnwindSafe for VarChannelBuffer<T, MAX_CHANNELS>

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<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
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.