C ve C++ uzun yıllar boyunca sistem programlamanın kralları oldu. Ancak performansı kontrol altında tutmak için belleği (heap ve stack) manuel yönetme zorunluluğu, sayısız "Segmentation Fault" ve "Use After Free" zafiyetine yol açtı.
Ownership (Sahiplik) Modeli
Rust, "Garbage Collector" (çöp toplayıcı) kullanmadan, arka planda performansı düşürmeden bellek güvenliğini sağlayan eşsiz bir sisteme sahiptir. Üç temel kuralı vardır:
- Rust'taki her değerin bir sahibi (owner) vardır.
- Aynı anda sadece bir sahip olabilir.
- Sahip, kapsamdan (scope) çıktığında, değer otomatik olarak bellekten atılır (drop).
Borrow Checker'ın Gücü
Rust'ın derleyicisi sizin adınıza bir avukat gibi çalışır. Veriyi kopyalamadan başkasına ödünç verdiğinizde (Borrowing), veri üzerinde aynı anda hem okuma hem yazma yetkisine sahip birden fazla referans olmasını engeller.
fn main() {
let mut s = String::from("hello");
let r1 = &s; // Sorun yok, okuma referansı
let r2 = &s; // Sorun yok, okuma referansı
// let r3 = &mut s; // HATA! Aynı anda hem okuma hem mutable referans olamaz.
}Eğer böyle bir güvenliği C++'ta sağlamaya çalışsaydınız, çok fazla mutex veya akıllı işaretçi (smart pointer) kullanmanız gerekebilirdi. Rust, bunu size sıfır maliyetle (Zero-cost abstraction) sunar.