Rust中Vec::new()如何确定元素类型?能否显式指定类型?
关于Vec::new()如何确定元素类型
Rust 具备完备的类型推断能力,你第一种写法里已经给vec变量显式标注了类型为Vec<u32>,编译器会自动将Vec::new()的返回值类型匹配为你标注的类型,不需要在调用new()的时候额外传类型参数。
如果后续你往空向量里插入了确定类型的元素,编译器也能自动推导元素类型,甚至不需要你给变量标注类型,示例如下:
let mut vec = Vec::new(); vec.push(1u32); // 插入u32类型元素,编译器自动推断vec是Vec<u32>类型
关于显式指定元素类型的正确写法
你写的let mut vec = Vec<u32>::new();编译失败是Rust的语法解析规则导致的:编译器会把Vec后面的<解析成小于运算符,而不是泛型参数的左尖括号。
如果要显式指定泛型参数,需要用Rust特有的turbofish语法,在泛型参数前加::,正确写法如下:
let mut vec = Vec::<u32>::new();
上述写法可以正常编译运行。
内容的提问来源于stack exchange,提问作者ardabro
相关产品推荐
相关产品推荐

