【问题标题】:How are the generic functions and types stored in an rlib?通用函数和类型如何存储在 rlib 中?
【发布时间】:2015-06-09 07:43:32
【问题描述】:

在C++中,模板不能生成动态库,只能通过头文件来使用。

在 C# 中,泛型函数和类型可以通过 .NET 中的中间语言进行解释。

Rust 没有虚拟机,泛型可以存储在rlib 文件中。它是如何做到这一点的? rlib文件的格式是什么?

【问题讨论】:

  • .rlib 是 rustc 私有的格式,它随时可能更改,并且无意保证兼容性。

标签: generics rust


【解决方案1】:

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

这有点像 C++ 编译器将库的头文件推入编译后的二进制文件,然后在链接该库时再次读取它们。

【讨论】:

    猜你喜欢
    • 2017-03-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-07
    • 2015-07-09
    • 1970-01-01
    • 2019-11-24
    相关资源
    最近更新 更多