Rust öğrenmenin en sağlam yolu, resmî kitap The Rust Programming Language'ın izlediği sırayı takip etmek ve her konuyu derleyip çalıştırdığınız küçük örneklerle pekiştirmektir: önce kurulum ve Cargo, sonra değişkenler, tipler, fonksiyonlar ve döngüler, ardından Rust'ı diğer dillerden ayıran ownership ve borrowing, sonra koleksiyonlar, hata yönetimi, trait'ler ve generic'ler, en sonda da eşzamanlılık, araçlar ve sık karşılaşılan derleyici hataları. Bu sayfa, serideki 49 yazıyı tam bu öğrenme yoluna göre sekiz gruba ayırır ve her birinin size ne öğrettiğini tek cümleyle anlatır.

Serideki bütün bilgiler Rust 1.99.1 ile gelen resmî belgelere (The Book, Reference, Rust by Example, standart kütüphane belgeleri, Cargo kitabı, Edition Guide ve hata kodu dizini) dayanır; kod örneklerinin hepsi Rust 1.99.1 ile, edition 2024 ayarıyla derlenip çalıştırılarak denenmiştir. Rust'ın ne olduğunu, tarihçesini, nerelerde kullanıldığını ve artılarını eksilerini merak ediyorsanız önce Rust nedir yazısına göz atın; burada o konuları tekrar etmiyor, doğrudan dili adım adım öğrenmeye odaklanıyoruz.

Resmî belgeler: hangisi ne işe yarar?

Resmî belgeler: hangisi ne işe yarar? The Rust Book, Rust by Example, std belgeleri, The Reference

Rust'ın resmî belge seti tek bir kitaptan ibaret değildir ve hangi kaynağın hangi soruya cevap verdiğini bilmek size çok zaman kazandırır. The Rust Programming Language (kısaca The Book), dili baştan sona öğretmek için yazılmış ana kitaptır. Kitabın kendi giriş bölümüne göre başka bir dilde kod yazmış olduğunuzu varsayar ama hangi dil olduğunu önemsemez; programlamaya tamamen yeni başlayanlar için ayrı bir giriş kitabı önerir. Bölümler birbirinin üzerine kurulduğu için baştan sona sırayla okunması beklenir. Kitapta kavram bölümleri ve proje bölümleri vardır: 2. bölümde bir sayı tahmin oyunu, 12. bölümde grep benzeri bir komut satırı aracı, 21. bölümde çok iş parçacıklı bir web sunucusu yazılır.

Rust by Example, aynı konuları kısa ve çalıştırılabilir örneklerle anlatır. Bir kavramı Book'ta okuduktan sonra Rust by Example'daki ilgili sayfayı açıp örnekleri değiştirerek denemek, öğrendiğinizi kalıcı hâle getirmenin pratik bir yoludur. Standart kütüphane belgeleri (std), Vec, String, Option, Result gibi tiplerin bütün metotlarını, imzalarını ve örneklerini listeler. Kendi giriş sayfasının da belirttiği gibi ilkel tiplerin (char, i32, str gibi) metotları ayrı ilkel tip sayfalarında yer alır; String üzerinde çağırdığınız pek çok metot aslında str sayfasında belgelenmiştir.

The Rust Reference, dilin söz dizimini ve anlamını kesin bir dille tanımlar. Okuması ağırdır ama bir ifadenin tam olarak nasıl değerlendirildiğini, hangi kuralın hangi durumda geçerli olduğunu merak ettiğinizde son sözü o söyler. Cargo kitabı proje yapısını, Cargo.toml alanlarını ve bütün cargo alt komutlarını belgeler. Edition Guide 2015, 2018, 2021 ve 2024 edition'ları arasındaki farkları ve geçiş adımlarını anlatır. Rustonomicon ise unsafe kodun kurallarını ele alan ileri seviye bir kitaptır; başlangıçta okumanız gerekmez.

KaynakNe içinNe zaman açılır
The Rust BookDili sırayla öğrenmekİlk günden itibaren ana kaynak
Rust by ExampleKısa, çalıştırılabilir örneklerBir konuyu okuduktan hemen sonra
std belgeleriTip ve metot imzaları, örneklerBir metodun ne döndürdüğünü merak ettiğinizde
The ReferenceKesin dil kurallarıAyrıntılı bir davranışı doğrulamak için
Hata kodu diziniE0xxx kodlarının açıklamasıDerleyici bir hata kodu verdiğinde
Cargo kitabıCargo.toml ve cargo komutlarıProje yapılandırırken
Edition GuideEdition farkları ve geçişEski bir projeyi güncellerken

Bu belgelerin hepsi Rust ile birlikte yerel olarak da gelir: rustup doc komutu yerel kopyayı tarayıcınızda açar, böylece internet bağlantınız olmadığında da okuyabilirsiniz. İnternette Rust kitabının eski first-edition ve second-edition kopyalarına da rastlayabilirsiniz; bunlar güncel değildir, her zaman doc.rust-lang.org/stable altındaki sürümü esas alın.

Kurulum ve ilk çalıştırma (kısaca)

Rust'ı kurmanın önerilen yolu rustup aracıdır. Bu araç derleyiciyi (rustc), paket yöneticisi ve derleme sistemi Cargo'yu, kod biçimlendirici rustfmt'yi ve Clippy'yi birlikte kurar. Kurulumdan sonra aşağıdaki üç komut, ortamınızın hazır olduğunu doğrulamak için yeterlidir. İşletim sistemine göre ayrıntılar, Windows'taki bağlayıcı (linker) gereksinimi, kanallar ve sık yapılan kurulum hataları için Rust kurulumu rehberine bakın.

bash
rustc --version
# çıktı: rustc 1.99.1 (58cf8f9c3 2026-10-13)
cargo new --vcs none merhaba
cd merhaba
cargo run
# çıktı: Hello, world!

Derleyici hata mesajlarını okumayı öğrenin

Rust öğrenirken en çok vakit geçireceğiniz yer derleyicinin hata mesajlarıdır ve bu bir kusur değil, öğrenmenin parçasıdır. The Book da giriş bölümünde bunu açıkça söyler: kitapta bilerek derlenmeyen pek çok örnek gösterilir ve hangi hatanın neden çıktığı anlatılır. Rust derleyicisinin mesajları genellikle sorunun yerini, nedenini ve çoğu zaman bir düzeltme önerisini (help: satırı) içerir. Mesajın sonunda gördüğünüz hata kodu ise daha uzun bir açıklamaya açılan kapıdır.

Her hata kodu için rustc --explain komutu, hatalı örnek kod ve düzeltilmiş hâliyle birlikte ayrıntılı bir açıklama yazdırır. Aynı metinler web üzerindeki hata kodu dizininde de bulunur. Aşağıdaki örnekte değişmez bir değişkene ikinci kez değer atadığınızda çıkan E0384 hatasının açıklamasını görüyorsunuz:

bash
rustc --explain E0384
# çıktı: An immutable variable was reassigned.
# çıktı:
# çıktı: Erroneous code example:
# (devamında hatalı örnek, mut ile düzeltme ve shadowing önerisi gelir)

Önerilen çalışma sırası

Önerilen çalışma sırası: 1. Temeller, 2. Ownership ve desenler, 3. Koleksiyonlar ve hata yönetimi, 4. Trait ve generic

Aşağıdaki sıra, The Book'un bölüm sırasını temel alır ve serideki yazıları bu sıraya yerleştirir. Her aşamada önce ilgili yazıyı okuyun, örnekleri kendi bilgisayarınızda derleyin, sonra örnekleri bilerek bozup derleyicinin ne söylediğine bakın. Bir aşamayı tamamen kavramadan sonrakine geçmek mümkündür ama ownership aşamasını atlamamanızı öneririz; sonraki her konu bu kurallara dayanır.

  • 1. Temeller: kurulum, değişkenler, veri tipleri, fonksiyonlar, kontrol akışı ve struct. Bu aşama diğer dillerden tanıdığınız kavramların Rust'taki karşılığını verir.
  • 2. Ownership ve desenler: sahiplik, referanslar, slice'lar, lifetime'lar, enum, match ve desen söz dizimi. Rust'a özgü düşünme biçimi burada oturur.
  • 3. Koleksiyonlar ve hata yönetimi: Vec, String, HashMap, diğer koleksiyonlar, Result ve kendi hata tipleriniz.
  • 4. Trait ve generic: generic tipler, trait tanımlama, derive, trait object'ler, dönüşüm trait'leri ve formatlama.
  • 5. Closure, iterator, akıllı işaretçi ve modül: fonksiyonel özellikler, Box, Rc, RefCell, modül sistemi ve operatör aşırı yükleme.
  • 6. Eşzamanlılık ve Cargo: thread, kanal, Arc ve Mutex, async/await, Cargo.toml ve testler.
  • 7. Standart kütüphane ve araçlar: dosya işlemleri, komut satırı, makrolar, unsafe, Clippy, rustfmt ve rustdoc.
  • 8. Edition değişiklikleri ve sık hatalar: Rust 2024 edition, Cargo'nun son sürümlerindeki değişiklikler ve en sık görülen derleyici hataları.

Bu sıranın tek istisnası 8. gruptaki hata yazılarıdır: bunları sona saklamak zorunda değilsiniz. Örneğin ownership konusunu çalışırken bir E0382 hatası aldığınızda doğrudan ilgili yazıyı açmanız daha verimlidir. Aynı şekilde Clippy ve rustfmt yazısını erken okumanız, kod yazma alışkanlıklarınızı baştan doğru kurmanıza yardım eder.

Öğrenme yolu: serideki 49 yazı

1. Temeller

2. Ownership ve desenler

  • Ownership: sahiplik kuralları: sahiplik kurallarını, move, Copy ve Clone farkını, kapsam ve drop davranışını derinlemesine işler.
  • Referanslar ve borrowing: & ve &mut referanslarını, ödünç alma kurallarını ve sarkan referansların nasıl engellendiğini öğretir.
  • Slice ve str dilimleri: &str ve &[T] dilimlerini, aralık söz dizimini ve UTF-8 sınırlarına dikkat etmeyi anlatır.
  • Lifetime (yaşam süresi): lifetime notasyonunu, elision kurallarını, 'static ömrünü ve struct içinde referans tutmayı açıklar.
  • Enum ve Option: veri taşıyan enum'ları ve Option<T> tipini metotlarıyla birlikte gösterir.
  • match ve if let: match ifadesini, kapsayıcılık kontrolünü, if let, let else ve matches! kullanımını öğretir.
  • Pattern söz dizimi: parçalama (destructuring), aralık desenleri, @ bağlama, guard'lar ve refutability kavramını anlatır.

3. Koleksiyonlar ve hata yönetimi

  • Vec (vektör) kullanımı: Vec<T> oluşturmayı, get ile indeks farkını, üzerinde dolaşmayı ve kapasite yönetimini gösterir.
  • String ve str farkı: sahipli String ile &str farkını, UTF-8 yapısını, Türkçe karakterlerle çalışmayı ve birleştirmeyi anlatır.
  • HashMap kullanımı: HashMap ile anahtar değer saklamayı, entry API'sini ve güncelleme kalıplarını öğretir.
  • BTreeMap, HashSet, VecDeque: standart kütüphanedeki diğer koleksiyonları ve hangisinin ne zaman seçileceğini karşılaştırır.
  • Result ve hata yönetimi: Result, ? operatörü, unwrap ve expect ile panic! ve Result arasındaki seçimi açıklar.
  • Özel hata tipi ve Error trait: std::error::Error uygulamayı, From ile ? dönüşümünü ve Box<dyn Error> kullanımını gösterir.

4. Trait ve generic

5. Closure, iterator, akıllı işaretçi, modül

  • Closure (kapanışlar): closure yazmayı, ortamdan değer yakalamayı, Fn, FnMut, FnOnce ve move kullanımını anlatır.
  • Iterator: map, filter, collect: Iterator trait'ini, adaptörleri, collect ile tembel değerlendirmeyi ve kendi iterator'ınızı yazmayı gösterir.
  • Box akıllı işaretçi: Box<T> ile öz yinelemeli tipleri, Deref ve Drop trait'lerini açıklar.
  • Rc ve RefCell: Rc, RefCell ve Weak ile paylaşılan sahipliği, iç değişebilirliği ve referans döngülerini öğretir.
  • Modül sistemi: mod, use, pub: paket, crate ve modül kavramlarını, yolları, görünürlüğü ve kodu dosyalara bölmeyi anlatır.
  • Operatör aşırı yükleme: std::ops trait'leriyle (Add, Index, Neg gibi) kendi tiplerinize operatör kazandırmayı gösterir.

6. Eşzamanlılık ve Cargo

  • thread::spawn ve join: iş parçacığı başlatmayı, join ile beklemeyi, move closure'larını ve thread::scope kullanımını öğretir.
  • mpsc kanal ile mesajlaşma: std::sync::mpsc kanallarını, birden çok üreticiyi ve sync_channel farkını anlatır.
  • Arc ve Mutex ile paylaşılan durum: Arc, Mutex, RwLock, atomik tipler ile Send ve Sync kavramlarını açıklar.
  • async/await ve Future: async ve await söz dizimini, Future trait'ini ve yalnızca std ile yazılmış basit bir block_on örneğini gösterir.
  • Cargo.toml ve bağımlılıklar: manifest alanlarını, bağımlılık biçimlerini, feature'ları, profilleri, workspace ve Cargo.lock dosyasını anlatır.
  • Test yazma ve cargo test: #[test], assert makroları, should_panic, entegrasyon ve doc testleri ile cargo test bayraklarını öğretir.

7. Standart kütüphane ve araçlar

8. Edition değişiklikleri ve sık hatalar

Öğrenirken sık yapılan hatalar

Uyarıları görmezden gelmek. Rust derleyicisi kullanılmayan değişkenler, gereksiz mut anahtar kelimeleri ve kullanılmayan sonuçlar için varsayılan olarak uyarı verir. Bu uyarılar çoğu zaman bir mantık hatasının ilk işaretidir. cargo fix komutu, düzeltmesi açık olan uyarıları sizin yerinize uygulayabilir; ayrıntılar için Clippy ve rustfmt yazısına bakın.

Edition ayarını unutmak. rustc komutunu doğrudan çalıştırdığınızda varsayılan edition 2015'tir; Cargo ise cargo new ile oluşturduğu projelere edition 2024 yazar. Bu yüzden internetten aldığınız bir örnek Cargo projesinde derlenip tek başına rustc main.rs ile derlenmeyebilir. Bu seride tüm örnekler 2024 edition ile denendi; tek dosyalık denemelerde rustc --edition 2024 kullanın.

Nightly özelliklere dayanan örnekleri kopyalamak. Kaynak kodunun başında #![feature(...)] satırı gördüğünüz örnekler yalnızca nightly kanalında derlenir. The Book'un G ekine göre kararlı (stable) ve beta sürümlerde feature bayrakları kullanılamaz; öğrenirken kararlı kanalda kalmanız en sağlıklısıdır.

Borrow checker ile kavga etmek. Ownership kurallarını öğrenmeden önce her hatayı rastgele clone() çağrılarıyla susturmaya çalışmak, kuralların mantığını görmenizi engeller. Önce ownership ve borrowing yazılarını okuyun, sonra hata yazılarındaki çözüm seçeneklerini karşılaştırın.

Sık Sorulan Sorular

Rust öğrenmeye hangi kaynaktan başlamalıyım?

The Rust Book ile başlayın ve her bölümü bu serideki karşılık gelen yazıyla destekleyin. Kitap, başka bir dilde temel düzeyde kod yazabildiğinizi varsayar. Programlamaya tamamen yeniyseniz kitap da genel bir programlama girişi okumanızı önerir.

Bölümleri atlayabilir miyim?

Kitabın kendi tavsiyesine göre evet, ama bir yerde takılırsanız önceki bölümlere geri dönmeniz gerekebilir. Ayrıntıcı bir öğreniciyseniz 2. bölümdeki proje yerine doğrudan 3. bölümle başlayıp projeye sonra dönebilirsiniz. Ownership bölümünü atlamamanızı öneririz.

Hangi Rust sürümünü kullanmalıyım?

Kararlı (stable) kanalın en güncel sürümünü kullanın. The Book'a göre Rust'ın kararlılık garantisi sayesinde kitaptaki derlenen örnekler daha yeni kararlı sürümlerde de derlenmeye devam eder; yalnızca hata ve uyarı mesajlarının metni sürümden sürüme biraz değişebilir.

Hata mesajını anlamazsam ne yapmalıyım?

Mesajdaki hata kodunu rustc --explain ile açın, ardından serinin hata yazılarına bakın. Mesajdaki help: satırı çoğu zaman doğrudan uygulanabilir bir öneri içerir; yine de öneriyi uygulamadan önce neden önerildiğini anlamaya çalışın.

Marka adları sahiplerine aittir. Bu yazı bağımsız bir teknik rehberdir; adı geçen kuruluşlarla bayilik veya ortaklık ilişkisi bulunduğu anlamına gelmez.

İlgili içerikler: Rust nedir · Rust kurulumu · Ownership · E0382 hatası · Programlama dilleri rehberi · Go nedir · C++ nedir