我正在尝试展平递归结构,但我在递归迭代器方面遇到了麻烦。
该结构如下所示:
#[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)