Rust 泛型与内存分配详解
1. 泛型函数与类型
在 Rust 中,当多个调用指定了完全相同的类型参数时,通常会进行优化,只生成泛型函数声明的一个具体版本。编译器在单个程序中为单个函数生成多个具体版本的机器码,这会带来一些影响:
- 编译速度 :与编译非泛型代码相比,这种多阶段编译会稍慢一些。
- 运行时性能 :生成的代码针对每个特定调用进行了高度优化,因为它直接使用调用者使用的类型,无需进行转换或决策,所以每个调用的运行时性能得到了优化。
- 代码膨胀 :如果对泛型函数进行许多不同数据类型的调用,会生成大量的机器码,这可能会因代码局部性不佳而影响性能。为了减轻这种被称为代码膨胀的现象,最好减少用于调用泛型函数的不同类型的数量。
这些关于泛型函数的规则同样适用于泛型结构体和元组结构体。
1.1 泛型数组和向量
数组和向量是泛型类型。数组是 Rust 语言的一部分,而向量是 Rust 标准库中定义的结构体。
1.2 泛型枚举
在 Rust 中,枚举也可以是泛型的。例如:
enum Result1<SuccessCode, FailureCode> {
Success(SuccessCode),
Failure(FailureCode, char),
Uncertainty,
}
let mut _res = Result1::Success::<u32
超级会员免费看
订阅专栏 解锁全文
4万+

被折叠的 条评论
为什么被折叠?



