Crate arc_map[−][src]
The ArcMap exists to enable multiple Mutex based Elements in a Map to be accessible
without the need for locking the whole HashMap, while you access one element.
Instead the Map is hidden inside a thread, that will return accesible elements as requested.
Rather than limit the access within the fn it seemed simple to return the Arc directly.
Though because the Map may not contain the required element,
and becuase of thread send/recieve. The get method returns a "Result<Arc<Mutex
This can be accessed as follows : (Though normally for more complex objects)
use arc_map::ArcMap; let mut am = ArcMap::new(); //update by grabbing mutex am.insert(3,"hello".to_string()); { let p = am.get(3).unwrap(); //p is Arc<Mutex<String>> let mut s = p.lock().unwrap(); s.push_str(" world"); } //read by grabbing mutex { let p2 = am.get(3).unwrap(); let s2 = p2.lock().unwrap(); assert_eq!(*s2,"hello world".to_string()); } am.insert(4,"goodbye".to_string()); //update in place (No need for scoping) am.on_do(4,|mut s| (&mut s).push_str(" cruel world")).unwrap(); //get info out let ls = am.on_do(4,|s| s.clone()).unwrap(); assert_eq!(&ls,"goodbye cruel world");
While this can be achieved using traditional mutex locks, the interface here is much simpler to use.
Re-exports
pub use amap_error::AMapErr; |
Modules
amap_error |
AMapErr exists to allow ? operations in main code. |
Structs
ArcMap |
Traits
MKey | |
MVal |