Study
Rust

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.

Editor Latihan

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.