Kitap ile İlgili Genel Notlar
3
2. Geliştirme Ortamının Hazırlanması
5
Genel Hatları ile Programın Yapısı
11
Programın Derlenmesi ve Çalıştırılması
12
Cargo Paket Yöneticisi
13
Cargo ile Projenin Derlenmesi ve Çalıştırılması
16
Derleme Zamanı – Çalışma Zamanı
23
Değişkenlerde Gölgeleme (Shadowing)
24
Blok Kapsamı (Block Scope)
27
Fonksiyon Kapsamı (Function Scope)
28
Döngü Kapsamı (Loop Scope)
29
Kod Satırlarına Yorum Ekleme
29
Negatif ve Pozitif Sayılar Hafızada Nasıl Saklanıyor?
33
Tamsayı Taşması (Integer Overflow)
35
Float (Ondalık Sayılar)
37
Boolean (Mantıksal Tür)
38
Birleşik (Compound) Türler
39
İfade (Expression) ve İşlem (Statement) Farkı
48
Fonksiyonlarda Dönüş Türünün Belirtilmesi
49
Kıyaslama Operatörleri
51
Döngülerden Değer Döndürme
61
Döngü Etiketi Kullanımı
62
8. Sahiplik (Ownership)
67
Stack ve Heap Hafıza Bölümleri
67
Değişkenler ve Sahiplik Hakkının Aktarımı
72
Stack Bellekte Saklanan Verilerin Kopyalanması
76
Sahiplik ve Kopyalama Özelliklerinin Fonksiyonlarda Kullanımı
77
Fonksiyonlardan Değer Döndürülmesi Esnasında Sahiplik Devri ve Kopyalama
78
Referanslar ve Ödünç Alma
79
Değiştirilebilir (Mutable) Referanslar
80
&str Değişken Türü ve Slice İlişkisi
86
Arraylerde Slice Türü Kullanımı
86
Struct Veri Yapısının Tanımlanması ve Kullanımı
87
Diğer Struct Değişkenlerini Kullanarak Değişken Oluşturmak
90
Veri İçermeyen Unit Benzeri Structlar
91
Birden Fazla Sayıda Argüman Kabul Eden Bağlı Metot Örneği
94
Birden Fazla Sayıda impl Bloğu Tanımlanması
97
Option<T> Enumı ile Match Yapısının Kullanımı
111
Match Bloğunda Kapsanmayan Değerler ve _ Yer Tutucusu
112
11. Paket, Crate ve Modüller Yardımı ile Yazılım Projesinin Organize Edilmesi
117
Kapsam ve Erişilebilirlik Kontrolü için Modül Tanımlama
118
Mutlak ve Göreceli Path
126
pub use İle Modül Arayüzünü Değiştirme
127
Pathleri Grup Hâlinde Kapsama Ekleme
129
Modül İçerisinde Yer Alan Struct ve Enumların Erişilebilirlik Ayarları
129
12. Standart Kütüphanede Tanımlanmış Veri Yapıları
131
For Döngüsü Kullanımı
135
Enum Kullanarak Bir Vectorde Farklı Türlerde Veri Saklamak
136
push_str ve push Metodları ile Veri Ekleme
137
+ Operatörü ve format! Makrosu ile String Birleştirme
138
Stringlerde Karakterlere Erişim
139
HashMapte Veri Güncelleme
143
Kurtarılamaz Hatalar ve panic! Makrosu
147
Kurtarılabilir Hatalar ve Result Enumı
149
Unwrap ve Expect Yardımcı Metotları
152
14. Generic Tür Parametresi
157
Fonksiyonlarda Generic Tür Parametresi Kullanımı
157
Structlarda Generic Tür Parametresi Kullanımı
160
Enumlarda Generic Tür Parametresi Kullanımı
161
Metotlarda Generic Tür Parametresi Kullanımı
162
15. Trait Tanımlama ve Kullanımı
167
Traitlerde Varsayılan Metot Gövdesi Tanımlanması
169
Traitlerin Parametre Olarak Kullanımı
170
Where Anahtar Kelimesi Kullanımı
173
Fonksiyondan Dönüş Değeri Olarak Trait Kullanımı
174
Metotları Koşullu Olarak Uygulamak
176
Struct Tanımlamada Lifetime Etiketi Kullanımı
185
Derleyici Tarafından Tanımlanan Lifetime Etiketleri
185
Metotlarda Lifetime Etiketi Kullanımı
186
Static Lifetime Tanımlanması
187
Tüm Generic Türlerin Bir Arada Kullanımı
187
Closureların Verilere Erişimi
194
Closurelardan Veri Aktarımı ve Uygulanan Fn Traitler
196
Iterator Traiti ve next Metodu
204
Iterator Kullanan Metotlar
207
Yeni Iteratorler Oluşturan Metotlar
207
19. Cargo ve Crates.io Kullanımı
211
Kod Derlemesini Özelleştirme
211
Crates.io’dan Paket İndirme ve Projede Kullanma
212
Projenin Kütüphane Dosyasına Ayrılması ve Crates Workspaces
213
20. Akıllı İşaretçiler (Smart Pointers)
221
Box<T> Akıllı İşaretçisi
222
Box<T> ile Heap Bellekte Veri Saklamak
222
Akıllı İşaretçi Oluşturma
225
Deref Traiti Yardımı ile Otomatik Tür Dönüşümleri
228
Değişebilir Değişkenlerde Deref Trait Kullanımı
229
Rc<T> Akıllı İşaretçisi
232
RefCell<T> Akıllı İşaretçisi
234
Değişemez Bir Değerin Değişebilir Şekilde Ödünç Alınması
236
Rc<T> ve RefCell<T> Bir Arada Kullanarak Birden Fazla Sayıda Değiştirilebilir
Döngüsel Referansların Önlenmesi
239
Weak<T> Kullanımı ile Döngüsel Referansları Önlemek
241
21. Eşzamanlı ve Paralel Programlama
245
Spawn Fonksiyonu ile Yeni Bir İş Parçacığı Oluşturma
245
Yan İş Parçacıklarının Sonlanmasını Bekleme
247
İş Parçacıklarında Move Closure Kullanımı
250
Mesajlaşma Yolu ile İş Parçacıkları Arasında Veri Aktarımı
251
Birden Fazla Sayıda İş Parçacığı ile Kanala Veri Aktarımı
254
Veri Sahipliği Paylaşımı ile İş Parçacıkları Arasında Veri Aktarımı
256
Arc<T> ile Birden Fazla İş Parçacığından Mutex<T>’ye Erişim
258
22. Trait Nesneleri Kullanımı
261
23. Örüntü Eşleştirme
269
if let Koşullu İfadeleri
270
While Let Koşullu Döngüleri
271
Fonksiyon Parametreleri
273
Örüntünün Eşleşmesi veya Eşleşmemesi Durumu
273
Farklı Örüntü Biçimleri ve Kullanımları
274
Örüntülerde Değişken Kullanımı
275
Birden Fazla Sayıda Örüntünün Bir Arada Kullanımı
276
Bir Aralıktaki Değerlerin Eşleştirilmesi
278
Struct, Enum ve Tuple Türlerini Taşıdıkları Ögelere Ayırmak
279
Struct Türünü Ögelerine Ayırmak
279
Enum Türünü Ögelerine Ayırmak
281
Örüntüdeki Bazı Değerlerin Göz Ardı Edilmesi
284
Kalan Değerleri ile Göz Ardı Etme
285
@ Karakteri ile Yakalanan Değeri Değişkene Bağlama
286
24. Güvenlik Kontrollerinin Devre Dışı Bırakılması
287
Ham İşaretçi Kullanımı ve İşaret Ettiği Veriye Erişim
288
Hafıza Güvenliği Kontrollerine Tabi Olmayan Metot ve Fonksiyonları Çağırma
289
Unsafe Kodların Dış Erişime Kapatılması
290
Extern Anahtar Kelimesi ile Harici Kodları Çağırma
294
Değişebilir Bir Static Değişkene Erişmek ve Değerini Değiştirmek
295
Union Türünün Ögelerine Erişim
297
25. İleri Seviye Traitler
299
Traitlerde İlişkili Tür Kullanımı
299
Generic Tür Parametrelerinde Varsayılan Tür Tanımlanması
300
İki Farklı Traitte Aynı Metot İsminin Kullanımı ve Çağırılması
304
Bağımlı Trait Tanımlanması
308
26. İleri Seviye Türler
309
27. İleri Seviye Fonksiyon ve Closurelar
313
Fonksiyon İşaretçileri
313
Bir Fonksiyondan Closure Döndürmek
314
Türev Makro Tanımlama
318
Özellik Benzeri Makrolar
323
Fonksiyon Benzeri Makrolar
324