38 lines
895 B
Rust
38 lines
895 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));
|
|
}
|