@@ -6,7 +6,7 @@ use serde::{
6
6
Deserialize , Deserializer ,
7
7
} ;
8
8
9
- use crate :: { NodeId , NodeRef , Tree } ;
9
+ use crate :: { NodeId , NodeMut , NodeRef , Tree } ;
10
10
11
11
#[ derive( Debug ) ]
12
12
struct SerNode < ' a , T > {
@@ -50,25 +50,24 @@ struct DeserNode<T> {
50
50
}
51
51
52
52
impl < T > DeserNode < T > {
53
- fn into_tree_node ( self , tree : & mut Tree < T > , parent : NodeId ) -> NodeId {
54
- let mut parent = tree. get_mut ( parent) . unwrap ( ) ;
55
- let node = parent. append ( self . value ) . id ( ) ;
53
+ fn into_tree_node ( self , parent : & mut NodeMut < T > ) -> NodeId {
54
+ let mut node = parent. append ( self . value ) ;
56
55
57
56
for child in self . children {
58
- child. into_tree_node ( tree , node) ;
57
+ child. into_tree_node ( & mut node) ;
59
58
}
60
59
61
- node
60
+ node. id
62
61
}
63
62
}
64
63
65
64
impl < T > From < DeserNode < T > > for Tree < T > {
66
65
fn from ( root : DeserNode < T > ) -> Self {
67
66
let mut tree: Tree < T > = Tree :: new ( root. value ) ;
68
- let root_id = tree. root ( ) . id ;
67
+ let mut tree_root = tree. root_mut ( ) ;
69
68
70
69
for child in root. children {
71
- child. into_tree_node ( & mut tree , root_id ) ;
70
+ child. into_tree_node ( & mut tree_root ) ;
72
71
}
73
72
74
73
tree
0 commit comments