Rust Ownership

Veli Uysal
Turkiye Rust Community
2 min readApr 5, 2023

--

Bu yazının konusu olan ownership yani sahiplik konusu Rust dilinde en temel yapı taşıdır. Bu sahipliği anladıktan sonra dilde kullanılan çoğu yapıyı da anlayabileceğiz. Rust dili bir garbage collector’a ihtiyaç duymadan bellek güvenliği garantileri vermesini sağlar, bu nedenle ownership konusunun nasıl çalıştığını anlamak önemlidir.

  • Ownership kavramı; bir Rust programının belleği nasıl yönettiğini yöneten bir dizi kuraldır. Tüm programlar çalışırken bilgisayarın belleğini kullanma şeklini yönetmek zorundadır. Bazı dillerde, program çalışırken artık kullanılmayan belleği düzenli olarak arayan garbage collector vardır. Garbage collector’a sahip olmayan diğer dillerde ise programcının belleği açıkça ayırması ve boşaltması gerekir. Rust ise bu iki yaklaşıma istinaden üçüncü bir yaklaşım kullanmaktadır. Bu yeni yaklaşımla birlikte bellek, derleyicinin kontrol ettiği bir dizi kurala sahip bir sahiplik sistemi aracılığıyla yönetilir.
  • Stack ve Heap alanları Rust gibi bir sistem programlama dilinde bir değerin stack’te mi yoksa heap’te mi olduğu durumu dilin nasıl davranacağını ve neden belirli kararlar vermeniz gerektiğini etkiler. Stack değerleri aldığı sırayla saklar ve ters sırada değerleri kaldırır. Buna son giren ilk çıkar(LIFO) denir. Stack içerisinde depolanan tüm verilerin bilinen, sabit bir boyutu olmalıdır. Heap alanında ise derleme zamanında bilinmeyen bir boyuta veya değişebilecek bir boyuta sahip veriler saklanmalıdır. Heap daha az düzenlidir ve yığına veri koyduğunuzda, belirli bir miktarda alan talep edersiniz. Bellek ayırıcıise heap alanında yeterince büyük boş bir alan bulur, kullanımda olarak işaretler ve o konumun adresi olan bir işaretçi döndürür. Bu işleme heap alanı üzerinde ayırma adı verilir ve bazen yalnızca ayırma olarak kısaltılır.

Ownership Kuralları

Ownership’i anlamak için öncelikle bu kuralları iyi sindirmemiz gerekmektedir. Bu kurallar ise aşağıdaki gibidir.

  • Rust'ta her değerin bir sahibi vardır.
  • Aynı anda yalnızca bir sahip olabilir.
  • Sahip kapsam dışına çıktığında, değer düşürülür.

Variable Scope(Değişken Kapsamı)

Rust dilinde her değişkenin bir kapsamı vardır. Bir değişkenin kapsamı, o değişkenin hangi kod bloğunda kullanılabileceğini belirler. Bir kod bloğu, genellikle süslü parantezler arasındaki bir ifade grubudur. Rust’ta, bir değişkenin kapsamı, değişkenin tanımlandığı blokta başlar ve blokta tamamlanır.

Ayrıca Rust dilinde kapsamların yanı sıra yaşam süreleri de vardır. Yaşam süreleri, bir değişkenin kullanılabileceği süreyi belirtir ve kapsam ile benzerdir. Ancak, kapsam bir blok içinde belirlenirken, yaşam süreleri bir fonksiyon içinde belirlenir ve değişkenin fonksiyondan sonra ne kadar süreyle var olması gerektiğini belirtir.

Sosyal medya hesaplarım: Twitter | Linkedin | Github | Youtube

--

--