@@ -1203,6 +1203,30 @@ impl<'a> DoubleEndedIterator for SplitWhitespace<'a> {
12031203#[ stable( feature = "fused" , since = "1.26.0" ) ]
12041204impl FusedIterator for SplitWhitespace < ' _ > { }
12051205
1206+ impl < ' a > SplitWhitespace < ' a > {
1207+ /// Returns remainder of the splitted string
1208+ ///
1209+ /// # Examples
1210+ ///
1211+ /// ```
1212+ /// #![feature(str_split_whitespace_as_str)]
1213+ ///
1214+ /// let mut split = "Mary had a little lamb".split_whitespace();
1215+ /// assert_eq!(split.as_str(), "Mary had a little lamb");
1216+ ///
1217+ /// split.next();
1218+ /// assert_eq!(split.as_str(), "had a little lamb");
1219+ ///
1220+ /// split.by_ref().for_each(drop);
1221+ /// assert_eq!(split.as_str(), "");
1222+ /// ```
1223+ #[ inline]
1224+ #[ unstable( feature = "str_split_whitespace_as_str" , issue = "77998" ) ]
1225+ pub fn as_str ( & self ) -> & ' a str {
1226+ self . inner . iter . as_str ( )
1227+ }
1228+ }
1229+
12061230#[ stable( feature = "split_ascii_whitespace" , since = "1.34.0" ) ]
12071231impl < ' a > Iterator for SplitAsciiWhitespace < ' a > {
12081232 type Item = & ' a str ;
@@ -1234,6 +1258,37 @@ impl<'a> DoubleEndedIterator for SplitAsciiWhitespace<'a> {
12341258#[ stable( feature = "split_ascii_whitespace" , since = "1.34.0" ) ]
12351259impl FusedIterator for SplitAsciiWhitespace < ' _ > { }
12361260
1261+ impl < ' a > SplitAsciiWhitespace < ' a > {
1262+ /// Returns remainder of the splitted string
1263+ ///
1264+ /// # Examples
1265+ ///
1266+ /// ```
1267+ /// #![feature(str_split_whitespace_as_str)]
1268+ ///
1269+ /// let mut split = "Mary had a little lamb".split_ascii_whitespace();
1270+ /// assert_eq!(split.as_str(), "Mary had a little lamb");
1271+ ///
1272+ /// split.next();
1273+ /// assert_eq!(split.as_str(), "had a little lamb");
1274+ ///
1275+ /// split.by_ref().for_each(drop);
1276+ /// assert_eq!(split.as_str(), "");
1277+ /// ```
1278+ #[ inline]
1279+ #[ unstable( feature = "str_split_whitespace_as_str" , issue = "77998" ) ]
1280+ pub fn as_str ( & self ) -> & ' a str {
1281+ if self . inner . iter . iter . finished {
1282+ return "" ;
1283+ }
1284+
1285+ // Safety:
1286+ //
1287+ // Slice is created from str.
1288+ unsafe { crate :: str:: from_utf8_unchecked ( & self . inner . iter . iter . v ) }
1289+ }
1290+ }
1291+
12371292#[ stable( feature = "split_inclusive" , since = "1.51.0" ) ]
12381293impl < ' a , P : Pattern < ' a > > Iterator for SplitInclusive < ' a , P > {
12391294 type Item = & ' a str ;
0 commit comments