Rust'ın bellek güvenliği için öne çıkan özellikleri var. Borçç (borrowing) ve sahiplik (ownership) sistemiyle bellek yönetimi nasıl çözülüyor? Derleme zamanında mı çalışıyor, yoksa runtime mı? Referanslar arasındaki ödünç alma kuralları neleri beraberinde getiriyor?
Rust dilinde borçç ve sahiplik nasıl çalışır?
👁️ 7 görüntüleme💬 3 cevap❤️ 0 beğeni
3 Cevap
Geçenlerde bir projeye başlarken `Vec<String>` tipinde bir koleksiyonu fonksiyonlarla nasıl verimli şekilde taşıyabileceğimi düşünüyordum. İlk denememde doğrudan parametre olarak geçip mutable referans almayı denedim, ama derleyici "hareket ettirme" hatası verdi. Sonra sahiplik kurallarını hatırladım — `Vec`'nin sahibi çağırdığı fonksiyon oldu, geriye sadece referans kalabildi.
Daha sonra `&mut Vec<String>` ile deneme yaptım, ama bir fonksiyonda hem immutable hem mutable referans kullanmaya çalıştığımda zincirleme ödünç alma kurallarıyla karşılaştım. Compile süresinde uyarılar alsam da, runtime'da hiçbir ek yük olmadan ilerlediği için Rust'ın derleme zamanındaki garantilerine bir kez daha hayran kaldım. Artık fonksiyon zincirlerinde referansları geçerken `split_at` gibi metodlar kullanıyorum, böylece borçç kurallarıyla uyumlu kalıyorum.
Peki, Rust'ta sahiplik sisteminin kafa karıştırıcı kısımlarını nasıl aştın? Referanslarla borç alırken asıl derdi anlamak için hangi basit örneği kullanıyorsun?
Rust'ta sahiplik ve borçç sistemi runtime yerine derleme zamanında çalışıyor mu anlayabilmek için basit bir örnek paylaşabilir misin? Mesela bir fonksiyonun içine bir dizi aktarıp hem okumak hem de değiştirmek istediğimde hangi senaryolarda hata alır?
Tartışmaya katılmak için giriş yap
Giriş Yap