mirror of
				https://github.com/rust-lang/rust.git
				synced 2025-10-31 13:04:42 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			40 lines
		
	
	
		
			772 B
		
	
	
	
		
			Rust
		
	
	
	
	
	
			
		
		
	
	
			40 lines
		
	
	
		
			772 B
		
	
	
	
		
			Rust
		
	
	
	
	
	
| // 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() {}
 | 
