|
@@ -11,16 +11,16 @@ use serde::de::{
|
|
IntoDeserializer
|
|
IntoDeserializer
|
|
};
|
|
};
|
|
|
|
|
|
|
|
+// This lint is disabled because deserializing from a `&[u8]` is handled by `read_from`.
|
|
|
|
+#[allow(clippy::ptr_arg)]
|
|
pub fn from_vec<T: DeserializeOwned>(vec: &Vec<u8>) -> Result<T> {
|
|
pub fn from_vec<T: DeserializeOwned>(vec: &Vec<u8>) -> Result<T> {
|
|
let mut slice = vec.as_slice();
|
|
let mut slice = vec.as_slice();
|
|
- let result = read_from(&mut slice);
|
|
|
|
- result
|
|
|
|
|
|
+ read_from(&mut slice)
|
|
}
|
|
}
|
|
|
|
|
|
pub fn read_from<T: DeserializeOwned, R: Read>(read: &mut R) -> Result<T> {
|
|
pub fn read_from<T: DeserializeOwned, R: Read>(read: &mut R) -> Result<T> {
|
|
let mut de = Deserializer::new(read);
|
|
let mut de = Deserializer::new(read);
|
|
- let result = Deserialize::deserialize(&mut de);
|
|
|
|
- result
|
|
|
|
|
|
+ Deserialize::deserialize(&mut de)
|
|
}
|
|
}
|
|
|
|
|
|
pub struct Deserializer<'de, T: Read + ?Sized> {
|
|
pub struct Deserializer<'de, T: Read + ?Sized> {
|
|
@@ -28,7 +28,7 @@ pub struct Deserializer<'de, T: Read + ?Sized> {
|
|
}
|
|
}
|
|
|
|
|
|
fn try_from<TSource, TDest: TryFrom<TSource>>(value: TSource) -> Result<TDest> {
|
|
fn try_from<TSource, TDest: TryFrom<TSource>>(value: TSource) -> Result<TDest> {
|
|
- let cast = TDest::try_from(value).or_else(|_| Err(Error::TypeConversion))?;
|
|
|
|
|
|
+ let cast = TDest::try_from(value).map_err(|_| Error::TypeConversion)?;
|
|
Ok(cast)
|
|
Ok(cast)
|
|
}
|
|
}
|
|
|
|
|
|
@@ -89,11 +89,11 @@ fn char_from_utf8(buf: &[u8]) -> Result<char> {
|
|
|
|
|
|
impl<'de, T: Read + ?Sized> Deserializer<'de, T> {
|
|
impl<'de, T: Read + ?Sized> Deserializer<'de, T> {
|
|
pub fn new(input: &'de mut T) -> Self {
|
|
pub fn new(input: &'de mut T) -> Self {
|
|
- Deserializer { input: input }
|
|
|
|
|
|
+ Deserializer { input }
|
|
}
|
|
}
|
|
|
|
|
|
fn read_exact(&mut self, buf: &mut [u8]) -> Result<()> {
|
|
fn read_exact(&mut self, buf: &mut [u8]) -> Result<()> {
|
|
- self.input.read_exact(buf).or_else(|e| Err(Error::Io(e)))?;
|
|
|
|
|
|
+ self.input.read_exact(buf).map_err(Error::Io)?;
|
|
Ok(())
|
|
Ok(())
|
|
}
|
|
}
|
|
|
|
|
|
@@ -150,7 +150,7 @@ impl<'de, T: Read + ?Sized> Deserializer<'de, T> {
|
|
|
|
|
|
fn read_string(&mut self) -> Result<String> {
|
|
fn read_string(&mut self) -> Result<String> {
|
|
let vec = self.read_vec()?;
|
|
let vec = self.read_vec()?;
|
|
- let value = String::from_utf8(vec).or_else(|_| Err(Error::TypeConversion))?;
|
|
|
|
|
|
+ let value = String::from_utf8(vec).map_err(|_| Error::TypeConversion)?;
|
|
Ok(value)
|
|
Ok(value)
|
|
}
|
|
}
|
|
}
|
|
}
|