[][src]Crate per_thread_object

Efficient per-object thread-local storage implementation.

use std::thread;
use std::sync::Arc;
use std::cell::RefCell;
use per_thread_object::ThreadLocal;

fn default() -> RefCell<u32> {
    RefCell::new(0x0)
}

let tl: Arc<ThreadLocal<RefCell<u32>>> = Arc::new(ThreadLocal::new());
let tl2 = tl.clone();

thread::spawn(move || {
    *tl2.get_or(default)
        .borrow_mut() += 1;
    assert_eq!(0x1, *tl2.get().unwrap().borrow());
})
    .join()
    .unwrap();

*tl.get_or(default)
    .borrow_mut() += 2;
assert_eq!(0x2, *tl.get_or(default).borrow());

Structs

ThreadLocal

Per-object thread-local storage