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?

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.
| Kaynak | Ne için | Ne zaman açılır |
|---|---|---|
| The Rust Book | Dili sırayla öğrenmek | İlk günden itibaren ana kaynak |
| Rust by Example | Kısa, çalıştırılabilir örnekler | Bir konuyu okuduktan hemen sonra |
| std belgeleri | Tip ve metot imzaları, örnekler | Bir metodun ne döndürdüğünü merak ettiğinizde |
| The Reference | Kesin dil kuralları | Ayrıntılı bir davranışı doğrulamak için |
| Hata kodu dizini | E0xxx kodlarının açıklaması | Derleyici bir hata kodu verdiğinde |
| Cargo kitabı | Cargo.toml ve cargo komutları | Proje yapılandırırken |
| Edition Guide | Edition 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.
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:
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ı

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,
matchve 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,Resultve 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,
ArcveMutex, async/await,Cargo.tomlve 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
- Rust kurulumu: rustup, rustc ve Cargo: rustup ile kurulumu,
rustcile ilk programı vecargo new,build,run,checkkomutlarını gösterir. - Değişkenler: let, mut, shadowing, const: varsayılan değişmezliği,
mut, gölgeleme (shadowing),constvestaticfarklarını anlatır. - Veri tipleri: tamsayı, float, char, tuple: skaler ve bileşik tipleri, tamsayı taşmasının debug ve release davranışını, tuple ve dizileri öğretir.
- Fonksiyonlar, ifade ve deyim: fonksiyon tanımını, parametreleri, dönüş değerini ve noktalı virgülün ifadeyi deyime çevirmesini açıklar.
- if, loop, while ve for:
ififadesini, üç döngü türünü, etiketlibreakve döngüden değer döndürmeyi gösterir. - Struct tanımlama ve metotlar: struct, tuple struct ve birim struct tanımlamayı,
implbloklarını, metotları ve ilişkili fonksiyonları anlatır.
2. Ownership ve desenler
- Ownership: sahiplik kuralları: sahiplik kurallarını, move,
CopyveClonefarkını, kapsam vedropdavranışını derinlemesine işler. - Referanslar ve borrowing:
&ve&mutreferanslarını, ödünç alma kurallarını ve sarkan referansların nasıl engellendiğini öğretir. - Slice ve str dilimleri:
&strve&[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:
matchifadesini, kapsayıcılık kontrolünü,if let,let elsevematches!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ı,getile indeks farkını, üzerinde dolaşmayı ve kapasite yönetimini gösterir. - String ve str farkı: sahipli
Stringile&strfarkını, UTF-8 yapısını, Türkçe karakterlerle çalışmayı ve birleştirmeyi anlatır. - HashMap kullanımı:
HashMapile 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ü,unwrapveexpectilepanic!veResultarasındaki seçimi açıklar. - Özel hata tipi ve Error trait:
std::error::Erroruygulamayı,Fromile?dönüşümünü veBox<dyn Error>kullanımını gösterir.
4. Trait ve generic
- Generics (jenerik tipler): generic fonksiyon, struct, enum ve metot yazmayı ve monomorphization kavramını anlatır.
- Trait tanımlama ve impl: trait tanımlamayı, varsayılan metotları, trait sınırlarını,
whereveimpl Traitkullanımını öğretir. - derive: Debug, Clone, PartialEq:
#[derive]ile otomatik türetilebilen trait'leri ve her birinin ne sağladığını açıklar. - Trait object ve dyn:
dyn Trait,Box<dyn Trait>, dyn uyumluluğu ve statik ile dinamik dağıtım farkını gösterir. - From, Into, TryFrom dönüşümleri: dönüşüm trait'lerini,
AsRefkullanımını veasdönüşümünün sınırlarını anlatır. - Display ve Debug formatlama:
println!veformat!biçim belirteçlerini, kendiDisplayveDebuguygulamalarınızı öğretir.
5. Closure, iterator, akıllı işaretçi, modül
- Closure (kapanışlar): closure yazmayı, ortamdan değer yakalamayı,
Fn,FnMut,FnOncevemovekullanımını anlatır. - Iterator: map, filter, collect:
Iteratortrait'ini, adaptörleri,collectile tembel değerlendirmeyi ve kendi iterator'ınızı yazmayı gösterir. - Box akıllı işaretçi:
Box<T>ile öz yinelemeli tipleri,DerefveDroptrait'lerini açıklar. - Rc ve RefCell:
Rc,RefCellveWeakile 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::opstrait'leriyle (Add,Index,Neggibi) kendi tiplerinize operatör kazandırmayı gösterir.
6. Eşzamanlılık ve Cargo
- thread::spawn ve join: iş parçacığı başlatmayı,
joinile beklemeyi,moveclosure'larını vethread::scopekullanımını öğretir. - mpsc kanal ile mesajlaşma:
std::sync::mpsckanallarını, birden çok üreticiyi vesync_channelfarkını anlatır. - Arc ve Mutex ile paylaşılan durum:
Arc,Mutex,RwLock, atomik tipler ileSendveSynckavramlarını açıklar. - async/await ve Future:
asyncveawaitsöz dizimini,Futuretrait'ini ve yalnızca std ile yazılmış basit birblock_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.lockdosyasını anlatır. - Test yazma ve cargo test:
#[test], assert makroları,should_panic, entegrasyon ve doc testleri ilecargo testbayraklarını öğretir.
7. Standart kütüphane ve araçlar
- Dosya okuma ve yazma (std::fs):
std::fsvestd::ioile dosya işlemlerini, tamponlu okuma yazmayı ve yol tiplerini gösterir. - Komut satırı argümanları ve env:
std::env::args, ortam değişkenleri,eprintln!veprocess::exitkullanımını anlatır. - macro_rules! ile makro yazma: bildirimsel makroları, fragment belirteçlerini, tekrar kalıplarını ve hijyeni açıklar.
- unsafe ve ham işaretçi:
unsafebloklarının açtığı yetkileri, ham işaretçileri,externve tanımsız davranış riskini öğretir. - Clippy ve rustfmt ile kod kalitesi:
cargo fmt,cargo clippyve lint seviyelerini (allow, warn, deny) gösterir. - rustdoc ve dokümantasyon yorumları:
///ve//!yorumlarını,cargo dockomutunu ve doc testlerini anlatır.
8. Edition değişiklikleri ve sık hatalar
- Rust 2024 edition değişiklikleri: 2024 edition'ın getirdiği değişiklikleri ve
cargo fix --editionile geçişi anlatır. - Cargo'nun son sürüm değişiklikleri: Cargo 1.94 ile 1.99 arasındaki kararlı ve kullanıcıya görünen değişiklikleri sürüm sürüm listeler.
- E0382: borrow of moved value: taşınmış bir değeri kullanmaktan doğan E0382 ve benzeri move hatalarını gerçek mesajlarla çözer.
- E0499 ve E0502 borrow checker hataları: aynı anda birden çok ödünç almadan kaynaklanan E0499, E0502 ve E0506 hatalarını açıklar.
- E0106 ve E0597 lifetime hataları: eksik lifetime belirteci, yeterince uzun yaşamayan değer ve yerel değişkene referans döndürme hatalarını çözer.
- E0277 ve E0308 tip hataları: trait sınırı, tip uyuşmazlığı ve bulunamayan isim ya da yol hatalarını örneklerle anlatır.
Öğ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