2015-06-09 18 views
15

Trong C++, các mẫu không thể được tạo thành thư viện động, chúng tôi chỉ có thể sử dụng chúng theo các tệp tiêu đề.Các chức năng và loại chung được lưu trữ trong rlib như thế nào?

Trong C#, các hàm và kiểu chung có thể được diễn giải bằng ngôn ngữ trung gian trong .NET.

Rust không có máy ảo và các generics có thể được lưu trữ trong các tệp rlib. Làm thế nào để nó đạt được điều này? Định dạng của tập tin rlib là gì?

+2

.rlib là định dạng riêng tư với rustc dễ bị thay đổi tại bất kỳ thời điểm nào và không có ý định đảm bảo tính tương thích. –

Trả lời

14

An rlib là thư viện tĩnh thông thường (được xây dựng ở định dạng ar) chứa siêu dữ liệu bổ sung. Siêu dữ liệu đó chứa, trong số những thứ khác, cây cú pháp trừu tượng hoàn chỉnh, được tuần tự hóa (AST) cho tất cả các generics và hàm được đánh dấu bằng #[inline].

Có một chút giống như nếu có trình biên dịch C++ đẩy các tệp tiêu đề của thư viện vào tệp nhị phân đã biên dịch và sau đó đọc lại chúng khi liên kết với thư viện đó.

Các vấn đề liên quan