dasp_ring_buffer 0.11.0

Simple fixed and bounded ring buffers for audio PCM DSP.
Documentation
use dasp_ring_buffer as ring_buffer;

#[test]
fn test_bounded_boxed_slice() {
    let mut rb = ring_buffer::Bounded::from(vec![0; 3].into_boxed_slice());
    assert_eq!(rb.push(1), None);
    assert_eq!(rb.push(2), None);
    assert_eq!(rb.push(3), None);
    assert_eq!(rb.push(4), Some(1));
}

#[test]
fn test_bounded_array() {
    let mut rb = ring_buffer::Bounded::from([0i32; 3]);
    assert_eq!(rb.push(1), None);
    assert_eq!(rb.push(2), None);
    assert_eq!(rb.push(3), None);
    assert_eq!(rb.push(4), Some(1));
}

#[test]
#[should_panic]
fn text_bounded_from_empty_vec() {
    ring_buffer::Bounded::from(Vec::<i32>::new());
}

#[test]
fn test_bounded_from_vec() {
    let mut rb = ring_buffer::Bounded::from(vec![1, 2, 3]);
    assert_eq!(rb.push(4), None);
    assert_eq!(rb.push(5), None);
    assert_eq!(rb.push(6), None);
    assert_eq!(rb.push(7), Some(4));
}

#[test]
#[should_panic]
fn test_bounded_get_out_of_range() {
    let rb = ring_buffer::Bounded::from([0i32; 3]);
    let _ = rb[0];
}