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