vector - 如何以函数式方式将字符串向量转换为整数向量?

标签 vector functional-programming rust

我正在尝试转换 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/

相关文章:

scala - kind-projector 返回奇怪的结果

javascript - 映射并返回已解决的 promise 数组的函数的名称?

recursion - 如何在功能上编写针对具有依赖条件的动态更改集合的迭代算法?

vector - 如何将两个 Rust 向量交织成一个新向量?

分配最少的随机字符串生成器

C++:为什么创建的 vector 没有传递到下一组 for 循环?

c++ - 交换 vector 的值和索引

javascript - SVG/矢量图室内导航路由

r - 获取与一系列向量一致的矩阵行,而不使用 apply

Go vs Rust 垃圾收集器性能和类型