Study
Rust

Borrowing & Reference di Rust

Penjelasan

Karena ownership hanya boleh dimiliki satu variabel, Rust punya borrowing — cara mengakses data TANPA mengambil alih ownership-nya, lewat reference (&). Reference immutable (&T) boleh dibuat berkali-kali sekaligus (banyak orang boleh "membaca" bersamaan), tapi reference mutable (&mut T) HANYA boleh ada SATU dalam satu waktu, dan tidak boleh dicampur dengan reference immutable — aturan ini dicek compiler untuk mencegah data race.

Contoh Konsep

fn hitung_panjang(s: &String) -> usize { // meminjam, bukan mengambil ownership
    s.len()
}

fn tambah_seru(s: &mut String) {
    s.push_str("!");
}

fn main() {
    let nama = String::from("CompileDaily");
    println!("{}", hitung_panjang(&nama)); // 12, nama masih valid setelah ini
    println!("{}", nama); // CompileDaily, masih bisa dipakai

    let mut pesan = String::from("Halo");
    tambah_seru(&mut pesan);
    println!("{}", pesan); // Halo!
}

Praktikum

Buat fungsi tambah_gelar(nama: &mut String) yang menambahkan " S.Kom" ke akhir string lewat push_str(). Panggil fungsi itu dari main() dengan nama mutable "Budi", lalu tampilkan hasilnya.

Editor Latihan

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

Tips

Aturan "satu &mut ATAU banyak & tapi tidak keduanya sekaligus" disebut borrow checker — ini yang bikin Rust terkenal galak soal compile error di awal belajar, tapi justru inilah yang mencegah bug data race tanpa perlu lock/mutex manual seperti bahasa lain.