String di Rust
Rust punya dua tipe string utama yang sering membingungkan pemula:
String vs &str
| Tipe | Ownership | Mutable | Di mana |
|---|---|---|---|
String | Owned | Bisa | Heap |
&str | Borrowed | Tidak | Stack / binary |
Membuat String
let s1 = String::from("Halo");
let s2 = "Dunia".to_string();
let s3: &str = "literal"; // string literal = &str
Konversi
let owned: String = "hello".to_string();
let slice: &str = &owned; // String → &str (deref coercion)
let owned2: String = slice.to_string(); // &str → String
Method String
let mut s = String::from("Hello");
s.push_str(", World!"); // append string
s.push('!'); // append char
println!("{}", s.len()); // panjang dalam bytes
println!("{}", s.is_empty()); // false
println!("{}", s.contains("World")); // true
println!("{}", s.to_uppercase());
println!("{}", s.to_lowercase());
let replaced = s.replace("Hello", "Hi");
println!("{}", replaced);
format! macro
let nama = "Budi";
let umur = 25;
let pesan = format!("{} berumur {} tahun", nama, umur);
println!("{}", pesan);
Split & Join
let csv = "apel,jeruk,mangga";
let buah: Vec<&str> = csv.split(',').collect();
println!("{:?}", buah); // ["apel", "jeruk", "mangga"]
let joined = buah.join(" - ");
println!("{}", joined); // "apel - jeruk - mangga"