
Lifetime Nâng Cao
Higher-ranked trait bounds (HRTB), lifetime subtyping, variance (covariant, contravariant, invariant), 'static vs 'a, NLL
1Higher-Ranked Trait Bound (HRTB) trong Rust là gì?
Higher-Ranked Trait Bound (HRTB) trong Rust là gì?
Câu trả lời
Higher-Ranked Trait Bound (HRTB) cho phép chỉ định rằng một hàm hoặc một trait phải hoạt động cho mọi lifetime có thể, không chỉ một lifetime cụ thể. Cú pháp for<'a> cho biết trait bound phải được thỏa mãn cho bất kỳ lifetime 'a nào do phía gọi lựa chọn. Tính năng này thiết yếu cho các closure và callback cần nhận các tham chiếu với lifetime khác nhau.
2Sự khác biệt giữa fn foo<'a>(f: impl Fn(&'a str)) và fn foo(f: impl for<'a> Fn(&'a str)) là gì?
Sự khác biệt giữa fn foo<'a>(f: impl Fn(&'a str)) và fn foo(f: impl for<'a> Fn(&'a str)) là gì?
Câu trả lời
Với fn foo<'a>, lifetime 'a được phía gọi cố định tại thời điểm gọi và giữ nguyên trong suốt quá trình thực thi. Với for<'a>, closure phải hoạt động cho bất kỳ lifetime nào, cho phép gọi nó nhiều lần với các tham chiếu có lifetime khác nhau. Sự phân biệt này rất quan trọng đối với các API gọi một closure nhiều lần với các tham chiếu tạm thời khác nhau.
3Lifetime subtyping trong Rust là gì và 'a: 'b có nghĩa là gì?
Lifetime subtyping trong Rust là gì và 'a: 'b có nghĩa là gì?
Câu trả lời
Lifetime subtyping thiết lập một quan hệ subtyping giữa các lifetime. Ký hiệu 'a: 'b nghĩa là 'a sống ít nhất bằng 'b, do đó 'a là một subtype của 'b. Một tham chiếu với lifetime dài hơn có thể được dùng ở nơi mong đợi một lifetime ngắn hơn. Quan hệ này là covariant đối với các tham chiếu bất biến, cho phép truyền một tham chiếu với lifetime dài hơn vào nơi mà một lifetime ngắn hơn là đủ.
Variance trong Rust là gì và nó ảnh hưởng đến các kiểu generic như thế nào?
Tại sao &mut T lại invariant đối với T trong khi &T lại covariant?
+17 câu hỏi phỏng vấn
Các chủ đề phỏng vấn Rust khác
Cơ bản về Rust
Ownership & Borrowing
Structs & Enums
Xử lý lỗi
Collections
Modules & Packages
Traits
Generics
Lifetimes
Iterators & Closures
Smart Pointers
Concurrency Basics
async/await
Testing
Cargo & Ecosystem
Pattern Matching
Macro
Serde & Serialization
Unsafe Rust
Trait nâng cao
Type System
Tokio & Async I/O
Tối ưu hóa Hiệu suất
Memory Management
Web Frameworks
Database Integration
Design Pattern trong Rust
Nắm vững Rust cho lần phỏng vấn tiếp theo
Truy cập tất cả câu hỏi, flashcards, bài kiểm tra kỹ thuật, bài tập code review và mô phỏng phỏng vấn.
Bắt đầu miễn phí