ringbuf 0.4.8

Lock-free SPSC FIFO ring buffer with direct access to inner data
Documentation
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#![no_std]

use lock_free_static::OnceMut;
use ringbuf::{traits::*, StaticRb};

static RB: OnceMut<StaticRb<i32, 1>> = OnceMut::new();

fn main() {
    RB.set(StaticRb::default()).ok().expect("RB already initialized");

    let (mut prod, mut cons) = RB.get_mut().expect("Mutable reference to RB already taken").split_ref();

    assert_eq!(prod.try_push(123), Ok(()));
    assert_eq!(prod.try_push(321), Err(321));

    assert_eq!(cons.try_pop(), Some(123));
    assert_eq!(cons.try_pop(), None);
}