如何从 Rust 中的集合返回 Vec<String>?

Mal*_*_bh 1 rust rust-cargo

在这里,我将 vec 拆分为大小相同的 4 子向量,然后返回一个集合,我希望从集合返回的类型为Vec<String>. 我怎么能这样做?

let mut split_operations : Vec<String> = vec[2..].chunks(4).collect::<String>();

这会产生以下错误:

类型的值std::string::String不能从一个迭代过类型的元素来构建&[std::string::String]

类型的值std::string::String不能被构建std::iter::Iterator<Item=&[std::string::String]>

帮助: rustc(E0277)std::iter::FromIterator<&[std::string::String]>没有实现std::string::Stringtrait

Mas*_*inn 5

的类型参数collect()是整个事物应该收集到的。所以参数tocollect和实际类型是多余的,只需要一个。

然而,Rust 不想猜测应该如何改变或chunks改变什么:这里有一个切片迭代器( Iterator<Item=&[String])。您可以收集一个Iterator<Item=String>to aVec<String>或单个String(它将连接所有项目),但中间切片意味着 Rust 不知道应该发生什么。

如果您希望每个块都成为单个字符串,则需要在mapeg中明确地执行此操作

    let mut split_operations : Vec<String> = vec[2..].chunks(4)
        .map(|c| c.concat())
        .collect();
Run Code Online (Sandbox Code Playgroud)

如果你想玩(和/或激怒你的同事),你也可以把地图回调写成<[_]>::concat.