#atomic

atomic_immut

Atomic immutable value

5 releases

Uses old Rust 2015

0.1.4 Feb 5, 2018
0.1.3 Jan 6, 2018
0.1.2 Sep 27, 2017
0.1.1 May 5, 2017
0.1.0 May 5, 2017

#750 in Concurrency

Download history 156/week @ 2023-05-25 216/week @ 2023-06-01 112/week @ 2023-06-08 256/week @ 2023-06-15 266/week @ 2023-06-22 186/week @ 2023-06-29 420/week @ 2023-07-06 165/week @ 2023-07-13 381/week @ 2023-07-20 205/week @ 2023-07-27 156/week @ 2023-08-03 186/week @ 2023-08-10 206/week @ 2023-08-17 152/week @ 2023-08-24 165/week @ 2023-08-31 215/week @ 2023-09-07

773 downloads per month
Used in 26 crates (10 directly)

MIT license

10KB
164 lines

atomic_immut

Crates.io: atomic_immut Documentation Build Status Code Coverage License: MIT

Atomic immutable value for Rust.

Documentation


lib.rs:

Atomic immutable value.

Examples

use std::sync::Arc;
use std::thread;
use atomic_immut::AtomicImmut;

let v = Arc::new(AtomicImmut::new(vec![0]));
{
    let v = v.clone();
    thread::spawn(move || {
                      let mut new = (&*v.load()).clone(); // Loads the immutable reference
                      new.push(1);
                      v.store(new); // Replaces the existing value
                  });
}
while v.load().len() == 1 {}
assert_eq!(&*v.load(), &vec![0, 1]);

No runtime deps