Avatar ·

Rust中`mut`放在变量名前和冒号后有什么区别?

大家好!我最近开始学习Rust,在变量声明的语法上遇到了困惑。在教程中,我看到关键字`mut`有两种不同的使用方式,不明白它们之间的区别。 第一种方式——`mut`放在变量名前: ```rust let mut x = 5; ``` 第二种方式——`mut`放在冒号后,指定类型时: ```rust let x: mut i32 = 5; ``` 我尝试了两种方式,但第二种会导致编译错误。以下是我写的示例: ```rust fn main() { let mut a = 10; // 正常工作 a += 5; let b: mut i32 = 20; // 错误! b += 10; println!("a = {}, b = {}", a, b); } ``` 编译器提示“expected type, found keyword mut”。我原以为`mut`可以放在任何位置,但显然并非如此。请解释一下这两种方式的区别,以及为什么第二种方式不工作?是否有某些情况下`mut`可以放在冒号后?