相关疑难解决方法(0)

如何使用递归迭代器展平递归结构?

我正在尝试展平递归结构,但我在递归迭代器方面遇到了麻烦。

该结构如下所示:

#[derive(Debug, Clone)]
pub struct C {
    name: String,
    vb: Option<Vec<B>>,
}

#[derive(Debug, Clone)]
pub struct B {
    c: Option<C>,
}

#[derive(Debug, Clone)]
pub struct A {
    vb: Option<Vec<B>>,
    flat_c: Option<Vec<C>>,
}
Run Code Online (Sandbox Code Playgroud)

我的计划是遍历vb向量并将其展平为flat_c. 我希望它看起来像这样,或者至少是Vec<String>

Some([
    C {
        name: "foo",
        vb: None,
    },
    C {
        name: "bar",
        vb: None,
    },
    C {
        name: "fizz",
        vb: None,
    },
    C {
        name: "buzz",
        vb: None,
    },
])
Run Code Online (Sandbox Code Playgroud)

这里我设法做的,稍微扁平化结构,但仅限于最后一个元素,因为未实现递归。

impl A {
    fn flat_c(self) -> Self { …
Run Code Online (Sandbox Code Playgroud)

recursion flatten rust

5
推荐指数
1
解决办法
1852
查看次数

标签 统计

flatten ×1

recursion ×1

rust ×1