Rust Dili Hakında

Konuyu başlatankyr karacaMod·
Yanıt
0
Görüntülenme
5
Oy
1
Son yanıt
Henüz yok
5 görüntülenme

Rust Dili Hakında

1. Rust Dili Nedir

Rust, Mozilla tarafından geliştirilen; hız, bellek güvenliği ve güvenli eşzamanlılık (concurrency) odaklı bir dildir. Neden geliştirildi? C++'ın sunduğu yüksek performansı korurken, yazılımcı hatalarından kaynaklanan bellek sızıntılarını ve "segmentation fault" gibi çökme nedenlerini tamamen ortadan kaldırmak için doğmuştur.

1.1. Sahiplik (Ownership) Sistemi

Rust'ın kalbidir. Bellek yönetimini ne bir Garbage Collector'a ne de manuel free() komutlarına bırakır. Bunun yerine, derleme aşamasında kuralları denetleyen benzersiz bir mülkiyet sistemi kullanır.

  • 1.1.1. Sahip Olduğunuz Veri

Bellekte yer alan veri, bir sahibi vardır. Sahibin yokluğu, bellekte yer alan verinin yok olmasına neden olur.

  • 1.1.2. Veri Sahibi

Rust'ta bir değişkenin sahibi, derleme anında belirlenir. Bu sahibi, verinin yaşam döngüsünü kontrol eder.

  • 1.1.3. Veri Sahibi Olmak

Bir değişkenin sahibi olmak, verinin yaşam döngüsünü kontrol etmek demektir. Sahibi, verinin yok olması için sorumludur.

2. Temel Söz Dizimi (Syntax) ve Değişkenler

Rust, varsayılan olarak değişmezlik (immutability) ilkesini benimser. Bir değişkenin değerini daha sonra değiştirmek istiyorsanız bunu açıkça belirtmelisiniz.

  • 2.1. Değişken Tanımlama

Rust let x = 5; // Değişmez (Immutable) let mut y = 10; // Değişebilir (Mutable) y = 15; // Geçerli

  • 2.2. Strongly Typed (Güçlü Tip Sistemi)

Rust her değişkenin tipini derleme anında bilmek zorundadır. Ancak "Type Inference" özelliği sayesinde çoğu zaman tipi sizin yerinize tahmin eder.

3. Kontrol Yapıları

Rust'ta kontrol yapıları birer "ifade" (expression) oldukları için değer döndürebilirler.

  • 3.1. If (Eğer)

if: Parantez kullanımı zorunlu değildir ancak süslü parantezler şarttır.

  • 3.2. Loop, While, For

loop, while, for: Go gibi Rust'ta da for döngüsü çok güçlüdür ve genellikle iterators (yineleyiciler) ile kullanılır. while koşul tabanlıdır, loop ise sonsuz döngü içindir.

  • 3.3. Match (Desen Eşleştirme)

Match (Desen Eşleştirme): Diğer dillerdeki switch-case yapısının çok daha güçlü ve güvenli halidir. Tüm ihtimallerin (exhaustive) kapsanmasını zorunlu kılar.

4. Fonksiyonlar ve Paket Yönetimi

Rust'ta fonksiyonlar fn anahtar kelimesiyle tanımlanır.

  • 4.1. Geri Dönüş Değerleri

Fonksiyonun son satırı noktalı virgül içermiyorsa, o satır dönüş değeri kabul edilir.

Rust fn topla(a: i32, b: i32) -> i32 { a + b // Return anahtar kelimesine gerek yok }

  • 4.2. Cargo

Cargo: Rust'ın paket yöneticisi ve derleme aracıdır. Dünyanın en iyi paket yöneticilerinden biri kabul edilir. Bağımlılıkları Cargo.toml dosyasında yönetir.

5. Veri Yapıları: Arrays, Vectors ve Tuples

  • 5.1. Arrays

Arrays: Sabit uzunlukludur ve stack üzerinde tutulur.

  • 5.2. Vectors (Vec)

Vectors (Vec): Dinamik olarak büyüyebilen, heap üzerinde tutulan dizilerdir. En yaygın kullanılan veri yapısıdır.

  • 5.3. Tuples

Tuples: Farklı tiplerdeki verileri tek bir bileşik yapıda toplamanızı sağlar.

6. Bellek Yönetimi ve Eşzamanlılık (Rust'ın Farkı)

Rust, verinin mülkiyetini takip ederek veri yarışlarını (data races) derleme aşamasında engeller.

  • 6.1. Borrowing (Ödünç Alma)

Borrowing (Ödünç Alma): Bir veriyi kopyalamak yerine referansını (&) vererek "ödünç" verebilirsiniz.

  • 6.2. Fearless Concurrency

Fearless Concurrency: Rust'ın sahiplik kuralları, iki farklı iş parçacığının (thread) aynı anda aynı veriyi değiştirmesini derleme anında yasaklar. Bu da "korkusuz eşzamanlılık" sağlar.

7. Hata Yönetimi (Error Handling)

Rust'ta exception (istisna) mekanizması yoktur. Hatalar iki ana gruba ayrılır:

  • 7.1. Recoverable (Kurtarılabilir)

Recoverable (Kurtarılabilir): Result<T, E> enum yapısı kullanılır. Bir işlem başarılıysa Ok, başarısızsa Err döner.

  • 7.2. Unrecoverable (Kurtarılamaz)

Unrecoverable (Kurtarılamaz): panic! makrosu ile program güvenli bir şekilde durdurulur.

Rust // Hata yönetim örneği let dosya = File::open("test.txt"); let sonuc = match dosya { Ok(file) => file, Err(error) => panic!("Dosya açılamadı: {:?}", error), };

Özet: Rust Nerede Kullanılır?

Rust, özellikle güvenliğin ve performansın kritik olduğu şu alanlarda rakipsizdir:

  • Cloud-Native & Mikroservisler

Düşük bellek kullanımı ile yüksek verim.

  • WebAssembly (WASM)

Tarayıcı üzerinde C++ performansı ile kod çalıştırma.

  • Sistem Programlama

İşletim sistemleri (Linux çekirdeğine dahil edilmeye başlandı), sürücüler ve oyun motorları.

  • Blockchain

Güvenli akıllı sözleşme (smart contract) geliştirme.

0 yanıt5

Konuyu Yanıtla

Markdown destekler · Alıntı, kod, liste kullanabilirsiniz

Konuyu yanıtlamak için giriş yapmalısınız.

Hızlı yanıt yazmak için giriş yapın.