monitor
pub struct Monitor<T: Sized> { // some fields omitted }
impl<T: Sized> Monitor<T>
fn new(val: T) -> Monitor<T>
fn with_lock<U>(&self, f: &Fn(MonitorGuard<T>) -> U) -> U