You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Rust中下划线模式赋值行为疑问:Mutex锁是否会立即释放?

Rust中let _ = MutexGuard是否会立即释放锁?

核心差异在于变量绑定的方式,而非_本身的特性:

  • 当使用let _ = Mutex::lock().unwrap();时,Mutex::lock().unwrap()返回的MutexGuard是临时值,let _ = ...的写法会直接丢弃这个临时值,语句执行结束后就会触发drop,锁会立即释放,对应你看到的输出3121。

  • 当把已绑定的_guard所有权转移给_时(比如let _ = _guard;),_会持有MutexGuard的所有权,它的生命周期会延续到当前作用域结束(比如main函数末尾),所以锁不会立即释放,直到作用域结束才会触发drop,对应输出321。

总结:

  • 直接将表达式结果赋值给let _ = ...:临时值语句结束后立即drop,锁立即释放;
  • 将已存在的MutexGuard变量转移给_:_持有所有权到作用域结束,锁不会立即释放。

内容的提问来源于stack exchange,提问作者dpr

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 09:07:04