通用函数和类型如何存储在 rlib 中?
Posted
技术标签:
【中文标题】通用函数和类型如何存储在 rlib 中?【英文标题】:How are the generic functions and types stored in an rlib? 【发布时间】:2015-06-09 07:43:32 【问题描述】:在C++中,模板不能生成动态库,只能通过头文件来使用。
在 C# 中,泛型函数和类型可以通过 .NET 中的中间语言进行解释。
Rust 没有虚拟机,泛型可以存储在rlib
文件中。它是如何做到这一点的? rlib文件的格式是什么?
【问题讨论】:
.rlib 是 rustc 私有的格式,它随时可能更改,并且无意保证兼容性。 【参考方案1】:rlib
是一个包含附加元数据的常规静态库(以 ar
格式构建)。除其他内容外,该元数据还包含所有标有 #[inline]
的泛型和函数的完整序列化抽象语法树 (AST)。
这有点像 C++ 编译器将库的头文件推入编译后的二进制文件,然后在链接该库时再次读取它们。
【讨论】:
以上是关于通用函数和类型如何存储在 rlib 中?的主要内容,如果未能解决你的问题,请参考以下文章
在Typescript中,如何在工厂(ish)函数中实例化的类上获取方法的通用返回类型