[−][src]Trait error_iter::ErrorIter
Implement this trait on your error types for free iterators over their sources!
The default implementation provides iterators for any type that implements std::error::Error
.
Provided methods
ⓘImportant traits for ErrorIterator<'a>fn iter_chain(&self) -> ErrorIterator
ⓘImportant traits for ErrorIterator<'a>
Create an iterator over the error and its chained sources.
use error_iter::ErrorIter; use thiserror::Error; #[derive(Debug, Error)] enum Error { #[error("Nested error: {0}")] Nested(#[source] Box<Error>), #[error("Leaf error")] Leaf, } impl ErrorIter for Error {} let error = Error::Nested(Box::new(Error::Leaf)); let mut iter = error.iter_chain(); assert_eq!("Nested error: Leaf error".to_string(), iter.next().unwrap().to_string()); assert_eq!("Leaf error".to_string(), iter.next().unwrap().to_string()); assert!(iter.next().is_none()); assert!(iter.next().is_none());
ⓘImportant traits for ErrorIterator<'a>fn iter_sources(&self) -> ErrorIterator
ⓘImportant traits for ErrorIterator<'a>
Create an iterator over the chained error sources.
use error_iter::ErrorIter; use thiserror::Error; #[derive(Debug, Error)] enum Error { #[error("Nested error: {0}")] Nested(#[source] Box<Error>), #[error("Leaf error")] Leaf, } impl ErrorIter for Error {} let error = Error::Nested(Box::new(Error::Leaf)); let mut iter = error.iter_sources(); assert_eq!("Leaf error".to_string(), iter.next().unwrap().to_string()); assert!(iter.next().is_none()); assert!(iter.next().is_none());