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

Rust是否支持bool类型的短路AndAssign/OrAssign运算符&&=、||=?

Rust中bool类型的短路赋值运算符问题

Rust 标准库中没有为 bool 类型提供原生的短路求值版 &&=(AndAssign)或 ||=(OrAssign)运算符,也就是你描述的那种等价于以下逻辑的语法糖:

// 预期的 x &&= y 逻辑
if x { x = y; }

// 预期的 x ||= y 逻辑
if !x { x = y; }

不过你可以用更简洁的写法实现完全等价的短路逻辑:

  • 对应 &&= 的短路逻辑:x = x && y;
    这个写法利用了&&本身的短路特性:当x为false时,不会计算y,直接保留x的原值;当x为true时,才会计算y并将结果赋值给x,和你写的if语句逻辑完全一致。

  • 对应 ||= 的短路逻辑:x = x || y;
    同理,||的短路特性会在x为true时跳过y的计算,仅在x为false时才计算y并赋值。

需要特别注意区分短路写法和非短路的位运算赋值:

  • x &= y 是位运算赋值,不会短路,无论x是什么值,都会先计算y再执行赋值,若y是带有副作用的表达式(比如函数调用),行为和短路写法完全不同。

如果追求极致的可读性,你最初的if语句写法也是完全可行的,尤其是在y的表达式比较复杂时,显式的if块可能更清晰。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 20:51:00