| //@ 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)); |
| } |