相关疑难解决方法(0)

Rust中元组的评估顺序是什么?

元组元素可能有副作用,其中一些可能依赖于其他元素.考虑这个程序:

fn main() {
    let mut v = vec![1, 2];
    match (v.pop(), v.pop()) {
        (Some(z), Some(y)) => println!("y = {}, z = {}", y, z),
        _ => unreachable!(),
    }
}
Run Code Online (Sandbox Code Playgroud)

是输出y = 1, z = 2还是y = 2, z = 1Rust Playground上的一些回合表明前者稳定在1.32.0,但如果我运行它多次,重新编译编译器,更改编译器版本等,它可能会改变.

是否有书面承诺或至少有意维持元组的特定评估顺序(例如深度优先和从左到右)?

tuples operator-precedence language-specifications rust semantics

4
推荐指数
1
解决办法
187
查看次数