AnyCompiler

Functions

Ek function ke parameters aur return type hamesha explicitly annotate kiye jaate hain. Function body mein aakhri expression — jo baghair trailing semicolon ke likha jaata hai — uska return value ban jaata hai; aapko shayad hi kabhi explicit return keyword ki zaroorat parti hai.

fn add(a: i32, b: i32) -> i32 {
    a + b // no semicolon - this is the return value
}

fn main() {
    let sum = add(3, 4);
    println!("sum = {}", sum);
}
Output
sum = 7

Expressions vs. statements

Yeh distinction poori language mein chalta hai, sirf function bodies mein nahi: ek block { ... } khud ek expression hota hai, aur uski value woh hoti hai jo uski aakhri line evaluate hoti hai, jab tak us line mein semicolon na ho. Semicolon add karein, aur yeh iske bajaye ek statement ban jaata hai, kisi value ke baghair.

fn main() {
    let y = {
        let x = 3;
        x + 1 // expression, no semicolon - becomes the block's value
    };
    println!("y = {}", y);
}
Output
y = 4

Aage: control flow — ek expression ke tor par if, aur Rust ke teen loop forms.

Practice Exercise

Ek function multiply(a: i32, b: i32) -> i32 likhein jo a * b wapas kare, phir multiply(6, 7) print karein.