Skip to content

Commit 76a97a6

Browse files
authored
der_derive: rewrite EncodeValue::value_len as simple addition (#1810)
1 parent 1ae7ce8 commit 76a97a6

File tree

1 file changed

+5
-8
lines changed

1 file changed

+5
-8
lines changed

der_derive/src/sequence.rs

Lines changed: 5 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -135,12 +135,12 @@ impl DeriveSequence {
135135
let (_, ty_generics, where_clause) = self.generics.split_for_impl();
136136
let (impl_generics, _, _) = self.generics.split_for_impl();
137137

138-
let mut encoded_lengths = Vec::new();
138+
let mut sum_lengths = Vec::new();
139139
let mut encode_fields = Vec::new();
140140

141141
for field in &self.fields {
142142
let field = field.to_encode_tokens();
143-
encoded_lengths.push(quote!(#field.encoded_len()?));
143+
sum_lengths.push(quote!(let len = (len + #field.encoded_len()?)?;));
144144
encode_fields.push(quote!(#field.encode(writer)?;));
145145
}
146146

@@ -149,12 +149,9 @@ impl DeriveSequence {
149149
impl #impl_generics ::der::EncodeValue for #ident #ty_generics #where_clause {
150150
fn value_len(&self) -> ::der::Result<::der::Length> {
151151
use ::der::Encode as _;
152-
153-
[
154-
#(#encoded_lengths),*
155-
]
156-
.into_iter()
157-
.try_fold(::der::Length::ZERO, |acc, len| acc + len)
152+
let len = ::der::Length::ZERO;
153+
#(#sum_lengths)*
154+
Ok(len)
158155
}
159156

160157
fn encode_value(&self, writer: &mut impl ::der::Writer) -> ::der::Result<()> {

0 commit comments

Comments
 (0)