//! # Lock
//! This crate is a simple wrapper around sync mutexes that makes it impossible to
//! hold a lock over an await.
//!
//! It also makes it a lot clearer where the bounds of the lock are which helps make deadlocks easier to debug
//! as a deadlock would require having the call to `apply` more than once on the stack.
/// A lock that is guaranteed to be released before an await.