在C ++中,模板无法生成动态库,我们只能通过头文件使用它们。
在C#中,泛型函数和类型可以用.NET中的中间语言来解释。
Rust没有虚拟机,并且泛型可以存储在rlib
文件中。它是如何实现这一目标的? rlib文件的格式是什么?
答案 0 :(得分:17)
rlib
是一个包含其他元数据的常规静态库(以ar
格式构建)。除其他外,该元数据包含标有#[inline]
的所有泛型和函数的完整序列化抽象语法树(AST)。
有点像是有一个C ++编译器将库的头文件推入已编译的二进制文件中,然后在链接到该库时再次读出它们。