diff --git a/crates/storage/db/src/implementation/mdbx/cursor.rs b/crates/storage/db/src/implementation/mdbx/cursor.rs index f432e76642..61214a857d 100644 --- a/crates/storage/db/src/implementation/mdbx/cursor.rs +++ b/crates/storage/db/src/implementation/mdbx/cursor.rs @@ -215,27 +215,26 @@ impl DbDupCursorRO for Cursor { ) -> Result, DatabaseError> { let start = match (key, subkey) { (Some(key), Some(subkey)) => { - // encode key and decode it after. - let key: Vec = key.encode().into(); + let encoded_key = key.encode(); self.inner - .get_both_range(key.as_ref(), subkey.encode().as_ref()) + .get_both_range(encoded_key.as_ref(), subkey.encode().as_ref()) .map_err(|e| DatabaseError::Read(e.into()))? - .map(|val| decoder::((Cow::Owned(key), val))) + .map(|val| decoder::((Cow::Borrowed(encoded_key.as_ref()), val))) } (Some(key), None) => { - let key: Vec = key.encode().into(); + let encoded_key = key.encode(); self.inner - .set(key.as_ref()) + .set(encoded_key.as_ref()) .map_err(|e| DatabaseError::Read(e.into()))? - .map(|val| decoder::((Cow::Owned(key), val))) + .map(|val| decoder::((Cow::Borrowed(encoded_key.as_ref()), val))) } (None, Some(subkey)) => { if let Some((key, _)) = self.first()? { - let key: Vec = key.encode().into(); + let encoded_key = key.encode(); self.inner - .get_both_range(key.as_ref(), subkey.encode().as_ref()) + .get_both_range(encoded_key.as_ref(), subkey.encode().as_ref()) .map_err(|e| DatabaseError::Read(e.into()))? - .map(|val| decoder::((Cow::Owned(key), val))) + .map(|val| decoder::((Cow::Borrowed(encoded_key.as_ref()), val))) } else { Some(Err(DatabaseError::Read(MDBXError::NotFound.into()))) }