reth_db/implementation/mdbx/
utils.rs
1use crate::{
4 table::{Decode, Decompress, Table, TableRow},
5 DatabaseError,
6};
7use std::borrow::Cow;
8
9pub(crate) fn decoder<'a, T>(
11 (k, v): (Cow<'a, [u8]>, Cow<'a, [u8]>),
12) -> Result<TableRow<T>, DatabaseError>
13where
14 T: Table,
15 T::Key: Decode,
16 T::Value: Decompress,
17{
18 Ok((
19 match k {
20 Cow::Borrowed(k) => Decode::decode(k)?,
21 Cow::Owned(k) => Decode::decode_owned(k)?,
22 },
23 match v {
24 Cow::Borrowed(v) => Decompress::decompress(v)?,
25 Cow::Owned(v) => Decompress::decompress_owned(v)?,
26 },
27 ))
28}
29
30pub(crate) fn decode_value<'a, T>(
32 kv: (Cow<'a, [u8]>, Cow<'a, [u8]>),
33) -> Result<T::Value, DatabaseError>
34where
35 T: Table,
36{
37 Ok(match kv.1 {
38 Cow::Borrowed(v) => Decompress::decompress(v)?,
39 Cow::Owned(v) => Decompress::decompress_owned(v)?,
40 })
41}
42
43pub(crate) fn decode_one<T>(value: Cow<'_, [u8]>) -> Result<T::Value, DatabaseError>
45where
46 T: Table,
47{
48 Ok(match value {
49 Cow::Borrowed(v) => Decompress::decompress(v)?,
50 Cow::Owned(v) => Decompress::decompress_owned(v)?,
51 })
52}