如何从 Rust 集合中 return Vec<String>?
How to return a Vec<String> from a collection in rust?
这里我把vec拆分成大小为4的子向量然后返回一个集合,我希望集合返回的类型是Vec<String>
。我该怎么做?
let mut split_operations : Vec<String> = vec[2..].chunks(4).collect::<String>();
这会产生以下错误:
std::string::String
类型的值不能从 &[std::string::String]
类型元素的迭代器中构建
无法从 std::iter::Iterator<Item=&[std::string::String]>
构建类型 std::string::String
的值
帮助:特性 std::iter::FromIterator<&[std::string::String]>
没有为 std::string::String
rustc(E0277)
实现
collect()
的类型参数是应该收集整个东西的类型。所以collect
的参数和实际类型是多余的,只需要一个。
然而 Rust 不想猜测 chunks
应该如何改变或改变什么:这里你有一个 slices 的迭代器(Iterator<Item=&[String]
).您可以将 Iterator<Item=String>
收集到 Vec<String>
或单个 String
(它将连接所有项目),但中间切片意味着 Rust 不知道应该发生什么。
如果你想让每个块变成一个字符串,你需要在map
中明确地做到这一点,例如
let mut split_operations : Vec<String> = vec[2..].chunks(4)
.map(|c| c.concat())
.collect();
如果你想玩(和/或激怒你的同事),你也可以将地图回调写成<[_]>::concat
。
这里我把vec拆分成大小为4的子向量然后返回一个集合,我希望集合返回的类型是Vec<String>
。我该怎么做?
let mut split_operations : Vec<String> = vec[2..].chunks(4).collect::<String>();
这会产生以下错误:
std::string::String
类型的值不能从 &[std::string::String]
无法从 std::iter::Iterator<Item=&[std::string::String]>
std::string::String
的值
帮助:特性 std::iter::FromIterator<&[std::string::String]>
没有为 std::string::String
rustc(E0277)
collect()
的类型参数是应该收集整个东西的类型。所以collect
的参数和实际类型是多余的,只需要一个。
然而 Rust 不想猜测 chunks
应该如何改变或改变什么:这里你有一个 slices 的迭代器(Iterator<Item=&[String]
).您可以将 Iterator<Item=String>
收集到 Vec<String>
或单个 String
(它将连接所有项目),但中间切片意味着 Rust 不知道应该发生什么。
如果你想让每个块变成一个字符串,你需要在map
中明确地做到这一点,例如
let mut split_operations : Vec<String> = vec[2..].chunks(4)
.map(|c| c.concat())
.collect();
如果你想玩(和/或激怒你的同事),你也可以将地图回调写成<[_]>::concat
。