Comprehensive Rust'a Hoş Geldiniz 🦀
1.
Kursun Çalıştırılması
❱
1.1.
Kurs Yapısı
1.2.
Klavye Kısayolları
1.3.
Çeviriler
2.
Cargo Kullanımı
❱
2.1.
Rust Ekosistemi
2.2.
Kod Örnekleri
2.3.
Cargo'nun Yerel (Local) Olarak Çalıştırılması
Gün 1: Sabah
3.
Hoş Geldiniz
4.
Merhaba, Dünya
❱
4.1.
Rust Nedir?
4.2.
Rust'ın Faydaları
4.3.
Deneme Alanı (Playground)
5.
Türler ve Değerler
❱
5.1.
Merhaba, Dünya
5.2.
Değişkenler
5.3.
Değerler
5.4.
Aritmetik
5.5.
Tür Çıkarımı
5.6.
Alıştırma: Fibonacci
❱
5.6.1.
Çözüm
6.
Kontrol Akışı Temelleri
❱
6.1.
if İfadeleri
6.2.
Döngüler
❱
6.2.1.
for
6.2.2.
loop
6.3.
break ve continue
❱
6.3.1.
Etiketler
6.4.
Bloklar ve Kapsamlar
❱
6.4.1.
Kapsamlar (Scopes) ve Gölgeleme (Shadowing)
6.5.
Fonksiyonlar
6.6.
Makrolar
6.7.
Alıştırma: Collatz Sekansı
❱
6.7.1.
Çözüm
Gün 1: Öğleden Sonra
7.
Hoş Geldiniz
8.
Demetler (Tuples) ve Diziler (Arrays)
❱
8.1.
Diziler
8.2.
Demetler
8.3.
Dizi İterasyonu
8.4.
Desenler ve Çözümlenme (Destructuring)
8.5.
Alıştırma: İçiçe Diziler
❱
8.5.1.
Çözüm
9.
Referanslar
❱
9.1.
Paylaşılan Referanslar
9.2.
Özel (Exclusive) Referanslar
9.3.
Slices: &\[T\]
9.4.
Dizeler (Strings)
9.5.
Alıştırma: Geometri
❱
9.5.1.
Çözüm
10.
Kullanıcı Tanımlı Türler
❱
10.1.
İsimli Yapılar
10.2.
Demet Yapıları (Tuple Structs)
10.3.
Enumlar
10.4.
Static
10.5.
Const
10.6.
Tür Eş İsimleri (Type Aliases)
10.7.
Alıştırma: Asansör Etkinlikleri
❱
10.7.1.
Çözüm
Gün 2: Sabah
11.
Hoş Geldiniz
12.
Desen Eşleştirme
❱
12.1.
Değerleri Eşleştirme
12.2.
Çözümlenme
12.3.
Let'li Kontrol Akışı
12.4.
Alıştırma: İfade Değerlendirmesi
❱
12.4.1.
Çözüm
13.
Metotlar ve Özellikler (Traits)
❱
13.1.
Metotlar
13.2.
Özellikler (Traits)
❱
13.2.1.
Özelliklerin (Traits) Gerçekleştirimi
13.2.2.
Üstözellikler (Supertraits)
13.2.3.
İlişkili Türler
13.3.
Türetme
13.4.
Alıştırma: Genel Kaydedici
❱
13.4.1.
Çözüm
14.
Jenerikler
❱
14.1.
Jenerik Fonksiyonlar
14.2.
Jenerik Veri Türleri
14.3.
Jenerik Özellikler (Traits)
14.4.
Özellik (Trait) Sınırları
14.5.
impl Trait
14.6.
Alıştırma: Jenerik min
❱
14.6.1.
Çözüm
Gün 2: Öğleden Sonra
15.
Hoş Geldiniz
16.
Standart Kütüphane Türleri
❱
16.1.
Standart Kütüphane
16.2.
Dokümantasyon
16.3.
Option
16.4.
Result
16.5.
String
16.6.
Vec
16.7.
HashMap
16.8.
Alıştırma: Sayıcı
❱
16.8.1.
Çözüm
17.
Standart Kütüphanedeki Özellikler (Traits)
❱
17.1.
Karşılaştırmalar
17.2.
Operatörler
17.3.
From ve Into
17.4.
Casting
17.5.
Read ve Write
17.6.
Default, yapı (struct) güncelleme sözdizimi
17.7.
Kapanışlar (Closures)
17.8.
Alıştırma: ROT13
❱
17.8.1.
Çözüm
Gün 3: Sabah
18.
Hoş Geldiniz
19.
Bellek Yönetimi
❱
19.1.
Program Belleğinin Gözden Geçirilmesi
19.2.
Bellek Yönetimine Yaklaşımlar
19.3.
Sahiplik
19.4.
Taşıma Semantiği
19.5.
Clone
19.6.
Kopyalanan Türler
19.7.
Drop
19.8.
Alıştırma: İnşa Edici / Yapıcı Tür (Builder Type)
❱
19.8.1.
Çözüm
20.
Akıllı Göstericiler
❱
20.1.
Box<T>
20.2.
Rc
20.3.
Özellik Nesneleri
20.4.
Alıştırma: İkili Ağaç
❱
20.4.1.
Çözüm
Gün 3: Öğleden Sonra
21.
Hoş Geldiniz
22.
Ödünç Alma
❱
22.1.
Bir Değeri Ödünç Alma
22.2.
Ödünç Alma Kontrolü
22.3.
İç (Interior) Değiştirilebilirlik
22.4.
Alıştırma: Sağlık İstatistikleri
❱
22.4.1.
Çözüm
23.
Ömürler (Lifetimes)
❱
23.1.
Ömür için Ek Açıklamalar (Annotations)
23.2.
Ömür Atlaması (Elision)
23.3.
Yapıların Ömürleri
23.4.
Alıştırma: Protobuf Ayrıştırma
❱
23.4.1.
Çözüm
Gün 4: Sabah
24.
Hoş Geldiniz
25.
Adımlayıcıyılar (Iterators)
❱
25.1.
Iterator
25.2.
IntoIterator
25.3.
FromIterator
25.4.
Alıştırma: Adımlayıcı Metot Zincirleme
❱
25.4.1.
Çözüm
26.
Modüller
❱
26.1.
Modüller
26.2.
Dosya Sistemi Hiyerarşisi
26.3.
Görünürlük
26.4.
use, super, self
26.5.
Alıştırma: Bir GUI Kütüphanesi için Modüller
❱
26.5.1.
Çözüm
27.
Test Etme
❱
27.1.
Test Modülleri
27.2.
Diğer Test Türleri
27.3.
Derleyicinin Tüyleri ve Clippy Aracı
27.4.
Alıştırma: Luhn Algrotiması
❱
27.4.1.
Çözüm
Gün 4: Öğleden Sonra
28.
Hoş Geldiniz
29.
Hata İşleme
❱
29.1.
Panic'ler
29.2.
Try Operatörü
29.3.
Try Dönüşümleri
29.4.
Error Özelliği (Trait)
29.5.
thiserror ve anyhow
29.6.
Alıştırma: Result ile Yeniden Yazma
❱
29.6.1.
Çözüm
30.
Emniyetsiz (Unsafe) Rust
❱
30.1.
Emniyetsiz
30.2.
Ham Göstericilerinin İçeriği (Dereferencing)
30.3.
Değiştirilebilir Statik Değişkenler
30.4.
Birlikler (Unions)
30.5.
Emniyetsiz Fonksiyonlar
30.6.
Emniyetsiz Özellikler (Traits)
30.7.
Alıştırma: FFI Sarıcı
❱
30.7.1.
Çözüm
Android
31.
Hoş Geldiniz
32.
Kurulum (Setup)
33.
İnşa (Build) Kuralları
❱
33.1.
İkili (Binary) Dosya
33.2.
Kütüphane
34.
AIDL
❱
34.1.
Doğum Günü Servisi Eğitimi
❱
34.1.1.
Arayüz
34.1.2.
Servis API
34.1.3.
Servis
34.1.4.
Sunucu
34.1.5.
Dağıtmak (Deploy)
34.1.6.
İstemci
34.1.7.
API'yi Değiştirme
34.1.8.
Uyarlamaları Güncellenme
34.2.
AIDL Türler
❱
34.2.1.
İlkel (Primitive) Türler
34.2.2.
Dizi Türleri
34.2.3.
Nesnelerin Gönderilmesi
34.2.4.
Parsellenebilir Gönderme
34.2.5.
Dosyaların Gönderilmesi
35.
Test Etme
❱
35.1.
GoogleTest
35.2.
Taklit Etme (Mocking)
36.
Kayıt Tutma (Logging)
37.
Birlikte Çalışabilirlik
❱
37.1.
C ile
❱
37.1.1.
Bindgen ile Rust Tarafından C'yi Kullanma
37.1.2.
C Tarafından Rust'ı Kullanma
37.2.
C++ ile
❱
37.2.1.
Köprü Modülü
37.2.2.
Rust Köprüsü
37.2.3.
Oluşturulan (Generated) C++
37.2.4.
C++ Köprüsü
37.2.5.
Paylaşılan (Shared) Türler
37.2.6.
Paylaşılan (Shared) Enum'lar
37.2.7.
Rust Hata İşleme
37.2.8.
C++ Hata İşleme
37.2.9.
Ek Türler
37.2.10.
Android için inşa: C++
37.2.11.
Android için inşa: Genrules
37.2.12.
Android için inşa: Rust
37.3.
Java ile
38.
Egzersizler
Chromium
39.
Hoş Geldiniz
40.
Kurulum (Setup)
41.
Chromium ve Cargo Ekosistemlerinin Karşılaştırılması
42.
İlke (Policy)
43.
İnşa (Build) Kuralları
❱
43.1.
Emniyetsiz (Unsafe) Kod
43.2.
Chromium C++'dan Rust Koduna Bağımlılık
43.3.
Visual Studio Code
43.4.
Alıştırma
44.
Test Etme
❱
44.1.
rust_gtest_interop Kütüphanesi
44.2.
Rust Testleri için GN Kuralları
44.3.
chromium::import! Makrosu
44.4.
Alıştırma
45.
C++ ile Birlikte Çalışabilirlik
❱
45.1.
Bağlamalara Örnek
45.2.
CXX'in Sınırlamaları
45.3.
CXX Hata İşleme
❱
45.3.1.
Hata İşleme: QR Örneği
45.3.2.
Hata İşleme: PNG Örneği
45.4.
Chromium'da CXX'i Kullanma
45.5.
Alıştırma
46.
Üçüncü Taraf Kasalarnı Eklenmesi
❱
46.1.
Cargo.toml'yi Yapılandırma
46.2.
gnrt_config.toml'yi Yapılandırma
46.3.
Kasaların İndirilmesi
46.4.
gn İnşa Kurallarının Oluşturulması
46.5.
Problemlerin Çözülmesi
❱
46.5.1.
Kod Oluşturan İnşa Betikleri (Build Scripts )
46.5.2.
C++ Kodunu İnşa Eden (Build) veya Keyfi Eylemler Gerçekleştiren İnşa Betikleri
46.6.
Bir Kasaya Bağımlılık
46.7.
Gözden Geçirmeler (Reviews) ve Denetimler (Audits)
46.8.
Chromium Kaynak Kodunun Kontrol Edilmesi
46.9.
Kasaları Güncel Tutmak
46.10.
Alıştırma
47.
Bir Araya Getirmek - Alıştırma
48.
Alıştırma Çözümleri
Yalın Metal (Bare Metal): Sabah
49.
Hoş Geldiniz
50.
no_std
❱
50.1.
Minimal Bir Örnek
50.2.
alloc
51.
Mikrodenetleyiciler
❱
51.1.
Ham MMIO
51.2.
PAC'ler
51.3.
HAL Kasaları (Crates)
51.4.
Kart Destek Kasaları (Board Support Crates)
51.5.
Tür Durum Deseni
51.6.
embedded-hal
51.7.
probe-rs ve cargo-embed
❱
51.7.1.
Hata Ayıklama
51.8.
Diğer Projeler
52.
Egzersizler
❱
52.1.
Pusula
52.2.
Çözümler
Yalın Metal (Bare Metal): Öğleden Sonra
53.
Uygulama İşlemcileri
❱
53.1.
Rust'a Hazırlanmak
53.2.
Satır İçi Assembly
53.3.
MMIO
53.4.
Bir UART Sürücü Yazalım
❱
53.4.1.
Daha Fazla Özellik (Trait)
53.5.
Daha İyi Bir UART Sürücüsü
❱
53.5.1.
Bitflags Kasası
53.5.2.
Çoklu Yazmaçlar (Registers)
53.5.3.
Sürücü
53.5.4.
Onu Kullan
53.6.
Kayıt Tutma (Logging)
❱
53.6.1.
Onu Kullan
53.7.
İstisnalar
53.8.
Diğer Projeler
54.
Kullanışlı Kasalar (Crates)
❱
54.1.
zerocopy
54.2.
aarch64-paging
54.3.
buddy_system_allocator
54.4.
tinyvec
54.5.
spin
55.
Android
❱
55.1.
vmbase
56.
Egzersizler
❱
56.1.
RTC Sürücüsü
56.2.
Çözümler
Eşzamanlılık: Sabah
57.
Hoş Geldiniz
58.
İş Parçacıkları (Threads)
❱
58.1.
Kapsamlı İş Parçacıkları (Threads)
59.
Kanallar
❱
59.1.
Sınırsız Kanallar
59.2.
Sınırlı Kanallar
60.
Send ve Sync
❱
60.1.
Send
60.2.
Sync
60.3.
Örnekler
61.
Paylaşımlı Durum (State)
❱
61.1.
Arc
61.2.
Mutex
61.3.
Örnek
62.
Egzersizler
❱
62.1.
Filozofların Akşam Yemeği
62.2.
Çok İş Parçacıklı Link Denetleyicisi
62.3.
Çözümler
Eşzamanlılık: Öğleden Sonra
63.
Async Temelleri
❱
63.1.
async/await
63.2.
Future Özellikleri (Traits)
63.3.
Çalışma Zamanları
❱
63.3.1.
Tokio Kasası
63.4.
Görevler
63.5.
Async Kanalları
64.
Kontrol Akışı
❱
64.1.
Join
64.2.
Select
65.
Tuzaklar
❱
65.1.
Yürütücünün/Çalıştırıcının (Executor) Engellenmesi
65.2.
Pin
65.3.
Async Özellikleri (Traits)
65.4.
İptal (Cancellation)
66.
Egzersizler
❱
66.1.
Filozofların Akşam Yemeği
66.2.
Yayımlamalı Sohbet Uygulaması
66.3.
Çözümler
Son sözler
67.
Teşekkürler!
68.
Sözlük
69.
Diğer Kaynaklar
70.
Emekler
Light
Rust
Coal
Navy
Ayu
Comprehensive Rust 🦀
English
Brazilian Portuguese (Português do Brasil)
Chinese Simplified (汉语)
Chinese Traditional (漢語)
Japanese (日本語)
Korean (한국어)
Farsi (فارسی)
Spanish (Español)
Ukrainian (українська)
Alıştırma Çözümleri
Solutions to the Chromium exercises can be found in
this series of CLs
.