Struct rotary::BufChannelMut [−][src]
The mutable buffer of a single channel.
This doesn’t provide direct access to the underlying buffer, but rather allows us to copy data usinga number of utility functions.
Implementations
impl<'a, T> BufChannelMut<'a, T>
[src]
pub fn linear(buf: &'a mut [T]) -> Self
[src]
Construct a linear buffer.
pub fn interleaved(buf: &'a mut [T], channels: usize, channel: usize) -> Self
[src]
Construct an interleaved buffer.
pub fn frames(&self) -> usize
[src]
The number of frames in the buffer.
Examples
use rotary::BufMut; fn test(buf: &dyn BufMut<f32>) { let left = buf.channel(0); let right = buf.channel(1); assert_eq!(left.frames(), 16); assert_eq!(right.frames(), 16); } test(&rotary::dynamic![[0.0; 16]; 2]); test(&rotary::sequential![[0.0; 16]; 2]); test(&rotary::interleaved![[0.0; 16]; 2]);
pub fn chunks(&self, chunk: usize) -> usize
[src]
The number of chunks that can fit with the given size.
Examples
use rotary::BufMut; fn test(buf: &dyn BufMut<f32>) { let left = buf.channel(0); let right = buf.channel(1); assert_eq!(left.chunks(4), 4); assert_eq!(right.chunks(4), 4); assert_eq!(left.chunks(6), 3); assert_eq!(right.chunks(6), 3); } test(&rotary::dynamic![[0.0; 16]; 2]); test(&rotary::sequential![[0.0; 16]; 2]); test(&rotary::interleaved![[0.0; 16]; 2]);
pub fn set(&mut self, n: usize, value: T)
[src]
Set the value at the given frame in the current channel.
Examples
use rotary::BufMut; use rotary::Range as _; fn test(buf: &mut dyn BufMut<f32>) { buf.channel_mut(0).set(1, 1.0); buf.channel_mut(0).set(7, 1.0); let mut out = vec![0.0; 8]; buf.channel(0).copy_into_slice(&mut out); assert_eq!(out, vec![0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0]); } test(&mut rotary::dynamic![[0.0; 8]; 2]); test(&mut rotary::sequential![[0.0; 8]; 2]); test(&mut rotary::interleaved![[0.0; 8]; 2]);
pub fn copy_from_slice(&mut self, buf: &[T]) where
T: Copy,
[src]
T: Copy,
Copy from the given slice.
Examples
use rotary::BufMut; use rotary::Range as _; fn test(buf: &mut dyn BufMut<f32>) { buf.channel_mut(0).copy_from_slice(&[1.0; 4][..]); let mut out = vec![0.0; 8]; buf.channel(0).copy_into_slice(&mut out); assert_eq!(out, vec![1.0, 1.0, 1.0, 1.0, 0.0, 0.0, 0.0, 0.0]); } test(&mut rotary::dynamic![[0.0; 8]; 2]); test(&mut rotary::sequential![[0.0; 8]; 2]); test(&mut rotary::interleaved![[0.0; 8]; 2]);
pub fn copy_from_iter<R, I>(&mut self, range: R, iter: I) where
R: Range,
I: IntoIterator<Item = T>,
[src]
R: Range,
I: IntoIterator<Item = T>,
Copy a chunked destination from an iterator.
Examples
use rotary::BufMut; use rotary::Range as _; fn test(buf: &mut dyn BufMut<f32>) { buf.channel_mut(0).copy_from_iter(rotary::range::full().offset(2), vec![1.0; 4]); let mut out = vec![0.0; 8]; buf.channel(0).copy_into_slice(&mut out); assert_eq!(out, vec![0.0, 0.0, 1.0, 1.0, 1.0, 1.0, 0.0, 0.0]); } test(&mut rotary::dynamic![[0.0; 8]; 2]); test(&mut rotary::sequential![[0.0; 8]; 2]); test(&mut rotary::interleaved![[0.0; 8]; 2]);
use rotary::BufMut; use rotary::Range as _; fn test(buf: &mut dyn BufMut<f32>) { buf.channel_mut(0).copy_from_iter(rotary::range::full().offset(2).chunk(0, 2), vec![1.0; 4]); let mut out = vec![0.0; 8]; buf.channel(0).copy_into_slice(&mut out); assert_eq!(out, vec![0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0, 0.0]); } test(&mut rotary::dynamic![[0.0; 8]; 2]); test(&mut rotary::sequential![[0.0; 8]; 2]); test(&mut rotary::interleaved![[0.0; 8]; 2]);
Trait Implementations
impl<'a, T: Debug> Debug for BufChannelMut<'a, T>
[src]
Auto Trait Implementations
impl<'a, T> RefUnwindSafe for BufChannelMut<'a, T> where
T: RefUnwindSafe,
T: RefUnwindSafe,
impl<'a, T> Send for BufChannelMut<'a, T> where
T: Send,
T: Send,
impl<'a, T> Sync for BufChannelMut<'a, T> where
T: Sync,
T: Sync,
impl<'a, T> Unpin for BufChannelMut<'a, T>
impl<'a, T> !UnwindSafe for BufChannelMut<'a, T>
Blanket Implementations
impl<T> Any for T where
T: 'static + ?Sized,
[src]
T: 'static + ?Sized,
impl<T> Borrow<T> for T where
T: ?Sized,
[src]
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
[src]
T: ?Sized,
pub fn borrow_mut(&mut self) -> &mut T
[src]
impl<T> From<T> for T
[src]
impl<T, U> Into<U> for T where
U: From<T>,
[src]
U: From<T>,
impl<T, U> TryFrom<U> for T where
U: Into<T>,
[src]
U: Into<T>,
type Error = Infallible
The type returned in the event of a conversion error.
pub fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>
[src]
impl<T, U> TryInto<U> for T where
U: TryFrom<T>,
[src]
U: TryFrom<T>,