shared-type 1.0.0

Shared type alias and several traits to simplify working with Arc<Mutex<T>>.
Documentation


#[test]
fn test_shared() {
    fn unpack(shared: Shared<i32>) -> i32 {
        let shared = shared.lock().unwrap();
        let unwraped_val = *shared;
        unwraped_val
    }

    use crate::shared::{IntoShared, Shared};
    let shared = 42.into_shared();
    let shared = shared.lock().unwrap();
    assert_eq!(*shared, 42);

    let packed_val = 420.into_shared();
    let unpackaged_val = unpack(packed_val);

    assert_eq!(unpackaged_val, 420);
}

#[test]
fn test_with() {
    use crate::shared::{IntoShared, WithSharedInner};
    let shared = 42.into_shared();
    shared.with_inner(|val| {
        *val = 43;
    });
    let shared = shared.lock().unwrap();
    assert_eq!(*shared, 43);
}