rust - 如何返回 Vec来自锈迹斑斑的收藏品?
问题描述
在这里,我将 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]>
help:std::iter::FromIterator<&[std::string::String]>
没有为std::string::String
rustc(E0277)实现 trait
解决方案
的类型参数collect()
是应该将整个事物收集到的内容。所以参数tocollect
和实际类型是多余的,只需要一个。
然而,Rust 不想猜测应该如何chunks
改变或改变什么:这里有一个切片迭代器( 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
.
推荐阅读
- spring-boot - 如何在模块的 Spring Boot 配置类中使用 @AutoConfigureOrder
- c# - 如何使用 MIP SDK 应用水印(Microsoft 信息保护)
- jenkins - Jenkins服务器启动问题
- angular - Firestore 组查询不起作用权限被拒绝
- javascript - Gatsby 模式弃用警告:推断的解析器
- python - 我怎样才能弄清楚为什么我的 Jupyter 内核会死掉?
- typescript - “引用一个值,但在此处用作类型”仅在导出接口时出错
- c# - 如何在不使用 Visual Studio 的情况下将测试方法与 Azure 测试计划测试用例相关联?
- angular - 如何在离子页面上触发 ngOnInit
- android - 我如何在多段线中显示路径与谷歌地图颤动的多个坐标