Rust Referencing and Borrowing

Veli Uysal
Turkiye Rust Community
2 min readApr 5, 2023

--

Daha önceki yazılarımda örnek olarak verdiğim kod parçacıklarında olan bu kavramları şimdi ki yazımda detaylandıracağım. Gelin detaylarına bakalım.

Rust Referencing

Rust yazılım dilindeki “referencing” terimi, bir değişkenin bellek adresine başka bir değişkenle erişmek anlamına gelmektedir. Bir değişkenin değil, sadece bir referansının (bir bellek adresi) başka bir değişken tarafından kullanılmasına olanak tanıyan durumdur. Bunun içinde bir değişkenin referansını almak için “&” işareti kullanılmaktadır.

Referanslar güvenli bellek yönetimi için çok önemlidir. Rust Bellek erişimini yönetmek için benzersiz bir sistem olan “lifetime” sistemine sahiptir. Lifetime ile birlikte referansların kullanım sürelerini izler ve bu sayede bellek güvenliğini sağlar. Referansların kullanımıyla, programcılar hatalı bellek erişimleri yapmadan bellek kullanımını optimize edebilirler.

Rust Borrowing

Rust yazılım dilinde “borrowing” terimi bir değişkenin, başka bir değişken tarafından geçici olarak kullanılmasına izin verildiği bir özelliktir. Bir değişkenin ödünç verilmesi, asıl sahibinin veriye erişimini geçici olarak kaybetmesine neden olur. Ancak veri sahibi kopyalanmadığından veri tüketimi veya hafızada çiftleme gibi performans kayıplarından kaçınılarak kullanılır.

Rust dilinde borrowing güvenli bellek yönetimi için kritik öneme sahiptir. Bu yapı yalnızca ödünç alınan veri için belirlenen ömür boyunca geçerlidir. Ödünç alındıktan sonra ödünç verenin veriye erişim izni yoktur. Bu şekilde tasarlanmasıyla birlikte birden fazla değişkenin aynı bellek konumunu aynı anda değiştirmeye çalışmasını önler ve böylece Rust programlarındaki bellek hatalarını büyük ölçüde azaltır.

Ödünç verme, Rust’ta “&” ve “&mut” işaretleri kullanılarak gerçekleştirilir. “&” işareti, bir değerin ödünç alındığını ve değiştirilmediğini belirtirken, “&mut” işareti, değerin ödünç alındığını ve değiştirilebileceğini belirtir.

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

--

--