Study
Rust

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.

Editor Latihan

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.