C++受到了批评,因为它缺少单独的模板编译.C++模板被编译为(实际上)每个实例化.关于泛型的单独编译,Rust的情况如何?我的理解是,它的行为类似C++,除了在每个箱的编译期间缓存实例.对吗?

推荐答案

据我所知,泛型以某种序列化形式存储在定义它们的 crate 中.当在另一个 crate (库或二进制)中使用时,它们将从此序列化形式实例化.因此,它们是与C++模板相同的单形化的,但是避免了重复分析不必要代码的开销.

Rust相关问答推荐

如何处理对打包字段的引用是未对齐错误?

如何在Rust中获得不可辩驳的'if let'模式警告Mutex锁定?""

使用Clap时如何将String作为Into Str参数传递?

RUST应用程序正在退出,错误代码为:(退出代码:0xc0000005,STATUS_ACCESS_VIOLATION)

类型批注需要静态生存期

避免在Collect()上进行涡鱼类型的涂抹,以产生<;Vec<;_>;,_>;

为什么RefCell没有与常规引用相同的作用域?

我应该如何表达具有生命周期参数的类型的总排序,同时允许与不同生命周期进行比较?

为什么我必须使用 PhantomData?在这种情况下它在做什么?

在 Rust 中忽略 None 值的正确样式

`tokio::pin` 如何改变变量的类型?

std::vector::shrink_to_fit 如何在 Rust 中工作?

为什么要这样编译?

没有得到无法返回引用局部变量`queues`的值返回引用当前函数拥有的数据的值的重复逻辑

如何递归传递闭包作为参数?

强制特征仅在 Rust 中的给定类型大小上实现

n 个范围的笛卡尔积

Rust 异步和 AsRef 未被发送

使用泛型作为关联类型,没有幻像数据

如何构建包含本地依赖项的 docker 镜像?