generics - 为什么 Rust 不允许 "let v = Vec<i32>::new();"?

标签 generics rust

<分区>

我觉得Vec::<i32>::new()Vec<i32>不一致

let v = Vec<i32>::new(); // cannot compile

let v1 : Vec<i32> = Vec::new(); // auto inference type parameters
let v2 = Vec::<i32>::new(); // quite weird

最佳答案

该符号被亲切地称为涡轮鱼。

Vec<i32>::new()在解析时呈现一个权衡。是 <引入通用参数,还是小于运算符?分辨差异需要潜在的无限前瞻。涡轮鱼避免了这种情况。

这并不是普遍认为重要的。已经提议允许Vec<i32>::new() , 但该提议被放弃了。参见 here .

也就是说,由于您在第二行中提到的类型推断,与可比语言相比,指定类型参数的需求较少。

关于generics - 为什么 Rust 不允许 "let v = Vec<i32>::new();"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69848709/

相关文章:

java - 检查泛型类的类型

java - Guice 多重绑定(bind) : Manually obtain a Set<T> from Injector

java - 为什么 java 集合中的泛型如此奇怪?

string - 无法将 &String 强制转换为 &str

memory - 无法移出带有作为参数传递的可选成员的借用内容

rust - 获取int的长度

ios - 无法使用类型为 'handler' 的参数列表调用 '([Post])'

java - 想要为类(dao)中的字段创建 View 绑定(bind)器。该字段将 json 作为文本

intellij-idea - 如何为IntelliJ IDEA的Rust项目提供标准库源码?

rust - 在 Rust 中的多个向量中有一个结构实例