在 Rust 中声明类型为 vector 或 hash map 的变量时,我们需要这样做:
请注意
(正如Shepmaster所指出的,通常
let v: Vec<int>
let m: HashMap<int, int>
为了实例化,我们需要调用new()
。然而,我们这样做:
Vec::<int>::new()
^^
HashMap::<int, int>::new()
^^
请注意
::
的突然出现。对于来自C++的人来说,这些都很奇怪。为什么会出现这种情况?在IDENTIFIER :: < IDENTFIER …
中有一个前导的::
是否使得解析更容易,而IDENTIFIER < IDENTIFIER
则可能被解释为小于操作?(因此,这只是为了使语言更易于解析?但如果是这样,为什么不在类型规范中也这样做,以便两者相互呼应?)(正如Shepmaster所指出的,通常
Vec::new()
已经足够了;类型通常可以推断出来。)
Vec::new()
即可。我只看到过像parse
或collect
这样返回trait并且必须选择具体类型的函数才需要指定类型。 - Shepmaster