Docs/Sistem Programlama/Rust
Resmi Doküman

Rust

Zero-Cost Abstractions / Ownership Model

Çöp toplayıcı (garbage collector) olmadan, sahiplik (ownership) ve borçlanma (borrow checker) mekanizmasıyla mutlak bellek güvenliği ve C++ seviyesinde ham hız sağlayan modern sistem programlama dili.

YazılımHub Ekosistem Notu

Yüksek bant genişlikli mikroservislerde `tokio` çalışma ortamı ile asenkron ağ katmanını yönetin ve gereksiz heap ayırmalarını önlemek için `Arc<str>` veya `Cow<str>` kullanın.

Kod Stüdyosu

main.rs
// Güvenli Eşzamanlılık ve Hata Yönetimi
use std::sync::Arc;
use tokio::sync::Mutex;

#[derive(Debug, Clone)]
pub struct ClusterNode {
    pub id: u64,
    pub address: String,
    pub active_connections: usize,
}

impl ClusterNode {
    pub fn new(id: u64, address: impl Into<String>) -> Self {
        Self {
            id,
            address: address.into(),
            active_connections: 0,
        }
    }
}

#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
    let node = Arc::new(Mutex::new(ClusterNode::new(1, "10.0.0.42:9000")));
    
    let node_clone = Arc::clone(&node);
    tokio::spawn(async move {
        let mut locked = node_clone.lock().await;
        locked.active_connections += 1;
        println!("[Node-1] Aktif Bağlantı: {}", locked.active_connections);
    }).await?;

    Ok(())
}

Mimari Özellikler

Bellek Yönetimi

Manuel bellek tahsisi yok; RAII ve Derleme Zamanı Borrow Checker ile sıfır çöp toplama gecikmesi.

Eşzamanlılık Modeli

Tokio ve Rayon kütüphaneleriyle kilitlenmesiz (lock-free) ve veri yarışmasız (data-race free) eşzamanlılık.

Tip Güvenliği

Katı statik tipleme, cebirsel veri tipleri (Enum/Pattern Matching) ve monomorfik generic yapılar.

Hedef & Derleme

LLVM tabanlı yerel makine kodu derlemesi; bağımsız ve runtime barındırmayan minimal ikili dosyalar.

Üretim Seviyesi Best Practices

1Arc ve Mutex Maliyetlerini Sınırlandırın

Sık okunan veriler için RwLock veya kilit gerektirmeyen crossbeam kanallarını tercih edin.

2Clippy Kontrollerini Zorunlu Kılın

CI/CD hattında cargo clippy çalıştırarak bellek ve sözdizimi sapmalarını önleyin.

3Result Tipini Açıkça İşleyin

Üretim kodlarında asla unwrap() kullanmayın; ? operatörü veya eşleştirme ile hataları üst katmana iletin.

4LTO (Link-Time Optimization) Açın

Cargo.toml içinde lto = true ve codegen-units = 1 vererek %15-20 arası ek hız kazanın.

Hızlı Referans (Cheatsheet)

Projeyi release modunda optimize derle
cargo build --release
Kod stilini resmi standartlara göre formatla
cargo fmt
Statik analiz ve linter çalıştır
cargo clippy
Birim ve entegrasyon testlerini koş
cargo test --all
Geliştirici Sınavı: Rust

Rust'ta &mut T türündeki bir referans varken aynı anda başka bir &T referansı alınabilir mi?