de: cleanup and use Result instead of expect

This commit is contained in:
Matt Bilker
2018-07-19 03:14:27 +00:00
parent a539b123d2
commit 61dfe62f25
3 changed files with 11 additions and 11 deletions

View File

@@ -45,8 +45,8 @@ impl<'de> Deserializer<'de> {
Ok(Self {
read_mode: ReadMode::Single,
first_struct: true,
node_stack: Vec::new(),
first_struct: true,
reader,
})
}
@@ -217,12 +217,12 @@ impl<'de, 'a> de::Deserializer<'de> for &'a mut Deserializer<'de> {
{
trace!("Deserializer::deserialize_seq()");
let node_type = *self.node_stack.last().ok_or(KbinErrorKind::InvalidState)?;
let (node_type, _) = self.reader.last_node_type().ok_or(KbinErrorKind::InvalidState)?;
// If the last node type on the stack is a `NodeStart` then we are likely
// collecting a list of structs
let value = if node_type == StandardType::NodeStart {
visitor.visit_seq(Seq::new(self, None))?
visitor.visit_seq(Seq::new(self, None)?)?
} else {
// TODO: add size check against len
let size = self.reader.read_u32().context(KbinErrorKind::ArrayLengthRead)?;
@@ -231,7 +231,7 @@ impl<'de, 'a> de::Deserializer<'de> for &'a mut Deserializer<'de> {
// Changes to `self.read_mode` must stay here as `next_element_seed` is not
// called past the length of the array to reset the read mode
self.read_mode = ReadMode::Array;
let value = visitor.visit_seq(Seq::new(self, Some(size as usize)))?;
let value = visitor.visit_seq(Seq::new(self, Some(size as usize))?)?;
self.read_mode = ReadMode::Single;
self.reader.data_buf.realign_reads(None)?;
@@ -255,7 +255,7 @@ impl<'de, 'a> de::Deserializer<'de> for &'a mut Deserializer<'de> {
trace!("Deserializer::deserialize_tuple_struct(name: {:?}, len: {})", name, len);
self.read_mode = ReadMode::Array;
let value = visitor.visit_seq(Seq::new(self, Some(len)))?;
let value = visitor.visit_seq(Seq::new(self, Some(len))?)?;
self.read_mode = ReadMode::Single;
self.reader.data_buf.realign_reads(None)?;

View File

@@ -12,11 +12,11 @@ pub struct Seq<'a, 'de: 'a> {
}
impl<'de, 'a> Seq<'a, 'de> {
pub fn new(de: &'a mut Deserializer<'de>, len: Option<usize>) -> Self {
pub fn new(de: &'a mut Deserializer<'de>, len: Option<usize>) -> Result<Self> {
trace!("Seq::new(len: {:?})", len);
let known_identifier = if len.is_none() {
let value = de.reader.last_identifier().expect("known identifier null").into();
let value = de.reader.last_identifier().ok_or(KbinErrorKind::InvalidState)?.into();
debug!("Seq::new(len: {:?}) => known identifier: {:?}", len, value);
Some(value)
@@ -24,12 +24,12 @@ impl<'de, 'a> Seq<'a, 'de> {
None
};
Self {
Ok(Self {
de,
index: 0,
len,
known_identifier,
}
})
}
fn is_end(&mut self) -> Result<bool> {

View File

@@ -34,7 +34,7 @@ impl<'de, 'a> MapAccess<'de> for Struct<'a, 'de> {
return Ok(None);
}
let value = seed.deserialize(&mut *self.de).map(Some)?;
let key = seed.deserialize(&mut *self.de).map(Some)?;
match node_type {
StandardType::NodeStart => {
@@ -56,7 +56,7 @@ impl<'de, 'a> MapAccess<'de> for Struct<'a, 'de> {
// the current node type
self.de.node_stack.push(node_type);
Ok(value)
Ok(key)
}
fn next_value_seed<V>(&mut self, seed: V) -> Result<V::Value>