Ana Sayfa

Rust Closures: Fonksiyonlardan Farkı ve Değişken Yakalama

1 dk okuma

Rust programlama dilindeki closure'lar, fonksiyonlara benzer ancak daha esnek yapılar sunar. Temel olarak |x| x * 2; gibi bir sözdizimiyle tanımlanan closure'lar, ilk bakışta sadece tip çıkarımı (type inference) yeteneği olan kısa fonksiyonlar gibi görünebilir. Örneğin, bir u32 parametresi alan ve u32 döndüren normal bir fonksiyonla neredeyse aynı işlevi görebilirler. Ancak, closure'ların asıl gücü ve fonksiyonlardan ayrılan en önemli özelliği, tanımlandıkları ortamdaki değişkenleri yakalayabilme (capture) yetenekleridir. Bu sayede, closure'lar kendi kapsamları dışındaki verilere erişebilir ve bunları kullanabilir.

Bu değişken yakalama mekanizması, closure'ların esnekliğini artırır. Yakalama işlemi, değişkenin nasıl kullanıldığına bağlı olarak farklı şekillerde gerçekleşebilir. Eğer bir değişken closure içinde sadece okunuyorsa, bu değişken paylaşımlı bir referansla (shared reference) yakalanır. Bu durumda, closure tanımlandıktan ve kullanıldıktan sonra bile orijinal değişkene erişmeye devam edebilirsiniz. Ancak, closure bir değişkenin değerini değiştirecekse, değişken değiştirilebilir bir referansla (mutable reference) yakalanır. Bu yetenek, fonksiyonların sahip olmadığı bir özelliktir; Rust derleyicisi, bir fonksiyonun dinamik bir ortamı yakalamasına izin vermez ve bunun yerine closure kullanmayı önerir. Bu derinlemesine anlayış, Rust'ta daha güçlü ve modüler kod yazmak için kritik öneme sahiptir.

İçgörü

Rust'ta closure'ların nasıl çalıştığını, fonksiyonlardan farklarını ve değişken yakalama mekanizmalarını anlamak, daha esnek ve güçlü kod yazmanın kapılarını açar.

Kaynak