AnyCompiler

Functions

Ek function ke parameters aur return type hamesha explicitly annotate kiye jaate hain. Function body mein aakhri expression — jo bina trailing semicolon ke likha jaata hai — uska return value ban jaata hai; aapko shayad hi kabhi explicit return keyword ki zaroorat padti 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 karo, aur yeh iske bajaye ek statement ban jaata hai, bina kisi value ke.

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 roop mein if, aur Rust ke teen loop forms.

Practice Exercise

Ek function multiply(a: i32, b: i32) -> i32 likho jo a * b return kare, phir multiply(6, 7) print karo.