oneringbuf 0.7.0

A lock-free single-producer, single-consumer (SPSC) ring buffer with in-place mutability, asynchronous support, and virtual memory optimisation.
Documentation
use crate::{common_def, get_buf};
use oneringbuf::ORBIterator;

common_def!();

#[test]
pub fn prod_drop_test() {
    let mut buf = get_buf!(SharedMut);
    let (prod, _work, cons) = buf.split_mut();

    assert_eq!(cons.alive_iters(), 3);

    drop(prod);

    assert_eq!(cons.alive_iters(), 2);
}

#[test]
pub fn work_drop_test() {
    let mut buf = get_buf!(SharedMut);
    let (_prod, work, cons) = buf.split_mut();

    assert_eq!(cons.alive_iters(), 3);

    drop(work);

    assert_eq!(cons.alive_iters(), 2);
}

#[test]
pub fn cons_drop_test() {
    let mut buf = get_buf!(SharedMut);
    let (prod, _work, cons) = buf.split_mut();

    assert_eq!(prod.alive_iters(), 3);

    drop(cons);

    assert_eq!(prod.alive_iters(), 2);
}

#[test]
pub fn drop_everything() {
    let mut buf = get_buf!(SharedMut);
    let (prod, work, cons) = buf.split_mut();

    drop(prod);
    drop(work);
    drop(cons);
}