diff --git a/src/rstd/collections/stack.rs b/src/rstd/collections/stack.rs index 3d8cca5..da8cc5c 100644 --- a/src/rstd/collections/stack.rs +++ b/src/rstd/collections/stack.rs @@ -75,18 +75,13 @@ impl<'a, Ctx: Context<'a>, F: Factory<'a, Ctx>> Factory<'a, Ctx> for StackNodeFa type ParseError = StackParseError>; fn deserialize(&self, dectx: &mut dyn DeCtx<'a, Ctx>) -> ParseResult<'a, Ctx, Self> { - let rest = match NullableFactory::new(self.clone()).deserialize(dectx) { - Ok(rest) => rest, - Err(ppe) => { - return Err(StackParseError::Point(ppe)); - } - }; - let element = match self.element_factory.deserialize(dectx) { - Ok(element) => element, - Err(epe) => { - return Err(StackParseError::Element(epe)); - } - }; + let rest = NullableFactory::new(self.clone()) + .deserialize(dectx) + .map_err(StackParseError::Point)?; + let element = self + .element_factory + .deserialize(dectx) + .map_err(StackParseError::Element)?; Ok(StackNode { rest, element }) }