mirror of
				https://github.com/rust-lang/rust.git
				synced 2025-10-30 20:44:34 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			38 lines
		
	
	
		
			896 B
		
	
	
	
		
			Rust
		
	
	
	
	
	
			
		
		
	
	
			38 lines
		
	
	
		
			896 B
		
	
	
	
		
			Rust
		
	
	
	
	
	
| //@ run-pass
 | |
| 
 | |
| fn main() {
 | |
|     let (mut a, mut b);
 | |
|     (a, b) = (0, 1);
 | |
|     assert_eq!((a, b), (0, 1));
 | |
|     (b, a) = (a, b);
 | |
|     assert_eq!((a, b), (1, 0));
 | |
|     (a, .., b) = (1, 2);
 | |
|     assert_eq!((a, b), (1, 2));
 | |
|     (.., a) = (1, 2);
 | |
|     assert_eq!((a, b), (2, 2));
 | |
|     (..) = (3, 4);
 | |
|     assert_eq!((a, b), (2, 2));
 | |
|     (b, ..) = (5, 6, 7);
 | |
|     assert_eq!(b, 5);
 | |
|     (a, _) = (8, 9);
 | |
|     assert_eq!(a, 8);
 | |
| 
 | |
|     // Test for a non-Copy type (String):
 | |
|     let (mut c, mut d);
 | |
|     (c, d) = ("c".to_owned(), "d".to_owned());
 | |
|     assert_eq!(c, "c");
 | |
|     assert_eq!(d, "d");
 | |
|     (d, c) = (c, d);
 | |
|     assert_eq!(c, "d");
 | |
|     assert_eq!(d, "c");
 | |
| 
 | |
|     // Test nesting/parentheses:
 | |
|     ((a, b)) = (0, 1);
 | |
|     assert_eq!((a, b), (0, 1));
 | |
|     (((a, b)), (c)) = ((2, 3), d);
 | |
|     assert_eq!((a, b), (2, 3));
 | |
|     assert_eq!(c, "c");
 | |
|     ((a, .., b), .., (..)) = ((4, 5), ());
 | |
|     assert_eq!((a, b), (4, 5));
 | |
| }
 | 
