diff --git a/src/bytes_ser_de.rs b/src/bytes_ser_de.rs index 796a3da..bdb400f 100644 --- a/src/bytes_ser_de.rs +++ b/src/bytes_ser_de.rs @@ -493,7 +493,11 @@ where fn read(de: &mut Deserializer) -> Result { let length = de.read::()?; - (0..length).map(|_| de.read::()).collect() + let mut res = Vec::with_capacity(length); + for _ in 0..length { + res.push(de.read::()?); + } + Ok(res) } } @@ -535,7 +539,11 @@ where fn read(de: &mut Deserializer) -> Result { let length = de.read::()?; - (0..length).map(|_| de.read::()).collect() + let mut res = HashSet::with_capacity(length); + for _ in 0..length { + res.insert(de.read::()?); + } + Ok(res) } } @@ -565,16 +573,16 @@ impl Serializable for HashMap Result { let length = de.read::()?; - (0..length) - .map(|_| { - Ok(( - de.read::() - .map_err(|e| CryptoCoreError::GenericDeserializationError(e.to_string()))?, - de.read::() - .map_err(|e| CryptoCoreError::GenericDeserializationError(e.to_string()))?, - )) - }) - .collect() + let mut res = HashMap::with_capacity(length); + for _ in 0..length { + res.insert( + de.read::() + .map_err(|e| CryptoCoreError::GenericDeserializationError(e.to_string()))?, + de.read::() + .map_err(|e| CryptoCoreError::GenericDeserializationError(e.to_string()))?, + ); + } + Ok(res) } }