Dave Herman's recent talk rust 说他们从C++borrow 了这个属性.我找不到关于这个话题的任何东西.有人能解释一下单态化是什么意思吗?

推荐答案

单形化意味着生成泛型函数的专用版本.如果我写了一个函数来提取任意一对中的第一个元素:

fn first<A, B>(pair: (A, B)) -> A {
    let (a, b) = pair;
    return a;
}

然后我调用这个函数两次:

first((1, 2));
first(("a", "b"));

编译器将生成两个版本的first(),一个专用于整数对,另一个专用于字符串对.

这个名字源于编程语言术语"多态性"——意思是一个可以处理多种类型数据的函数.单态化是从多态代码到单态代码的转换.

Rust相关问答推荐

如何优化小型固定大小数组中的搜索?

将已知大小的切片合并成一个数组,

使用pyo3::Types::PyIterator的无限内存使用量

在执行其他工作的同时,从共享裁判后面的VEC中删除重复项

如何指定不同的类型来常量Rust中的泛型参数?

在本例中,为什么我不能一次多次borrow 可变变量?

在文件链实施中绕过borrow 判断器

为什么 vec![Vec::with_capacity(n)] 为子向量创建 0 容量?

如何将带有嵌套borrow /NLL 的 Rust 代码提取到函数中

Rust,如何从 Rc> 复制内部值并返回它?

max(ctz(x), ctz(y)) 有更快的算法吗?

borrow 匹配手臂内部的可变

在 Rust 中,为什么整数溢出有时会导致编译错误或运行时错误?

判断对象是 PyDatetime 还是 Pydate 的实例?

`use std::error::Error` 声明中断编译

为什么 Rust 编译器在移动不可变值时执行复制?

实现不消费的迭代器

在 Rust 中获得准确时间的正确方法?

如何从 many0 传播 Nom 失败上下文?

HashMap entry() 方法使borrow 的时间比预期的长