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

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

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

推荐答案

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

这有点像是有一个C++编译器,把一个库的头文件推到编译的二进制文件中,然后在链接到那个库时再读出它们.

Rust相关问答推荐

访问Rust中的隐藏变量

为什么`Vec i64`的和不知道是`Option i64`?

如何使用syn插入 comments ?

获取字符串切片(&;str)上的切片([ia..ib])返回字符串

在Rust中有没有办法在没有UB的情况下在指针和U64之间进行转换?

自定义结果枚举如何支持`?`/`FromResidual`?

重写Rust中的方法以使用`&;mut self`而不是`mut self`

`*mut[T]`与`*mut T`的区别

如何迭代属性以判断相等性?

什么是`&;[][..]`铁 rust 里的刻薄?

为什么在 Allocator API 中 allocate() 使用 `[u8]` 而 deallocate 使用 `u8` ?

从 rust 函数返回 &HashMap

可以在旋转循环中调用try_recv()吗?

如何在Rust中使用Serde创建一个自定义的反序列化器来处理带有内部标记的枚举

如何在 Rust 中显式声明 std::str::Matches<'a, P> ?

第 7.4 章片段中如何定义 `thread_rng`

无法把握借来的价值不够长寿,请解释

具有生命周期和以后引用的可变方法

有没有办法阻止 rust-analyzer 使非活动代码变暗?

匹配结果时的简洁日志(log)记录