我认为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(),但该提议已被放弃。请参见此处。 尽管如此,由于类型推断,相较于其他类似语言中不常需要指定类型参数。
::
避免歧义的示例。 - user4815162342