在Rust中的类型提示中,可以在注释中使用部分类型,如下所示:
let myvec: Vec<_> = vec![1, 2, 3];部分类型注释中下划线的正确术语是什么?我对锈蚀术语以及更多的学术性理论术语都感兴趣。
发布于 2017-07-11 13:45:43
经过深入研究,Vec<_>似乎一直被称为分部类型(因此在let x: Vec<_>中我们有一个部分类型注释,而Fn(String) -> _将是一个部分类型签名),但是在这个上下文中的_被不同地称为类型通配符或类型占位符,类型语法中的_可以被读取为“推断这种类型”的标记(在下面提到的PR中,编译器中的TyInfer )。
一些有趣的阅读:
_作为未指定的生命周期或类型的符号”。公共关系中有趣的细节:
let x: _ = 5;
let x = 5;上面的两行是等价的,它们都被解析为具有TyInfer类型的变量TyInfer。
发布于 2017-07-11 12:21:22
发布于 2017-07-11 13:24:54
在编译器中,它似乎被称为Infer (在syntax::ast、rustc::hir和rustc::ty中)
我认为这个命名有点合理,因为在进行类似于印地语的类型推断之前,这些_被替换为新的(类型)推理变量。
https://stackoverflow.com/questions/45033804
复制相似问题