我正在尝试转换Vec<&str>
to 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
into a Vec<u16>
.
有一个迭代器适配器map!你会像这样使用它:
let bar: Vec<u16> = foo.split(",").map(|x| x.parse::<u16>().unwrap()).collect();
parse是一个依赖于特征的库函数FromStr,并且它可能会返回错误,所以我们需要unwrap()
错误类型。 (对于一个简短的示例来说,这是一个好主意,但在实际代码中,您将需要正确处理错误 - 如果您有一个不是u16
在那里,你的程序就会崩溃)。
map
接受一个闭包,该闭包按值获取其参数,然后返回通过以下方式获得的迭代器lazily应用该功能。你是collect荷兰国际集团这里的所有值,但如果你只take(5)其中,您只能解析其中 5 个字符串。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)