@@ -1203,6 +1203,30 @@ impl<'a> DoubleEndedIterator for SplitWhitespace<'a> {
1203
1203
#[ stable( feature = "fused" , since = "1.26.0" ) ]
1204
1204
impl FusedIterator for SplitWhitespace < ' _ > { }
1205
1205
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
+
1206
1230
#[ stable( feature = "split_ascii_whitespace" , since = "1.34.0" ) ]
1207
1231
impl < ' a > Iterator for SplitAsciiWhitespace < ' a > {
1208
1232
type Item = & ' a str ;
@@ -1234,6 +1258,37 @@ impl<'a> DoubleEndedIterator for SplitAsciiWhitespace<'a> {
1234
1258
#[ stable( feature = "split_ascii_whitespace" , since = "1.34.0" ) ]
1235
1259
impl FusedIterator for SplitAsciiWhitespace < ' _ > { }
1236
1260
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
+
1237
1292
#[ stable( feature = "split_inclusive" , since = "1.51.0" ) ]
1238
1293
impl < ' a , P : Pattern < ' a > > Iterator for SplitInclusive < ' a , P > {
1239
1294
type Item = & ' a str ;
0 commit comments