about summary refs log tree commit diff
path: root/library/core/src/char
diff options
context:
space:
mode:
authorbors <bors@rust-lang.org>2023-10-15 17:09:37 +0000
committerbors <bors@rust-lang.org>2023-10-15 17:09:37 +0000
commit64368d0279c41699fffd7980304488d65a42ba32 (patch)
tree13255b406038b2f2036688644843d24017cce343 /library/core/src/char
parentd60d63fbf7565daba4b9cc46cbbfabc366aeff63 (diff)
parent60fd119a293b56529c4a49f60103679eaced0aed (diff)
downloadrust-64368d0279c41699fffd7980304488d65a42ba32.tar.gz
rust-64368d0279c41699fffd7980304488d65a42ba32.zip
Auto merge of #110729 - ColinFinck:decode-utf16-fused-iterator, r=dtolnay
Implement FusedIterator for DecodeUtf16 when the inner iterator does

I have just implemented an iterator that wraps `DecodeUtf16` and wanted to implement `FusedIterator` for my iterator when I noticed that `DecodeUtf16` currently doesn't implement `FusedIterator` at all.
A quick look at the code of `DecodeUtf16` revealed that `DecodeUtf16::next` only returns `None` when its inner iterator returns `None`:
https://github.com/rust-lang/rust/blob/3462f79e94f466a56ddaccfcdd3a3d44dd1dda9f/library/core/src/char/decode.rs#L45

As a result, we can implement `FusedIterator` for `DecodeUtf16` when the inner iterator does.

I'm following the example of #96397 here and consider this change minor and non-controversial, which is why I haven't added an RFC. I have also added the required feature name (`"decode_utf16_fused_iterator"`), however without adding a chapter to the Rust Unstable book (same as #96397).
Diffstat (limited to 'library/core/src/char')
-rw-r--r--library/core/src/char/decode.rs4
1 files changed, 4 insertions, 0 deletions
diff --git a/library/core/src/char/decode.rs b/library/core/src/char/decode.rs
index dbfe251f2bb..d76f983d87c 100644
--- a/library/core/src/char/decode.rs
+++ b/library/core/src/char/decode.rs
@@ -2,6 +2,7 @@
 
 use crate::error::Error;
 use crate::fmt;
+use crate::iter::FusedIterator;
 
 /// An iterator that decodes UTF-16 encoded code points from an iterator of `u16`s.
 ///
@@ -105,6 +106,9 @@ impl<I: Iterator<Item = u16>> Iterator for DecodeUtf16<I> {
     }
 }
 
+#[stable(feature = "decode_utf16_fused_iterator", since = "CURRENT_RUSTC_VERSION")]
+impl<I: Iterator<Item = u16> + FusedIterator> FusedIterator for DecodeUtf16<I> {}
+
 impl DecodeUtf16Error {
     /// Returns the unpaired surrogate which caused this error.
     #[must_use]