# Downcast the Errors

`std::error::Error` comes with some helper methods to get to the original object of the 
`&(dyn Error + 'static)` returned by `.source()`.

~~~rust,ignore
pub fn downcast_ref<T: Error + 'static>(&self) -> Option<&T>
pub fn downcast_mut<T: Error + 'static>(&mut self) -> Option<&mut T>
~~~

This is how it looks like, when using those:

~~~rust
{{#include ../examples/tutorial6.rs}}
# #[allow(dead_code)]
# mod chainerror {
{{#rustdoc_include ../src/lib.rs:-1}}
# }
~~~