shared-buffer-rs 0.2.0

A library which combines Arc and RefCell for Send and Sync
Documentation
use std::time::Duration;

use shared_buffer_rs::RwBuffers;


fn main()
{
    let mut bufs = RwBuffers::new(4096, 1, 3).unwrap();

    let buf0 = bufs.allocate().unwrap();

    let mut buf0_write = buf0.write().unwrap();
    
    buf0_write.as_mut_slice()[0] = 5;
    buf0_write.as_mut_slice()[1] = 4;

    println!("{}", buf0_write[0]);

    let buf0_r = buf0_write.downgrade().unwrap();

    let join1=
        std::thread::spawn(move ||
            {
                println!("thread[1]:{}", buf0_r[0]);

                std::thread::sleep(Duration::from_secs(1));

                return;
            }
        );

    let buf0_r = buf0.read().unwrap();

    // drop base
    drop(buf0);

    let join2=
        std::thread::spawn(move ||
            {
                println!("thread[2]: {}", buf0_r[0]);
                println!("thread[2]: {}", buf0_r[1]);

                std::thread::sleep(Duration::from_secs(1));

                return;
            }
        );

    
    let _ = join1.join();
    let _ = join2.join();

}