about summary refs log tree commit diff
diff options
context:
space:
mode:
authorSky <sky@sky9.dev>2024-06-28 14:05:45 -0400
committerSky <sky@sky9.dev>2024-07-04 23:55:52 -0400
commit90cbd0bfb4dd973b69cbea9509073eba4a33f6ce (patch)
treea56949e17e599c272b7093c9f253feaa1c938dcb
parent9c3bc805dd9cb84019c124b9a50fdff1e62a7ec9 (diff)
downloadrust-90cbd0bfb4dd973b69cbea9509073eba4a33f6ce.tar.gz
rust-90cbd0bfb4dd973b69cbea9509073eba4a33f6ce.zip
impl FusedIterator and a size hint for the error sources iter
-rw-r--r--library/core/src/error.rs7
1 files changed, 7 insertions, 0 deletions
diff --git a/library/core/src/error.rs b/library/core/src/error.rs
index 150e4f3f318..ca8983d4cbc 100644
--- a/library/core/src/error.rs
+++ b/library/core/src/error.rs
@@ -1008,8 +1008,15 @@ impl<'a> Iterator for Source<'a> {
         self.current = self.current.and_then(Error::source);
         current
     }
+
+    fn size_hint(&self) -> (usize, Option<usize>) {
+        if self.current.is_some() { (1, None) } else { (0, Some(0)) }
+    }
 }
 
+#[unstable(feature = "error_iter", issue = "58520")]
+impl<'a> crate::iter::FusedIterator for Source<'a> {}
+
 #[stable(feature = "error_by_ref", since = "1.51.0")]
 impl<'a, T: Error + ?Sized> Error for &'a T {
     #[allow(deprecated, deprecated_in_future)]