
Lifetime Lanjutan
Higher-ranked trait bounds (HRTB), lifetime subtyping, variance (covariant, contravariant, invariant), 'static vs 'a, NLL
1Apa itu Higher-Ranked Trait Bound (HRTB) di Rust?
Apa itu Higher-Ranked Trait Bound (HRTB) di Rust?
Jawaban
Higher-Ranked Trait Bound (HRTB) memungkinkan untuk menentukan bahwa sebuah fungsi atau trait harus bekerja untuk semua lifetime yang mungkin, bukan hanya satu yang spesifik. Sintaks for<'a> menunjukkan bahwa trait bound harus terpenuhi untuk lifetime 'a apa pun yang dipilih oleh pemanggil. Fitur ini penting untuk closure dan callback yang perlu menerima referensi dengan lifetime yang bervariasi.
2Apa perbedaan antara fn foo<'a>(f: impl Fn(&'a str)) dan fn foo(f: impl for<'a> Fn(&'a str))?
Apa perbedaan antara fn foo<'a>(f: impl Fn(&'a str)) dan fn foo(f: impl for<'a> Fn(&'a str))?
Jawaban
Dengan fn foo<'a>, lifetime 'a ditetapkan oleh pemanggil pada saat pemanggilan dan tetap sama sepanjang eksekusi. Dengan for<'a>, closure harus bekerja untuk lifetime apa pun, sehingga dapat dipanggil berkali-kali dengan referensi dari lifetime yang berbeda. Perbedaan ini krusial untuk API yang memanggil sebuah closure berkali-kali dengan referensi sementara yang berbeda.
3Apa itu lifetime subtyping di Rust dan apa arti 'a: 'b?
Apa itu lifetime subtyping di Rust dan apa arti 'a: 'b?
Jawaban
Lifetime subtyping membentuk hubungan subtyping antar lifetime. Notasi 'a: 'b berarti 'a hidup setidaknya selama 'b, sehingga 'a adalah subtype dari 'b. Sebuah referensi dengan lifetime yang lebih panjang dapat digunakan di tempat yang mengharapkan lifetime yang lebih pendek. Hubungan ini bersifat covariant untuk referensi imutabel, sehingga memungkinkan meneruskan referensi dengan lifetime yang lebih panjang di tempat yang cukup dengan yang lebih pendek.
Apa itu variance di Rust dan bagaimana pengaruhnya terhadap tipe generic?
Mengapa &mut T bersifat invariant terhadap T sedangkan &T bersifat covariant?
+17 pertanyaan wawancara
Topik wawancara Rust lainnya
Dasar-Dasar Rust
Ownership & Borrowing
Structs & Enums
Penanganan Error
Collections
Module & Package
Traits
Generics
Lifetimes
Iterators & Closures
Smart Pointers
Concurrency Basics
async/await
Testing
Cargo & Ecosystem
Pattern Matching
Macro
Serde & Serialisasi
Unsafe Rust
Trait Lanjutan
Type System
Tokio & Async I/O
Optimasi Performa
Memory Management
Web Frameworks
Database Integration
Design Pattern Rust
Kuasai Rust untuk wawancara berikutnya
Akses semua pertanyaan, flashcards, tes teknis, latihan code review dan simulator wawancara.
Mulai gratis