What is the evaluation order of tuples in Rust?
问题 Tuple elements may have side-effects, and some of them may depend on others. Consider this program: fn main() { let mut v = vec![1, 2]; match (v.pop(), v.pop()) { (Some(z), Some(y)) => println!("y = {}, z = {}", y, z), _ => unreachable!(), } } Does it output y = 1, z = 2 or y = 2, z = 1 ? A few rounds on the Rust Playground suggests the former on stable 1.32.0, but maybe it would change if I ran it more times, recompiled the compiler, changed compiler versions, etc. Is there a documented