Rust'ın Bellek Güvenliği Kuralları
Bu, Rust'ın güvenlik ve verimlilik sağlamak için kullandığı bir tekniktir. Ancak, bazen bu katı kurallar hata mesajlarıyla kendini gösterir.
"Cannot Borrow Immutable Twice" Hatası Nedir?
Diyelim ki, bir değişken üzerinde birden fazla okuma yapıyorsunuz ve her okuma işlemi de değişkenin değerine ihtiyaç duyuyor. Rust burada veri güvenliğini sağlamak adına, birinci okuma işlemi yapılırken, ikinci okuma işleminin bir engel teşkil edeceğini ve bunun veri tutarsızlıklarına yol açabileceğini düşünüyor.
Hata Örneği
fn main() {
let x = 5;
let y = &x;
let z = &x; // Burada aynı veriye iki kez immutable borç alıyoruz.
println!("y: {}, z: {}", y, z);
}
Yukarıdaki örnekte, `x` değişkeni üzerinde iki farklı immutable borç alınıyor: `y` ve `z`. Rust, bu durumu tespit ederek derleme sırasında hata verir. Hata mesajı şu şekilde olabilir:
```
error[E0502]: cannot borrow `x` as immutable because it is also borrowed as immutable
```
Bu hata, Rust'ın kurallarına göre, aynı anda iki farklı okuma işlemi (immutable borç) yapılmasının güvenli olmadığını belirtiyor.
Hata Nasıl Çözülür?
Aşağıdaki gibi bir çözüm uygulayabiliriz:
fn main() {
let x = 5;
let y = &x;
println!("y: {}", y); // İlk okuma tamamlandıktan sonra ikinciyi yapalım.
let z = &x; // İkinci borç burada alınabiliyor.
println!("z: {}", z);
}
Bu şekilde, Rust yalnızca bir okuma borcu verir ve veri güvenliği sağlanır. Artık hata almazsınız!
Sonuç
Unutmayın, Rust'ta karşılaştığınız her hata, size daha iyi bir yazılımcı olma yolunda yardımcı olacak bir öğretidir. Bu hatayı bir fırsat olarak görüp, dilin sunduğu kuralları öğrenmek, sizleri Rust'ta daha uzman bir geliştirici yapacaktır.