在Rust中声明vector或hash map类型的变量时,我们会:
let v: Vec<int>
let m: HashMap<int, int>
要实例化,我们需要调用new()
.然而,我们这样做:
Vec::<int>::new()
^^
HashMap::<int, int>::new()
^^
注意突然出现的::
.来自C++,这些都是奇怪的.为什么会发生这种情况?前导::
是否使IDENTIFIER :: < IDENTFIER …
比IDENTIFIER < IDENTIFIER
更容易解析,IDENTIFIER < IDENTIFIER
可能被理解为小于运算?(因此,这只是为了让语言更容易解析?如果是的话,为什么不在类型规范中也这样做,以便两种语言相互镜像呢?)
(正如Shepmaster所指出的,通常Vec::new()
就足够了;类型通常可以推断出来.)