Better error handling added to walkable

This commit is contained in:
Tom Alexander
2020-04-12 20:52:30 -04:00
parent a647ed6d43
commit 9c7883358a
2 changed files with 39 additions and 21 deletions

View File

@@ -139,24 +139,29 @@ mod tests {
impl<I: ContextElement> Walkable for HashMap<&str, I> {
fn walk(&self, segment: &str) -> Result<&dyn ContextElement, RenderError> {
Ok(self.get(segment).unwrap())
// TODO: Handle error here better
// self.get(segment).ok_or(RenderError::WontWalk {
// segment: segment.to_string(),
// elem: self,
// })
let child = self.get(segment).ok_or(RenderError::WontWalk {
segment: segment.to_string(),
elem: self,
})?;
Ok(child)
}
}
impl Walkable for &str {
fn walk(&self, _segment: &str) -> Result<&dyn ContextElement, RenderError> {
panic!("Tried to walk down a str");
fn walk(&self, segment: &str) -> Result<&dyn ContextElement, RenderError> {
Err(RenderError::CantWalk {
segment: segment.to_string(),
elem: self,
})
}
}
impl Walkable for u32 {
fn walk(&self, _segment: &str) -> Result<&dyn ContextElement, RenderError> {
panic!("Tried to walk down a str");
fn walk(&self, segment: &str) -> Result<&dyn ContextElement, RenderError> {
Err(RenderError::CantWalk {
segment: segment.to_string(),
elem: self,
})
}
}