Muray's space
fn main() {
    let mut a = 5;
    let mut b = 3;
    print!("{}", a-- - --b);
}

CJava不同,Rust中没有一元递增或递减运算符。Rust语言设计FAQ曾经提到了原因:

为什么Rust没有递增和递减运算符?

前置递增和后置递增(以及递减的等价物)虽然方便,但也相当复杂。 它们需要了解评估顺序,并且常常导致CC++中的隐晦错误和未定义行为。 x = x + 1x += 1只稍微长一点,但是更加明确。

在没有后置和前置递减运算符的情况下,a-- - --b被解析为a - (-(-(-(-b))))。对于a = 5b = 3的情况,该表达式的值为5 - 3,即2