| 1943 | |
| 1944 | #[inline] |
| 1945 | fn next(&mut self) -> Option<Self::Item> { |
| 1946 | match &mut self.state { |
| 1947 | ChainState::Ours(e) => { |
| 1948 | let core = e.inner.as_dyn_core_error(); |
| 1949 | self.state = if let Some(e) = e.inner.source() { |
| 1950 | ChainState::Ours(e) |
| 1951 | } else { |
| 1952 | ChainState::Core(core.source()) |
| 1953 | }; |
| 1954 | Some(core) |
| 1955 | } |
| 1956 | ChainState::Core(error) => { |
| 1957 | let e = error.take()?; |
| 1958 | self.state = ChainState::Core(e.source()); |
| 1959 | Some(e) |
| 1960 | } |
| 1961 | } |
| 1962 | } |
| 1963 | } |
| 1964 | |
| 1965 | impl FusedIterator for Chain<'_> {} |