Tôi muốn triển khai trình xây dựng tương tự như gỡ lỗi builders được xác định bởi thư viện chuẩn. Chúng được định nghĩa sử dụng các cấu trúc như sau:Có phải <'a, 'b: 'a> có nghĩa là tuổi thọ 'b phải vượt xa tuổi thọ' a?
struct DebugFoo<'a, 'b: 'a> {
fmt: &'a mut std::fmt::Formatter<'b>
}
Vì tôi không hiểu những gì các hình thức <'a, 'b: 'a>
phương tiện cũng không phải tôi có thể thấy nó được đề cập trong cuốn sách Rust hoặc tham chiếu Rust (ít nhất là liên quan đến tuổi thọ), tôi chỉ cố gắng để loại bỏ những gì tôi không hiểu để xem những gì sẽ xảy ra:
struct DebugFoo<'a, 'b> {
fmt: &'a mut std::fmt::Formatter<'b>
}
Biên soạn nó tôi nhận được lỗi này:
in type `&'a mut core::fmt::Formatter<'b>`, reference has a longer
lifetime than the data it references
Và ghi chú này:
the pointer is valid for the lifetime 'a as defined on the struct at 1:0
but the referenced data is only valid for the lifetime 'b as defined on
the struct at 1:0
Nó làm cho ý nghĩa với tôi: 'a
và 'b
là kiếp sống khác nhau như vậy, để được ở bên an toàn, Rust (? Các checker mượn) giả định rằng 'a
sẽ sống lâu hơn 'b
, và ném lỗi.
Bây giờ tôi có thể đoán rằng <'a, 'b: 'a>
có nghĩa là tuổi thọ 'b
phải dài hơn tuổi thọ 'a
. Tôi đoán đúng không? Hoặc có nhiều hơn? Làm cách nào tôi có thể tìm thấy tài liệu đó?