txmap 2.2.2

A concurrent transactional hash map for Rust with fine-grained locking, internal mutability and composable transactions
Documentation
use crate::{
    prelude::*,
    tests::{creators::*, data::*, types::*},
};

#[test]
fn remove() {
    let map = map_alice(42);
    let result = map
        .immediate_tx::<GetOneState>()
        .remove(ALICE.into(), |entry, s| {
            s.result = entry.map(|(_, v)| v);
        })
        .execute();
    assert_eq!(
        result,
        TxResult::Completed(GetOneState { result: Some(42) })
    );
    assert!(map.is_empty());
}

#[test]
fn remove_missing_key() {
    let map = empty_map();
    let result = map
        .immediate_tx::<GetOneState>()
        .remove(ALICE.into(), |entry, s| {
            s.result = entry.map(|(_, v)| v);
        })
        .execute();
    assert_eq!(result, TxResult::Completed(GetOneState { result: None }));
}