AnyCompiler

Strings aur Slices

Ek string slice, &str, ek String ke part (ya poore) ka reference hota hai — yeh underlying text ko own karne ke bajaye borrow karta hai. [start..end] se slicing karna aapko original string ka ek view deta hai, uske data ko copy kiye bina.

fn main() {
    let s = String::from("hello world");

    let hello = &s[0..5];
    let world = &s[6..11];

    println!("{} {}", hello, world);
}
Output
hello world

String vs &str

String ek owned, growable type hai — jab bhi kisi function ko text build karna ho ya use hold karke rakhna ho, aapko yeh dikhega. &str ek borrowed view hota hai aise text mein jo kahin aur owned hai, jisme string literals bhi shamil hain, jo default roop se &str hote hain. Jo functions ko sirf ek string padhni hoti hai woh usually &str lete hain, kyunki yeh String (ek borrow ke through) aur literal dono accept karta hai.

fn main() {
    let s1: &str = "a string slice";
    let s2: String = String::from("an owned String");

    println!("{}", s1);
    println!("{}", s2);
}
Output
a string slice
an owned String

Aage: structs — related data ko saath mein group karna, aur usme methods attach karna.

Practice Exercise

let s = String::from("rust lang") diya gaya hai, ek slice first banao jisme sirf "rust" ho (pehle 4 characters), phir first print karo.