如何将通用函数和类型存储在rlib中?

时间:2015-06-09 07:43:33

标签: generics rust

在C ++中,模板无法生成动态库,我们只能通过头文件使用它们。

在C#中,泛型函数和类型可以用.NET中的中间语言来解释。

Rust没有虚拟机,并且泛型可以存储在rlib文件中。它是如何实现这一目标的? rlib文件的格式是什么?

1 个答案:

答案 0 :(得分:17)

rlib是一个包含其他元数据的常规静态库(以ar格式构建)。除其他外,该元数据包含标有#[inline]的所有泛型和函数的完整序列化抽象语法树(AST)。

有点像是有一个C ++编译器将库的头文件推入已编译的二进制文件中,然后在链接到该库时再次读出它们。