fast_stm

Function optionally

Source
pub fn optionally<T, F>(tx: &mut Transaction, f: F) -> StmResult<Option<T>>
where F: Fn(&mut Transaction) -> StmResult<T>,
Expand description

Optionally run a transaction f. If f fails with a retry(), it does not cancel the whole transaction, but returns None.

Note that optionally does not always recover the function, if inconsistencies where found.

unwrap_or_retry is the inverse of optionally.

ยงExample

let x:Option<i32> = atomically(|tx|
    optionally(tx, |_| retry()));
assert_eq!(x, None);