// basic tests to see that certain "obvious" errors are caught by // these types no longer requiring `'static` (RFC 458) #![allow(dead_code)] use std::sync::{Mutex, RwLock, mpsc}; fn mutex() { let lock = { let x = 1; Mutex::new(&x) }; //~^^ ERROR `x` does not live long enough let _dangling = *lock.lock().unwrap(); } fn rwlock() { let lock = { let x = 1; RwLock::new(&x) }; //~^^ ERROR `x` does not live long enough let _dangling = *lock.read().unwrap(); } fn channel() { let (_tx, rx) = { let x = 1; let (tx, rx) = mpsc::channel(); let _ = tx.send(&x); (tx, rx) }; //~^^^ ERROR `x` does not live long enough let _dangling = rx.recv(); } fn main() {}