pub struct Source {
pub name: String,
pub child: Vec<Source>
}
pub struct Target {
pub id: String,
pub nested: Vec<Target>
}
字符串
我可以使用递归轻松地将Source
转换为Target
,但这并不安全,因为Source结构是用户输入的数据,它可能导致堆栈溢出。
有没有简单的方法可以将Source
转换为Target
,而无需递归和克隆?我尝试过DFS,但由于所有权问题而失败。
2条答案
按热度按时间wkftcu5l1#
对于所有的递归算法,你可以通过自己保留一个手动堆栈来迭代:
字符串
Playground
c86crjj02#
来自@Jmb的答案是正确的,但有时使用递归解决方案更方便。在这种情况下,如果数据太大,可以使用
stacker
来增长堆栈。