1#[derive(Debug, Clone)]
7pub struct ChainCompat<'a, 'b> {
8 inner: Option<&'a (dyn crate::Error + 'b)>,
9}
10
11impl<'a, 'b> ChainCompat<'a, 'b> {
12 pub fn new(error: &'a (dyn crate::Error + 'b)) -> Self {
14 ChainCompat { inner: Some(error) }
15 }
16}
17
18impl<'a, 'b> Iterator for ChainCompat<'a, 'b> {
19 type Item = &'a (dyn crate::Error + 'b);
20
21 fn next(&mut self) -> Option<Self::Item> {
22 match self.inner {
23 None => None,
24 Some(e) => {
25 self.inner = e.source();
26 Some(e)
27 }
28 }
29 }
30}