AnyCompiler

Variables aur Mutability

Rust mein, let se declare kiya gaya variable default roop se immutable hota hai — ek baar usko value de do, to aap use change nahi kar sakte. Yeh jaan bujh kar hai: ek achhe likhe program mein zyadatar variables ko kabhi change hone ki zaroorat nahi hoti, aur compiler ka ek accidental reassignment pakad lena, baad mein use bug ke roop mein discover karne se kahin behtar hai.

fn main() {
    let x = 5;
    println!("x = {}", x);

    let mut y = 10;
    println!("y = {}", y);
    y = 20;
    println!("y = {}", y);
}
Output
x = 5
y = 10
y = 20

Upar wale x mein mut nahi hai, isliye use kabhi reassign nahi kiya ja sakta — koshish karna ek compile error hoga. y ko let mut se declare kiya gaya hai, jo use explicitly mutable banane ke liye opt karta hai.

Shadowing

Shadowing aapko pichle wale jaisa hi naam rakh kar ek naya variable declare karne deta hai, jo usko poori tarah replace kar deta hai — yeh mutation se alag hai: har let spaces ek bilkul naya variable banata hai, aur yeh uska type bhi change kar sakta hai, jo plain mutation kabhi nahi kar sakta tha.

fn main() {
    let spaces = "   ";
    let spaces = spaces.len();
    println!("spaces = {}", spaces);
}
Output
spaces = 3

Aage: basic types — Rust ke scalar types, aur type inference actually kitni door tak jaata hai.

Practice Exercise

Ek immutable variable price: f64 = 9.99 declare karo. Phir ek mutable variable count: i32 = 1 declare karo, use 1 se badhao, aur price aur count dono ko saath mein print karo println!("{} {}", price, count) use karke.