拆分一个字符串并返回Vec <string>

时间:2016-05-31 13:31:35

标签: rust

我想拆分一个字符串并从我的函数返回Vec<String>。它必须是Vec<String>而不是Vec<&str>,因为我无法返回Vec<&str>,是吗?但是,如果可以的话,我该怎么做?

let var1: Vec<&str> = my_string.split("something").collect();
let res = var1.iter().map(|x| x.to_string());
// I want to return Vec<String>

我尝试了不同的版本,但得到了error: mismatched types和其他类似的错误。有更简单的方法吗?

2 个答案:

答案 0 :(得分:13)

您不需要创建中间Vec<&str>,只需映射to_string()并在之后使用collect()

let res: Vec<String> = my_string.split("something").map(|s| s.to_string()).collect();

答案 1 :(得分:1)

您可以使用&str将每个String映射到Vec::from_iter并收集结果:

use std::iter::FromIterator;

let res = Vec::from_iter(my_string.split("something").map(String::from));

这个问题与this one相反。

请注意,collect是以from_iter

的形式实现的