ما الفرق بين `mut` قبل اسم المتغير وبعده بعد النقطتين في Rust؟
مرحبًا بالجميع! بدأت تعلم 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` بعد النقطتين؟