From 3a9d0fac73aadabce208c71207f9b45f3c1d3ae9 Mon Sep 17 00:00:00 2001 From: Zoey Riordan Date: Mon, 3 Mar 2025 12:18:17 +0100 Subject: [PATCH] make serde decode api consistent --- src/features/serde/de_borrowed.rs | 24 +++++++----------------- 1 file changed, 7 insertions(+), 17 deletions(-) diff --git a/src/features/serde/de_borrowed.rs b/src/features/serde/de_borrowed.rs index 3492a90e..d485b7b2 100644 --- a/src/features/serde/de_borrowed.rs +++ b/src/features/serde/de_borrowed.rs @@ -61,31 +61,21 @@ where Ok((result, bytes_read)) } -#[deprecated(note = "Use borrow_decode_from_slice instead")] -/// Decode a borrowed type from the given slice. Some parts of the decoded type are expected to be referring to the given slice -pub fn decode_borrowed_from_slice<'de, T, C>(slice: &'de [u8], config: C) -> Result -where - T: Deserialize<'de>, - C: Config, -{ - let mut serde_decoder = - BorrowedSerdeDecoder::, C>>::from_slice(slice, config); - T::deserialize(serde_decoder.as_deserializer()) -} - /// 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 -pub fn decode_seed_from_slice<'de, T, C>( - seed: T, +pub fn seed_decode_from_slice<'de, D, C>( + seed: D, slice: &'de [u8], config: C, -) -> Result +) -> Result<(D::Value, usize), DecodeError> where - T: DeserializeSeed<'de>, + D: DeserializeSeed<'de>, C: Config, { let mut serde_decoder = BorrowedSerdeDecoder::, C>>::from_slice(slice, config); - seed.deserialize(serde_decoder.as_deserializer()) + let result = seed.deserialize(serde_decoder.as_deserializer())?; + let bytes_read = slice.len() - serde_decoder.de.borrow_reader().slice.len(); + Ok((result, bytes_read)) } pub(super) struct SerdeDecoder<'a, 'de, DE: BorrowDecoder<'de>> {