Skip to content

Commit 56da696

Browse files
authored
make serde decode api consistent (#748)
1 parent 1332236 commit 56da696

File tree

1 file changed

+7
-17
lines changed

1 file changed

+7
-17
lines changed

src/features/serde/de_borrowed.rs

+7-17
Original file line numberDiff line numberDiff line change
@@ -61,31 +61,21 @@ where
6161
Ok((result, bytes_read))
6262
}
6363

64-
#[deprecated(note = "Use borrow_decode_from_slice instead")]
65-
/// Decode a borrowed type from the given slice. Some parts of the decoded type are expected to be referring to the given slice
66-
pub fn decode_borrowed_from_slice<'de, T, C>(slice: &'de [u8], config: C) -> Result<T, DecodeError>
67-
where
68-
T: Deserialize<'de>,
69-
C: Config,
70-
{
71-
let mut serde_decoder =
72-
BorrowedSerdeDecoder::<DecoderImpl<SliceReader<'de>, C>>::from_slice(slice, config);
73-
T::deserialize(serde_decoder.as_deserializer())
74-
}
75-
7664
/// Decode a borrowed type from the given slice using a seed. Some parts of the decoded type are expected to be referring to the given slice
77-
pub fn decode_seed_from_slice<'de, T, C>(
78-
seed: T,
65+
pub fn seed_decode_from_slice<'de, D, C>(
66+
seed: D,
7967
slice: &'de [u8],
8068
config: C,
81-
) -> Result<T::Value, DecodeError>
69+
) -> Result<(D::Value, usize), DecodeError>
8270
where
83-
T: DeserializeSeed<'de>,
71+
D: DeserializeSeed<'de>,
8472
C: Config,
8573
{
8674
let mut serde_decoder =
8775
BorrowedSerdeDecoder::<DecoderImpl<SliceReader<'de>, C>>::from_slice(slice, config);
88-
seed.deserialize(serde_decoder.as_deserializer())
76+
let result = seed.deserialize(serde_decoder.as_deserializer())?;
77+
let bytes_read = slice.len() - serde_decoder.de.borrow_reader().slice.len();
78+
Ok((result, bytes_read))
8979
}
9080

9181
pub(super) struct SerdeDecoder<'a, 'de, DE: BorrowDecoder<'de>> {

0 commit comments

Comments
 (0)