[][src]Function simplelock::lock_until_finished

pub fn lock_until_finished<R: Any>(
    lock: &mut impl Lock,
    op: impl FnOnce() -> R + UnwindSafe
) -> SimpleLockResult<R>

Simple utility function for wrapping a closure with a lock.

This will handle panics safely as long as they are UnwindSafe. The panic will be caught, the lock will be unlocked, and then the panic is released. This assumes the operation provided is transactional and will handle its own clean-up.

Example

let mut lock = default_lock("MyAppName")?;
let result = lock_until_finished(
    &mut lock,
    || {
        // do something needing a lock.
    }
);