
İleri Düzey Lifetime
Higher-ranked trait bounds (HRTB), lifetime subtyping, variance (covariant, contravariant, invariant), 'static vs 'a, NLL
1Rust'ta Higher-Ranked Trait Bound (HRTB) nedir?
Rust'ta Higher-Ranked Trait Bound (HRTB) nedir?
Cevap
Higher-Ranked Trait Bound (HRTB), bir fonksiyonun veya trait'in yalnızca belirli bir lifetime için değil, olası tüm lifetime'lar için çalışması gerektiğini belirtmeyi sağlar. for<'a> söz dizimi, trait bound'un çağıran tarafından seçilen herhangi bir lifetime 'a için karşılanması gerektiğini gösterir. Bu özellik, farklı lifetime'lara sahip referansları kabul etmesi gereken closure'lar ve callback'ler için temeldir.
2fn foo<'a>(f: impl Fn(&'a str)) ile fn foo(f: impl for<'a> Fn(&'a str)) arasındaki fark nedir?
fn foo<'a>(f: impl Fn(&'a str)) ile fn foo(f: impl for<'a> Fn(&'a str)) arasındaki fark nedir?
Cevap
fn foo<'a> ile, lifetime 'a çağrı anında çağıran tarafından sabitlenir ve yürütme boyunca aynı kalır. for<'a> ile, closure herhangi bir lifetime için çalışmalıdır; bu da onun farklı lifetime'lara sahip referanslarla birden fazla kez çağrılmasına olanak tanır. Bu ayrım, bir closure'ı farklı geçici referanslarla birden fazla kez çağıran API'ler için çok önemlidir.
3Rust'ta lifetime subtyping nedir ve 'a: 'b ne anlama gelir?
Rust'ta lifetime subtyping nedir ve 'a: 'b ne anlama gelir?
Cevap
Lifetime subtyping, lifetime'lar arasında bir subtyping ilişkisi kurar. 'a: 'b gösterimi, 'a'nın en az 'b kadar yaşadığı anlamına gelir, dolayısıyla 'a, 'b'nin bir subtype'ıdır. Daha uzun bir lifetime'a sahip bir referans, daha kısa bir lifetime'ın beklendiği yerde kullanılabilir. Bu ilişki, değişmez referanslar için covariant'tır ve daha kısa birinin yeterli olacağı yerde daha uzun lifetime'a sahip bir referansın geçirilmesine olanak tanır.
Rust'ta variance nedir ve generic tipleri nasıl etkiler?
&mut T neden T'ye göre invariant iken &T covariant'tır?
+17 mülakat soruları
Diğer Rust mülakat konuları
Rust Temelleri
Ownership & Borrowing
Structs & Enums
Hata Yönetimi
Koleksiyonlar
Modüller ve Paketler
Traits
Generics
Lifetimes
Iterators & Closures
Smart Pointers
Concurrency Basics
async/await
Testing
Cargo & Ecosystem
Pattern Matching
Makrolar
Serde ve Serileştirme
Unsafe Rust
Gelişmiş Trait'ler
Type System
Tokio & Async I/O
Performans Optimizasyonu
Memory Management
Web Frameworks
Database Integration
Rust Tasarım Desenleri
Bir sonraki mülakatın için Rust'de uzmanlaş
Tüm sorulara, flashcards'a, teknik testlere, code review alıştırmalarına ve mülakat simülatörlerine eriş.
Ücretsiz başla