`iflet`如果中间值不运行析构函数

考虑两个语义等效的代码段:

let x = Mutex::new(0);
if *x.lock().unwrap() == 0 {
    *x.lock().unwrap() = 1;
}
let x = Mutex::new(0);
if let 0 = *x.lock().unwrap() {
    *x.lock().unwrap() = 1;
}

第一个按预期运行,而第二个则死锁。为什么守卫析构函数被运行if而不是被运行if let?在哪里可以找到有关此行为的文档?

以上是`iflet`如果中间值不运行析构函数的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>