Option<T> di Rust
Penjelasan
Rust TIDAK PUNYA null/nil sama sekali — sebagai gantinya, "ketiadaan nilai" direpresentasikan lewat enum bawaan Option<T>, yang punya dua varian: Some(nilai) (ada nilainya) atau None (tidak ada). Ini memaksa kamu menangani kemungkinan "tidak ada nilai" secara eksplisit lewat match atau method seperti unwrap_or(), mencegah error null yang sering terjadi di bahasa lain.
Contoh Konsep
fn cari_pengguna(id: i32) -> Option<String> {
if id == 1 {
Some(String::from("CompileDaily"))
} else {
None
}
}
fn main() {
let hasil = cari_pengguna(1);
match hasil {
Some(nama) => println!("Ditemukan: {}", nama),
None => println!("Tidak ditemukan"),
}
// Cara singkat dengan nilai default
let nama_lain = cari_pengguna(99).unwrap_or(String::from("Tamu"));
println!("{}", nama_lain); // Tamu
}
Praktikum
Buat fungsi cari_nilai(nama: &str) -> Option<i32> yang mengembalikan Some(100) kalau nama-nya "Budi", selain itu None. Panggil dengan nama lain, lalu pakai unwrap_or(0) untuk memberi nilai default 0, dan tampilkan hasilnya.
Ketik/edit bebas di sini untuk latihan — kode ini tidak dijalankan.
Tips
Hindari .unwrap() tanpa pertimbangan di kode production — kalau Option-nya ternyata None, unwrap() akan membuat program panic (crash). Utamakan match, unwrap_or(default), atau if let Some(x) = ... untuk menangani kemungkinan None dengan aman.