Merhabalar! Bugün sizlerle uzun süredir merak ettiğim ama bir türlü adım atamadığım bir konuya dalıyoruz: Rust programlama dili. Hem performansı hem de güvenlik garantileriyle son birkaç yıldır adını sıkça duyduğumuz Rust, 2026 itibarıyla sistem programlamanın “yeni normali” haline geldi desek abartmış olmayız. Bu yazıda sıfırdan kurulumdan ilk programımızı çalıştırmaya kadar her şeyi adım adım göstereceğim.

Rust Nedir ve Neden Bu Kadar Konuşuluyor?

Rust, Mozilla’da doğan ve şu anda Rust Foundation çatısı altında geliştirilen, açık kaynak bir sistem programlama dilidir. C ve C++’ın performansına yaklaşırken, bellek güvenliğini derleme zamanında (compile time) garanti ediyor. Yani klasik “segfault” ya da “use-after-free” hatalarıyla uğraşmıyorsunuz, çünkü derleyici sizi bu tuzaklara düşmekten alıkoyuyor.

Neden bu kadar konuşulduğuna gelince: 2026 ortası itibarıyla Rust 1.97.1 sürümü yayında (16 Temmuz 2026’da duyuruldu), dil sürekli büyüyen bir kurumsal benimsenme yaşıyor ve Linux çekirdeği gibi “kutsal” projelerde bile Rust kodları yer almaya başladı. Eğer hâlâ Rust’a başlamadıysanız, şimdi tam zamanı.

1. Rust Kurulumu (rustup Aracılığıyla)

Rust kurulumu için resmi araç rustup‘tır. Linux, macOS ve Windows’ta aynı şekilde çalışır. Unix benzeri sistemlerde terminali açıp şu komutu çalıştırıyoruz:

curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh

Komutu girdiğinizde sizi birkaç soru karşılayacak. Çoğu için varsayılan seçenek (varsayılan kurulum / “default installation”) gayet yeterli. Kurulum bittiğinde terminal size şöyle bir mesaj gösterecek:

Rust is installed now. Great!

Önemli: rustup, toolchain’i ~/.cargo/bin altına kurar. Bu dizinin PATH’inizde olduğundan emin olun. Çoğu kurulum bunu otomatik olarak ~/.bashrc, ~/.zshrc ya da eşdeğeri kabuk yapılandırma dosyanıza ekler. Yine de emin olmak için yeni bir terminal açıp şunu çalıştırın:

source "$HOME/.cargo/env"

Kurulumu doğrulamak için:

rustc --version
cargo --version

Beklenen çıktı (yazı yazıldığı sırada):

rustc 1.97.1 (...)
cargo 1.97.1 (...)

Bu komutlar sırasıyla Rust derleyicisinin ve paket yöneticisi Cargo’nun sürümünü gösterir. Eğer sürüm numaralarını görüyorsanız, kurulum tamamdır.

2. Cargo Nedir?

Cargo, Rust dünyasının “npm’i + Make’i + pip’i” gibi düşünebileceğiniz resmi paket yöneticisi ve build sistemidir. rustup ile birlikte gelir; ayrıca kurulum yapmanıza gerek yoktur.

Cargo’nun temel görevleri:

  • Yeni proje iskeleti oluşturmak
  • Bağımlılıkları yönetmek (crates.io üzerinden)
  • Kodu derlemek, çalıştırmak ve test etmek
  • Sürüm (release) binary’leri üretmek

Yani Rust projelerinin kalbi diyebiliriz. Hemen ilk projemizi oluşturalım.

3. Yeni Proje Oluşturma

Diyelim ki /Users/om1f/projeler dizinindeyim ve “merhaba_rust” adında bir proje yaratmak istiyorum. Terminalde:

cargo new merhaba_rust
cd merhaba_rust

cargo new komutu sizin için bir dizin yaratır, içine temel proje yapısını koyar ve hatta otomatik olarak bir git deposu başlatır. Listelediğinizde şu dosyaları göreceksiniz:

.
├── Cargo.toml
├── .gitignore
└── src
    └── main.rs

Bu Rust projelerinin klasik iskeletidir. Kısa bir açıklama:

  • Cargo.toml: Projenin manifest dosyasıdır (Python’daki pyproject.toml, Node.js’teki package.json gibi). Proje adı, sürümü, bağımlılıkları burada tanımlanır.
  • Cargo.lock: Bağımlılıkların tam sürümlerini kilitleyen otomatik üretilen dosya. Genelde elle düzenlenmez.
  • src/main.rs: Programın giriş noktası. Buradan başlayan her şey.

İsterseniz Cargo.toml dosyasının içine bir göz atalım:

[package]
name = "merhaba_rust"
version = "0.1.0"
edition = "2024"

[dependencies]

edition = "2024" ifadesi Rust’ın 2024 sürümüne ait olan sözdizimi ve standart kütüphane özelliklerini kullandığımızı belirtir. Bu satır sayesinde dilin eski/yeni kurallarından hangisini takip edeceğimiz belli olur.

4. İlk Programımız: Hello, Rust!

src/main.rs dosyasının içeriği şu şekildedir:

fn main() {
    println!("Merhaba, Rust!");
}

Şimdi bu programı çalıştıralım:

cargo run

İlk çalıştırmada Cargo derleyiciyi çağırır, bağımlılıkları toplar ve binary’yi üretir. Çıktı şuna benzer:

   Compiling merhaba_rust v0.1.0 (/Users/om1f/projeler/merhaba_rust)
    Finished `dev` profile [unoptimized + debuginfo] in 2.34s
     Running `target/debug/merhaba_rust`
Merhaba, Rust!

Gördüğünüz gibi terminalde “Merhaba, Rust!” yazısı çıktı. Tebrikler, ilk Rust programınız çalıştı! 🎉

Burada dikkat edilmesi gereken birkaç nokta var:

  • fn main(): Rust’ta çalıştırılabilir (binary) projelerin giriş noktası main fonksiyonudur.
  • println! fonksiyon değil, bir macro‘dur. Ünlem işareti bu yüzden. println! derleme zamanında std::io::stdout çağrılarına dönüşür, bu yüzden biz şimdilik “nasıl çalıştığını” bilmek zorunda değiliz; tıpkı bir fonksiyon gibi kullanabiliriz.

5. Sık Kullanılan Cargo Komutları

Artık temel döngüyü biliyorsunuz. İşte günlük hayatta en çok kullanacağınız birkaç Cargo komutu:

  • cargo run: Projeyi derler ve çalıştırır.
  • cargo build: Sadece derler, çalıştırmaz. Binary target/debug/ altında oluşur.
  • cargo build –release: Optimizasyon açık, performanslı binary üretir. Çıktı target/release/ altına gider. Üretime alacağınız sürümleri bu komutla derleyin.
  • cargo check: Derleme yapmadan, sadece hataları kontrol eder. Daha hızlıdır; kod yazarken editör içinde sürekli tetiklenir.
  • **cargo test`: Testleri çalıştırır.
  • cargo update: Cargo.lock‘taki bağımlılık sürümlerini günceller.
  • cargo add serde: Yeni bir bağımlılık ekler (bu örnekte popüler serde kütüphanesi).

Bir release derlemesi yapalım ve farkı görelim:

cargo build --release
./target/release/merhaba_rust

Çıktı yine Merhaba, Rust! olacaktır; fakat bu sefer binary optimize edilmiştir ve çok daha hızlı çalışır. Küçük projelerde fark gözle görülmez ama gerçek dünya uygulamalarında ciddi bir performans kazanımı sağlar.

6. Olası Hatalar ve Çözümleri

Kurulum ve ilk çalıştırma sırasında birkaç klasik sorunla karşılaşabilirsiniz. Kendi deneyimimden ve etrafta gördüğüm kadarıyla:

Hata 1: “rustc: komut bulunamadı”
Cargo’yu kurdunuz ama cargo --version çalışmıyor. Büyük ihtimalle ~/.cargo/bin dizini PATH’te değil. Çözüm:

export PATH="$HOME/.cargo/bin:$PATH"

Bunu kalıcı yapmak için ~/.bashrc veya ~/.zshrc dosyanızın sonuna ekleyin.

Hata 2: Windows’ta “linker not found”
Windows’ta Visual Studio C++ build tools yüklü değilse linker eksik hatası alırsınız. rustup-init çıktısında gerekli Visual Studio bileşenleri listelenir; “Desktop development with C++” workload’unu kurmanız gerekir.

Hata 3: Editörde kodun altı kırmızı çizili
Cargo değil, IDE/LSP ayarlarıyla ilgili. VSCode kullanıyorsanız rust-analyzer eklentisini kurun. Çoğu modern editör (IntelliJ Rust eklentisi, Neovim rust-tools.nvim, Helix vb.) rust-analyzer tabanlı çalışır.

Hata 4: cargo new yapınca “destination already exists”
Aynı isimde bir dizin zaten var. cargo new üzerine yazmaz; ismi değiştirin ya da mevcut dizini kaldırın.

7. Sonraki Adımlar

Bu yazıda sıfırdan kurulum, ilk proje ve cargo run döngüsünü gördük. Ama Rust dünyası burada bitmiyor; hatta daha yeni başlıyor. Sonraki yazılarda şu konulara değinmeyi planlıyorum:

  • Değişkenler, shadowing ve veri tipleri
  • Ownership (sahiplik) ve borrowing — Rust’ın kalbi
  • Struct, enum ve pattern matching
  • Hata yönetimi: Result ve ? operatörü
  • Cargo.toml’a harici bağımlılık eklemek (örneğin serde veya reqwest)

Eğer “Ownership neymiş, herkes neden bundan bahsediyor?” diye merak ediyorsanız, bir sonraki yazı tam size göre olacak.

Rust öğrenmek başta biraz yavaş gelebilir; derleyici sizi sık sık uyarır, bazı kurallar C’den alışık olduğunuz şekillerden farklıdır. Ama bir kareye oturduğunda, “neden başka türlü yazıyordum ki?” dedirten bir deneyim. Bence bu zahmete değer.

Okuduğunuz için teşekkür ederim! Herhangi bir adımda takılırsanız ya da deneyiminizi paylaşmak isterseniz yorum kısmında buluşalım. Bir sonraki yazıda görüşmek üzere, iyi kodlamalar! 🦀