Crate acid_state

Source
Expand description

acid-state adds durable transaction support to any serializable structure. Transactional state.

§Examples

#[macro_use]
extern crate acid_state;
#[macro_use]
extern crate lazy_static;
extern crate rustc_serialize;

use std::collections::HashMap;

#[derive(Debug, RustcDecodable, RustcEncodable)]
struct Cs {
   v: u64,
}

acid_state! {
   A: HashMap<String, u64> = HashMap::new();
   B: u64 = 0;
   C: Cs = Cs {
       v: 0
   };
}

 let key = "yo".to_owned();
 acid! {
     (A => a, B => b, C => c) => {
         // A, B, C have been pulled off disk
         let mut current = a.entry(key).or_insert(0);
         **b += 1;
         *current += 1;
         c.v += 1;
         println!("a is now {:?}", current);
         println!("b is now {:?}", **b);
         println!("c is now {:?}", c.v);
         // new values of A, B, C are now synced on disk
     }
 };

Macros§

Structs§

  • A thread-safe reference-counting pointer. ‘Arc’ stands for ‘Atomically Reference Counted’.
  • A mutual exclusion primitive useful for protecting shared data