pub trait WriteLock<'a> {
type Output;
// Required methods
unsafe fn lock_info(&self) -> LockInfo<'_>;
unsafe fn lock_unchecked(self) -> <Self as WriteLock<'a>>::Output;
// Provided method
fn write(self) -> Mut<Self>
where Self: Sized { ... }
}