Crates.io API

Overview

rw_cell provides the ability to securely write data from one location of application and read it from another even if Writer and Reader located in different threads without copying/cloning and blocking access to data.

MWSR fun example

```rust fn main() { let (w0, mut r) = rw_cell::mwsr::cell(vec!["Ukraine"; 1000]);

let w1 = r.get_writer();
let w2 = r.get_writer();
let w3 = r.get_writer();
let w4 = r.get_writer();
let w5 = r.get_writer();

std::thread::spawn(move || loop {
    w0.write(vec!["Slovakia"; 1001])
});

std::thread::spawn(move || loop {
    w1.write(vec!["Estonia"; 1002])
});

std::thread::spawn(move || loop {
    w2.write(vec!["Czechia"; 1003])
});

std::thread::spawn(move || loop {
    w3.write(vec!["United Kingdom"; 1004])
});

std::thread::spawn(move || loop {
    w4.write(vec!["Lithuania"; 1005])
});

std::thread::spawn(move || loop {
    w5.write(vec!["Latvia"; 1006])
});

let mut slovakia        = 0;
let mut estonia         = 0;
let mut czechia         = 0;
let mut united_kingdom  = 0;
let mut lithuania       = 0;
let mut latvia          = 0;
let mut ukraine         = 0;

for _ in 0..10000000usize {
    match r.read() {
        val if val.first() == Some(&"Slovakia")         => slovakia += 1,
        val if val.first() == Some(&"Estonia")          => estonia += 1,
        val if val.first() == Some(&"Czechia")          => czechia += 1,
        val if val.first() == Some(&"United Kingdom")   => united_kingdom += 1,
        val if val.first() == Some(&"Lithuania")        => lithuania += 1,
        val if val.first() == Some(&"Latvia")           => latvia += 1,
        val if val.first() == Some(&"Ukraine")          => ukraine += 1,
        val => println!("val: {:?}, Not good, but ok", val.first())
    }
}

println!("count Slovakia:       {}", slovakia);
println!("count Estonia:        {}", estonia);
println!("count Czechia:        {}", czechia);
println!("count United Kingdom: {}", united_kingdom);
println!("count Lithuania:      {}", lithuania);
println!("count Latvia:         {}", latvia);
println!("count Ukraine:        {}", ukraine);

} ```