Study
Rust

Closure di Rust

Penjelasan

Closure adalah fungsi anonim yang bisa "menangkap" variabel dari scope di sekitarnya, ditulis dengan sintaks |parameter| ekspresi. Closure dipakai LUAS di Rust idiomatis, terutama bareng method iterator seperti .map() dan .filter() pada Vec — kamu sudah memakainya secara implisit di materi Array & Vector sebelumnya, tanpa dijelaskan sintaksnya secara eksplisit.

Contoh Konsep

fn main() {
    let kalikan_dua = |angka: i32| angka * 2; // closure sederhana
    println!("{}", kalikan_dua(5)); // 10

    let pajak = 0.1;
    let hitung_total = |harga: f64| harga + (harga * pajak); // menangkap variabel pajak
    println!("{}", hitung_total(100.0)); // 110

    let angka = vec![1, 2, 3];
    let kuadrat: Vec<i32> = angka.iter().map(|n| n * n).collect();
    println!("{:?}", kuadrat); // [1, 4, 9]
}

Praktikum

Buat closure hitung_pajak yang menerima f64 dan mengembalikan harga + (harga * 0.1). Panggil dengan angka 100.0, lalu tampilkan hasilnya.

Editor Latihan

Ketik/edit bebas di sini untuk latihan — kode ini tidak dijalankan.

Tips

Closure di Rust otomatis menyimpulkan cara menangkap variabel luar (lewat reference, mutable reference, atau ownership) sesuai kebutuhan di dalam body-nya — kamu jarang perlu menuliskannya eksplisit, beda dari closure di C++ yang butuh capture list manual ([&] atau [=]).