Skip to content

Commit 64368d0

Browse files
committed
Auto merge of rust-lang#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 rust-lang#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 rust-lang#96397).
2 parents d60d63f + 60fd119 commit 64368d0

File tree

1 file changed

+4
-0
lines changed

1 file changed

+4
-0
lines changed

Diff for: library/core/src/char/decode.rs

+4
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
33
use crate::error::Error;
44
use crate::fmt;
5+
use crate::iter::FusedIterator;
56

67
/// An iterator that decodes UTF-16 encoded code points from an iterator of `u16`s.
78
///
@@ -105,6 +106,9 @@ impl<I: Iterator<Item = u16>> Iterator for DecodeUtf16<I> {
105106
}
106107
}
107108

109+
#[stable(feature = "decode_utf16_fused_iterator", since = "CURRENT_RUSTC_VERSION")]
110+
impl<I: Iterator<Item = u16> + FusedIterator> FusedIterator for DecodeUtf16<I> {}
111+
108112
impl DecodeUtf16Error {
109113
/// Returns the unpaired surrogate which caused this error.
110114
#[must_use]

0 commit comments

Comments
 (0)