我正在尝试转换 Vec<&str>
至 Vec<u16>
但我想不出一个实用的方法来做到这一点。
let foo: &str = "1,2,3"; // Parsing a string here
let bar: Vec<&str> = foo.split(",").collect(); // Bar is a nice vector of &str's
我需要得到 bar
进入Vec<u16>
.
最佳答案
有一个迭代器适配器 map
!你会像这样使用它:
let bar: Vec<u16> = foo.split(",").map(|x| x.parse::<u16>().unwrap()).collect();
parse
是一个依赖特征 FromStr
的库函数, 它可以返回一个错误,所以我们需要 unwrap()
错误类型。 (这对于一个简短的示例来说是个好主意,但在实际代码中,您将希望正确处理错误 - 如果您的值不是 u16
,您的程序就会崩溃)。
map
采用一个闭包,该闭包按值获取它的参数,然后返回通过惰性 应用该函数获得的迭代器。你是collect
在此处输入所有值,但如果您只输入 take(5)
其中,您只需解析其中的 5 个字符串。
关于vector - 如何以函数式方式将字符串向量转换为整数向量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34090639/