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.
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.