我在使用Iterator
的{{1}}函数时遇到困难,并且不确定如何理解和解决此编译器错误。
我通过序列化两个结构来将文件路径列表映射成两个字符串:
flat_map
let body: Vec<String> = read_dir(query.to_string())
.iter()
.enumerate()
.flat_map(|(i, path)| {
let mut body: Vec<String> = Vec::with_capacity(2);
let entry = Entry { i };
body.push(serde_json::to_string(&entry).unwrap());
let record = parse_into_record(path.to_string()).unwrap();
body.push(serde_json::to_string(&record).unwrap());
body.iter()
})
.collect();
答案 0 :(得分:4)
into_iter
为您提供了一个遍历引用的迭代器。您需要一个拥有其值的消耗迭代器。为此,请改用fn main() {
let result = (0..10).flat_map(|_| {
let vec: Vec<String> = vec!["a".into(), "b".into(), "c".into()];
vec.into_iter()
}).collect::<Vec<_>>();
}
。这是一个简单的示例:
iter
有关into_iter
和AllowedSkus
之间差异的详细说明,请参见以下答案What is the difference between iter and into_iter?