首页 > 解决方案 > 在 Rust 中展平自定义结构的 vec 的 vec

问题描述

我有一个自定义结构,经过一些处理后,我有一个向量包含这个结构的向量。但我只停留在获取结构的平面向量。

#[derive(Debug, Clone, Hash, Eq, PartialEq)]
pub struct Verse {
    pub book_id: i16,
    pub chapter: i16,
    pub verse: i16,
    pub text: String,
}

fn main() {
    let v1 = Verse {
        book_id: 1,
        chapter: 1,
        verse: 1,
        text: String::from("a"),
    };
    let v2 = Verse {
        book_id: 2,
        chapter: 1,
        verse: 1,
        text: String::from("b"),
    };
    let vv = [[v1], [v2]];
    let flatten = vv.iter().flatten().collect::<Vec<Verse>>();
}

和错误:

error[E0277]: a collection of type `std::vec::Vec<Verse>` cannot be built from an iterator over elements of type `&Verse`
  --> src/main.rs:23:39
   |
23 |     let flatten = vv.iter().flatten().collect::<Vec<Verse>>();
   |                                       ^^^^^^^ a collection of type `std::vec::Vec<Verse>` cannot be built from `std::iter::Iterator<Item=&Verse>`
   |
   = help: the trait `std::iter::FromIterator<&Verse>` is not implemented for `std::vec::Vec<Verse>``std::vec::Vec<Verse>`

但我找不到任何如何提出解决方案的例子。

标签: rust

解决方案


推荐阅读