pub struct RingBuffer<T, const N: usize>where
T: Transcendental,{ /* private fields */ }Expand description
Кольцевой буфер с фиксированным размером
§Пример
use rill_core::buffer::RingBuffer;
let mut buffer = RingBuffer::<f32, 4>::new();
buffer.write(1.0);
buffer.write(2.0);
buffer.write(3.0);
buffer.write(4.0);
assert_eq!(buffer.read_delayed(0), 4.0); // последний записанный
assert_eq!(buffer.read_delayed(1), 3.0);
assert_eq!(buffer.read_delayed(2), 2.0);
assert_eq!(buffer.read_delayed(3), 1.0);Implementations§
Source§impl<T, const N: usize> RingBuffer<T, N>where
T: Transcendental,
impl<T, const N: usize> RingBuffer<T, N>where
T: Transcendental,
Sourcepub fn new() -> RingBuffer<T, N>
pub fn new() -> RingBuffer<T, N>
Sourcepub fn write(&mut self, sample: T)
pub fn write(&mut self, sample: T)
Записать семпл (всегда успешно, перезаписывает старые данные)
§Safety
Эта операция безопасна, потому что:
headуникален для производителя- Производитель никогда не читает из своей позиции
- Атомарные операции гарантируют видимость
Sourcepub fn write_slice(&mut self, samples: &[T])
pub fn write_slice(&mut self, samples: &[T])
Записать массив семплов
Sourcepub fn read_delayed(&self, delay: usize) -> T
pub fn read_delayed(&self, delay: usize) -> T
Sourcepub fn read_interpolated(&self, delay_frac: f32) -> T
pub fn read_interpolated(&self, delay_frac: f32) -> T
Sourcepub fn read_sequence_interpolated(&self, start_delay: f32, output: &mut [T])
pub fn read_sequence_interpolated(&self, start_delay: f32, output: &mut [T])
Прочитать последовательность с интерполяцией
§Arguments
start_delay- начальная задержкаoutput- буфер для записи результата
Source§impl<T, const N: usize> RingBuffer<T, N>where
T: Transcendental,
impl<T, const N: usize> RingBuffer<T, N>where
T: Transcendental,
Trait Implementations§
Source§impl<T, const N: usize> Debug for RingBuffer<T, N>where
T: Transcendental + Debug,
impl<T, const N: usize> Debug for RingBuffer<T, N>where
T: Transcendental + Debug,
Source§impl<T, const N: usize> Default for RingBuffer<T, N>where
T: Transcendental,
impl<T, const N: usize> Default for RingBuffer<T, N>where
T: Transcendental,
Source§fn default() -> RingBuffer<T, N>
fn default() -> RingBuffer<T, N>
Returns the “default value” for a type. Read more
impl<T, const N: usize> Send for RingBuffer<T, N>where
T: Transcendental + Send,
impl<T, const N: usize> Sync for RingBuffer<T, N>where
T: Transcendental + Sync,
Auto Trait Implementations§
impl<T, const N: usize> !Freeze for RingBuffer<T, N>
impl<T, const N: usize> !RefUnwindSafe for RingBuffer<T, N>
impl<T, const N: usize> Unpin for RingBuffer<T, N>where
T: Unpin,
impl<T, const N: usize> UnsafeUnpin for RingBuffer<T, N>where
T: UnsafeUnpin,
impl<T, const N: usize> UnwindSafe for RingBuffer<T, N>where
T: 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