File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -181,6 +181,19 @@ where
181181 }
182182}
183183
184+ #[ cfg( feature = "alloc" ) ]
185+ fn decode_value_vec_inner < ' a , T : Decode < ' a > , R : Reader < ' a > > (
186+ reader : & mut R ,
187+ ) -> Result < Vec < T > , T :: Error > {
188+ let mut sequence_of = Vec :: < T > :: new ( ) ;
189+
190+ while !reader. is_finished ( ) {
191+ sequence_of. push ( T :: decode ( reader) ?) ;
192+ }
193+
194+ Ok ( sequence_of)
195+ }
196+
184197#[ cfg( feature = "alloc" ) ]
185198impl < ' a , T > DecodeValue < ' a > for Vec < T >
186199where
@@ -189,15 +202,7 @@ where
189202 type Error = T :: Error ;
190203
191204 fn decode_value < R : Reader < ' a > > ( reader : & mut R , header : Header ) -> Result < Self , Self :: Error > {
192- reader. read_nested ( header. length , |reader| {
193- let mut sequence_of = Self :: new ( ) ;
194-
195- while !reader. is_finished ( ) {
196- sequence_of. push ( T :: decode ( reader) ?) ;
197- }
198-
199- Ok ( sequence_of)
200- } )
205+ reader. read_nested ( header. length , decode_value_vec_inner)
201206 }
202207}
203208
Original file line number Diff line number Diff line change @@ -104,22 +104,25 @@ impl DeriveSequence {
104104 let error = self . error . to_token_stream ( ) ;
105105
106106 quote ! {
107+ impl #impl_generics #ident #ty_generics #where_clause {
108+ fn decode_value_inner<R : :: der:: Reader <#lifetime>>( reader: & mut R ) -> :: core:: result:: Result <Self , #error> {
109+ use :: der:: { Decode as _, DecodeValue as _, Reader as _} ;
110+ #( #decode_body) *
111+
112+ Ok ( Self {
113+ #( #decode_result) , *
114+ } )
115+ }
116+ }
117+
107118 impl #impl_generics :: der:: DecodeValue <#lifetime> for #ident #ty_generics #where_clause {
108119 type Error = #error;
109120
110121 fn decode_value<R : :: der:: Reader <#lifetime>>(
111122 reader: & mut R ,
112123 header: :: der:: Header ,
113124 ) -> :: core:: result:: Result <Self , #error> {
114- use :: der:: { Decode as _, DecodeValue as _, Reader as _} ;
115-
116- reader. read_nested( header. length, |reader| {
117- #( #decode_body) *
118-
119- Ok ( Self {
120- #( #decode_result) , *
121- } )
122- } )
125+ reader. read_nested( header. length, Self :: decode_value_inner)
123126 }
124127 }
125128 }
You can’t perform that action at this time.
0 commit comments