Ownership dan borrowing, dengan lembut
Model mental yang membuat Rust klik — dijelaskan tanpa jargon.
Daftar Isi
Kebanyakan kebingungan Rust sebenarnya adalah kebingungan ownership. Pahami satu ide ini, dan borrow checker berubah dari musuh menjadi proofreader.
Ide pokoknya
Setiap nilai punya tepat satu pemilik. Saat pemilik keluar dari scope, nilai di-drop. Anda bisa meminjamkan nilai — secara immutable ke banyak pihak, atau mutable ke tepat satu — tetapi meminjamkan tidak pernah memindahkan kepemilikan.
fn main() {
let owner = String::from("updeta");
let read = &owner; // borrow immutable
println!("{read}");
let mut owned = String::from("hi");
owned.push_str("!"); // pemilik memodifikasi langsung
takes_ownership(owned); // move: owner tidak lagi valid
}
fn takes_ownership(s: String) {
println!("{s}");
}
Kenapa penting
Tidak ada use-after-free, tidak ada dangling pointer, tidak ada data race — semuanya diperiksa saat kompilasi, semuanya tanpa biaya runtime.
Tips praktis
- Mulailah dengan borrow (
&T); move (T) hanya saat memang perlu Stringvs&str: memiliki teksnya, atau menunjuk ke teks yang dimiliki pihak lain- Saat compiler komplain, ia sedang menjelaskan masalah lifecycle yang nyata — baca pesannya, sekarang pesannya bagus
Bagian 2 membahas traits dan generics: bagaimana perilaku bersama bekerja tanpa class.