Ownership di Rust
Penjelasan
Ownership adalah fitur PALING KHAS dan paling penting di Rust — cara Rust menjamin keamanan memori TANPA garbage collector. Tiga aturan intinya: (1) setiap nilai di Rust punya SATU variabel yang jadi "owner"-nya, (2) hanya ada satu owner di satu waktu, (3) begitu owner keluar dari scope-nya, nilainya otomatis dibersihkan dari memori. Kalau sebuah nilai (mis. String) di-assign ke variabel lain, ownership-nya BERPINDAH (move) — variabel asalnya jadi tidak valid lagi dipakai.
Contoh Konsep
fn main() {
let s1 = String::from("CompileDaily");
let s2 = s1; // ownership BERPINDAH dari s1 ke s2
// println!("{}", s1); // Error! s1 sudah tidak valid (moved)
println!("{}", s2); // CompileDaily, aman
let angka1 = 5;
let angka2 = angka1; // angka1 TETAP valid, karena i32 di-copy, bukan di-move
println!("{} {}", angka1, angka2); // 5 5, keduanya jalan
}
Praktikum
Buat let nama1 = String::from("Budi"). Assign nama1 ke nama2 (ownership berpindah). Tulis komentar yang menjelaskan kenapa mencoba mencetak nama1 setelahnya akan error, lalu cetak nama2 saja.
Ketik/edit bebas di sini untuk latihan — kode ini tidak dijalankan.
Tips
Tipe data sederhana yang ukurannya sudah pasti saat kompilasi (mis. i32, f64, bool, char) di-COPY otomatis saat di-assign (bukan di-move) — aturan move hanya berlaku untuk tipe data yang mengelola memori di heap, seperti String dan Vec.