Rust

Lifetime Lanjutan

Higher-ranked trait bounds (HRTB), lifetime subtyping, variance (covariant, contravariant, invariant), 'static vs 'a, NLL

20 pertanyaan wawancaraยท
Senior
1

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.

2

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.

3

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.

4

Apa itu variance di Rust dan bagaimana pengaruhnya terhadap tipe generic?

5

Mengapa &mut T bersifat invariant terhadap T sedangkan &T bersifat covariant?

+17 pertanyaan wawancara

Kuasai Rust untuk wawancara berikutnya

Akses semua pertanyaan, flashcards, tes teknis, latihan code review dan simulator wawancara.

Mulai gratis