use super::{ Read, Deserializer }; pub struct BaseDeserializer { src: R, peeked_byte: Option } impl<'de, R> BaseDeserializer where R: Read<'de> { pub fn new(src: R) -> Self { Self { src, peeked_byte: None } } fn peek_byte(&mut self) -> Result { match self.peeked_byte { Some(byte) => Ok(byte), None => { let byte = self.src.read()?; self.peeked_byte = Some(byte); Ok(byte) } } } fn read_byte(&mut self) -> Result { match self.peeked_byte.take() { Some(byte) => Ok(byte), None => self.src.read() } } } impl<'de, R> Deserializer<'de> for &mut BaseDeserializer where R: Read<'de> { type Error = R::Error; // fn deserialize_str(self) -> Result<&'de str, Self::Error> { // } }