@@ -15,29 +15,22 @@ pub(crate) fn tokens_from_vdf(vdf: Vdf<'_>) -> Vec<Token<'_>> {
1515 let Vdf { key, value } = vdf;
1616
1717 let mut tokens = vec ! [ Token :: Key ( key) ] ;
18- tokens . extend ( tokens_from_value ( value) ) ;
18+ push_tokens_from_value ( & mut tokens , value) ;
1919 tokens
2020}
2121
22- // TODO: pass through a `&mut Vec<_>` instead of allocating new ones
23- fn tokens_from_value ( value : Value < ' _ > ) -> Vec < Token < ' _ > > {
24- let mut tokens = Vec :: new ( ) ;
25-
22+ fn push_tokens_from_value < ' text > ( tokens : & mut Vec < Token < ' text > > , value : Value < ' text > ) {
2623 match value {
2724 Value :: Str ( s) => tokens. push ( Token :: Str ( s) ) ,
2825 Value :: Obj ( obj) => {
2926 tokens. push ( Token :: ObjBegin ) ;
30- tokens . extend ( tokens_from_obj ( obj) ) ;
27+ push_tokens_from_obj ( tokens , obj) ;
3128 tokens. push ( Token :: ObjEnd ) ;
3229 }
3330 }
34-
35- tokens
3631}
3732
38- fn tokens_from_obj ( obj : Obj < ' _ > ) -> Vec < Token < ' _ > > {
39- let mut tokens = Vec :: new ( ) ;
40-
33+ fn push_tokens_from_obj < ' text > ( tokens : & mut Vec < Token < ' text > > , obj : Obj < ' text > ) {
4134 for ( key, values) in obj. into_inner ( ) . into_iter ( ) {
4235 tokens. push ( Token :: Key ( key) ) ;
4336
@@ -48,15 +41,13 @@ fn tokens_from_obj(obj: Obj<'_>) -> Vec<Token<'_>> {
4841 }
4942
5043 for value in values {
51- tokens . extend ( tokens_from_value ( value) ) ;
44+ push_tokens_from_value ( tokens , value) ;
5245 }
5346
5447 if num_values != 1 {
5548 tokens. push ( Token :: SeqEnd ) ;
5649 }
5750 }
58-
59- tokens
6051}
6152
6253/// A single VDF token
0 commit comments