Rust, performans ve güvenliği aynı anda hedefleyen, sistem programlamaya yönelik modern bir programlama dilidir. En belirgin özelliği, çöp toplayıcı kullanmadan bellek güvenliğini derleme aşamasında garanti etmeye çalışan ownership (sahiplik) modelidir. Bu rehberde Rust'ın ne olduğunu, nasıl çalıştığını ve hangi işler için uygun olduğunu dengeli biçimde ele alıyoruz.

Rust Nedir ve Nereden Geldi?

Rust, başlangıçta Mozilla bünyesinde bir araştırma projesi olarak doğdu ve zamanla açık kaynaklı, topluluk tarafından geliştirilen bağımsız bir dile dönüştü. Amaç, C ve C++ gibi dillerin performansını korurken, bu dillerde sık görülen bellek güvenliği hatalarını büyük ölçüde ortadan kaldırmaktı.

Dilin gelişimi açık bir süreçle, RFC (Request for Comments) belgeleri üzerinden yürütülür. Rust, kararlı bir sürüm takvimine sahiptir ve geriye dönük uyumluluğa önem verir; dil zaman içinde "edition" adı verilen aşamalarla, mevcut kodu bozmadan evrilir.

Ownership: Rust'ın Kalbindeki Model

Rust'ı diğer dillerden ayıran temel fikir ownership modelidir. Her değerin bir sahibi vardır; sahip kapsam dışına çıktığında değerin kullandığı bellek otomatik olarak serbest bırakılır. Değerler bir yerden başka bir yere taşınabilir (move) veya ödünç verilebilir (borrow); ancak bunu yönetirken derleyici katı kurallar uygular.

Bu kurallar, ödünç alma denetleyicisi (borrow checker) tarafından derleme sırasında kontrol edilir. Böylece sarkan işaretçi, çift serbest bırakma ve veri yarışı (data race) gibi hatalar program çalışmadan önce, derleyici tarafından yakalanmaya çalışılır. Bu denetim, çöp toplayıcıya gerek kalmadan bellek güvenliği sağlamayı amaçlar.

rust
fn main() {
    let s1 = String::from("selam");
    let s2 = s1; // sahiplik s2'ye tasindi, s1 artik gecersiz
    println!("{}", s2);
}

Rust Nasıl Çalışır?

Rust doğrudan makine koduna derlenir ve bunun için LLVM altyapısını kullanır. Ara bir çalışma zamanı veya çöp toplayıcı olmadığından, üretilen programlar C ve C++'a yakın performans sergileyebilir. Bellek güvenliği ise çalışma anında değil, büyük ölçüde derleme sırasında sağlanır.

Rust, güçlü bir araç zinciriyle gelir. Paket yöneticisi ve derleme aracı Cargo, bağımlılıkları yönetir, projeyi derler ve testleri çalıştırır. Paketler crates.io üzerinden dağıtılır; bu da ekosistemin düzenli ve erişilebilir olmasını sağlar. Ayrıca cargo fmt ve cargo clippy gibi araçlar, kodu biçimlendirmek ve yaygın sorunları statik olarak yakalamak için standart bir temel sunar; böylece ekip içinde ortak bir kalite çizgisi oluşturmak kolaylaşır.

rust
fn topla(a: i32, b: i32) -> i32 {
    a + b
}

fn main() {
    let sonuc = topla(2, 3);
    println!("toplam: {}", sonuc);
}

Rust Nerelerde Kullanılır?

Rust, performans ve güvenilirliğin birlikte önemli olduğu alanlarda öne çıkar. Düşük seviyeli kontrol sunması, onu sistem programlama için uygun kılarken, güvenlik garantileri uzun ömürlü servislerde güven verir:

  • Sistem programlama ve işletim sistemi bileşenleri
  • Komut satırı araçları (CLI)
  • Yüksek performanslı ağ servisleri ve arka uç sistemleri
  • WebAssembly hedefleri
  • Gömülü sistemler ve kaynağı kısıtlı ortamlar

Dilleri birlikte değerlendiren bakış için programlama dilleri rehberi yazımıza göz atabilirsiniz. Benzer sistem programlama alanında Go daha sade bir söz dizimi ve çöp toplama ile farklı bir denge sunarken, maksimum kontrol gerektiren işlerde Rust tercih edilebilir.

Rust'ın Güçlü ve Zayıf Yönleri

Rust güçlü garantiler sunar; ancak bu garantilerin bir öğrenme bedeli vardır. Aşağıdaki tablo dengeli bir bakış sağlamayı amaçlar.

Güçlü YönlerDikkat Edilecek Yönler
Çöp toplayıcısız bellek güvenliğiOwnership modeli başta öğrenmesi zordur
C/C++'a yakın performansDerleme süreleri bazı projelerde uzayabilir
Güçlü araç zinciri (Cargo)Ekosistem bazı alanlarda daha yenidir
Güvenli eşzamanlılık garantileriHızlı prototiplemede daha fazla kısıt gerektirir

Rust Öğrenmeye Nasıl Başlanır?

Rust öğrenmek için topluluğun hazırladığı ücretsiz resmi kitap ("The Rust Programming Language") en çok önerilen kaynaktır. Rust'ı kurmak için rustup aracı kullanılır; bu araç derleyiciyi, Cargo'yu ve belgeleri birlikte getirir. Öğrenme sürecinde sabırlı olmak önemlidir: ownership kavramları başta zorlasa da, derleyicinin rehberliğiyle zamanla doğal hale gelir.

  • Temel söz dizimi, değişkenler ve tiplerle başlayın
  • Ownership, borrow ve lifetime kavramlarını adım adım kavrayın
  • struct, enum ve desen eşleştirme (pattern matching) öğrenin
  • Result ve Option ile hata yönetimini uygulayın
  • Cargo ile küçük bir proje oluşturup bağımlılık ekleyin

Sık Sorulanlar

Rust öğrenmek zor mu?

Rust'ın ownership ve ödünç alma kavramları, başka dillerden gelenler için başlangıçta zorlayıcı olabilir. Bu kavramlar kavrandığında ise derleyici, hataların çoğunu önceden yakaladığı için güvenle kod yazmayı kolaylaştırır.

Rust, C++'ın yerini alır mı?

Rust, C++'ın güçlü olduğu birçok alanda alternatif sunar ve özellikle bellek güvenliği konusunda avantaj sağlar. Ancak C++'ın olgun ekosistemi ve mevcut kod tabanları nedeniyle iki dil çoğu zaman birlikte var olmaya devam eder.

Rust çöp toplayıcı kullanır mı?

Hayır. Rust, bellek güvenliğini çalışma anında bir çöp toplayıcıyla değil, derleme sırasında ownership kurallarıyla sağlamaya çalışır. Bu, öngörülebilir performans ve düşük çalışma zamanı yükü sağlar.