如何用rust写一个把对象数组转成树结构的通用方法

最近用 rust 写 web 框架,无论菜单还是组织架构都需要把对象数组转成树结构,希望抽取出一个通用方法,以下代码可以跑起来,但效率极低,因为无脑 clone,也尝试用智能指针去优化本段代码,但鉴于所有权和生命周期的报错,未能编译通过。希望群友可以给出一个思路去优化本段代码或者提供一个执行效率比较高的通用方法。

serde = { version = "1.0", features = ["derive"] }
代码已被折叠,点此展开