@@ -3011,6 +3011,101 @@ impl str {
3011
3011
ext:: rsplitn ( self , n, pat)
3012
3012
}
3013
3013
3014
+ // FIXME: Someone should enhance the docs before stabilizing.
3015
+
3016
+ /// An iterator over substrings of this mutable string slice, separated by
3017
+ /// characters matched by a pattern.
3018
+ #[ unstable( feature = "mut_str_needle_methods" , issue = "56345" ) ]
3019
+ #[ inline]
3020
+ pub fn split_mut < ' a , P > ( & ' a mut self , pat : P ) -> ext:: Split < & ' a mut str , P :: Searcher >
3021
+ where
3022
+ P : Needle < & ' a mut str > ,
3023
+ P :: Searcher : Searcher < str > , // FIXME: RFC 2089
3024
+ P :: Consumer : Consumer < str > , // FIXME: RFC 2089
3025
+ {
3026
+ ext:: split ( self , pat)
3027
+ }
3028
+
3029
+ /// An iterator over substrings of the given mutable string slice, separated by
3030
+ /// characters matched by a pattern and yielded in reverse order.
3031
+ #[ unstable( feature = "mut_str_needle_methods" , issue = "56345" ) ]
3032
+ #[ inline]
3033
+ pub fn rsplit_mut < ' a , P > ( & ' a mut self , pat : P ) -> ext:: RSplit < & ' a mut str , P :: Searcher >
3034
+ where
3035
+ P : Needle < & ' a mut str > ,
3036
+ P :: Searcher : ReverseSearcher < str > ,
3037
+ P :: Consumer : Consumer < str > , // FIXME: RFC 2089
3038
+ {
3039
+ ext:: rsplit ( self , pat)
3040
+ }
3041
+
3042
+ /// An iterator over substrings of the given mutable string slice, separated by
3043
+ /// characters matched by a pattern.
3044
+ ///
3045
+ /// Equivalent to [`split_mut`], except that the trailing substring
3046
+ /// is skipped if empty.
3047
+ ///
3048
+ /// [`split_mut`]: #method.split_mut
3049
+ #[ unstable( feature = "mut_str_needle_methods" , issue = "56345" ) ]
3050
+ #[ inline]
3051
+ pub fn split_terminator_mut < ' a , P > ( & ' a mut self , pat : P )
3052
+ -> ext:: SplitTerminator < & ' a mut str , P :: Searcher >
3053
+ where
3054
+ P : Needle < & ' a mut str > ,
3055
+ P :: Searcher : Searcher < str > , // FIXME: RFC 2089
3056
+ P :: Consumer : Consumer < str > , // FIXME: RFC 2089
3057
+ {
3058
+ ext:: split_terminator ( self , pat)
3059
+ }
3060
+
3061
+ /// An iterator over substrings of the given mutable string slice, separated by
3062
+ /// characters matched by a pattern and yielded in reverse order.
3063
+ ///
3064
+ /// Equivalent to [`rsplit_mut`], except that the trailing substring
3065
+ /// is skipped if empty.
3066
+ ///
3067
+ /// [`rsplit_mut`]: #method.rsplit_mut
3068
+ #[ unstable( feature = "mut_str_needle_methods" , issue = "56345" ) ]
3069
+ #[ inline]
3070
+ pub fn rsplit_terminator_mut < ' a , P > ( & ' a mut self , pat : P )
3071
+ -> ext:: RSplitTerminator < & ' a mut str , P :: Searcher >
3072
+ where
3073
+ P : Needle < & ' a mut str > ,
3074
+ P :: Searcher : ReverseSearcher < str > ,
3075
+ P :: Consumer : Consumer < str > , // FIXME: RFC 2089
3076
+ {
3077
+ ext:: rsplit_terminator ( self , pat)
3078
+ }
3079
+
3080
+ /// An iterator over substrings of the given mutable string slice, separated by a
3081
+ /// pattern, restricted to returning at most `n` items.
3082
+ #[ unstable( feature = "mut_str_needle_methods" , issue = "56345" ) ]
3083
+ #[ inline]
3084
+ pub fn splitn_mut < ' a , P > ( & ' a mut self , n : usize , pat : P )
3085
+ -> ext:: SplitN < & ' a mut str , P :: Searcher >
3086
+ where
3087
+ P : Needle < & ' a mut str > ,
3088
+ P :: Searcher : Searcher < str > , // FIXME: RFC 2089
3089
+ P :: Consumer : Consumer < str > , // FIXME: RFC 2089
3090
+ {
3091
+ ext:: splitn ( self , n, pat)
3092
+ }
3093
+
3094
+ /// An iterator over substrings of this mutable string slice, separated by a
3095
+ /// pattern, starting from the end of the string, restricted to returning
3096
+ /// at most `n` items.
3097
+ #[ unstable( feature = "mut_str_needle_methods" , issue = "56345" ) ]
3098
+ #[ inline]
3099
+ pub fn rsplitn_mut < ' a , P > ( & ' a mut self , n : usize , pat : P )
3100
+ -> ext:: RSplitN < & ' a mut str , P :: Searcher >
3101
+ where
3102
+ P : Needle < & ' a mut str > ,
3103
+ P :: Searcher : ReverseSearcher < str > ,
3104
+ P :: Consumer : Consumer < str > , // FIXME: RFC 2089
3105
+ {
3106
+ ext:: rsplitn ( self , n, pat)
3107
+ }
3108
+
3014
3109
/// An iterator over the disjoint matches of a pattern within the given string
3015
3110
/// slice.
3016
3111
///
@@ -3274,6 +3369,88 @@ impl str {
3274
3369
ext:: rmatch_ranges ( self , pat)
3275
3370
}
3276
3371
3372
+ /// An iterator over the disjoint matches of a pattern within the given
3373
+ /// mutable string slice.
3374
+ #[ unstable( feature = "mut_str_needle_methods" , issue = "56345" ) ]
3375
+ #[ inline]
3376
+ pub fn matches_mut < ' a , P > ( & ' a mut self , pat : P ) -> ext:: Matches < & ' a mut str , P :: Searcher >
3377
+ where
3378
+ P : Needle < & ' a mut str > ,
3379
+ P :: Searcher : Searcher < str > , // FIXME: RFC 2089
3380
+ P :: Consumer : Consumer < str > , // FIXME: RFC 2089
3381
+ {
3382
+ ext:: matches ( self , pat)
3383
+ }
3384
+
3385
+ /// An iterator over the disjoint matches of a pattern within this
3386
+ /// mutable string slice, yielded in reverse order.
3387
+ #[ unstable( feature = "mut_str_needle_methods" , issue = "56345" ) ]
3388
+ #[ inline]
3389
+ pub fn rmatches_mut < ' a , P > ( & ' a mut self , pat : P ) -> ext:: RMatches < & ' a mut str , P :: Searcher >
3390
+ where
3391
+ P : Needle < & ' a mut str > ,
3392
+ P :: Searcher : ReverseSearcher < str > ,
3393
+ P :: Consumer : Consumer < str > , // FIXME: RFC 2089
3394
+ {
3395
+ ext:: rmatches ( self , pat)
3396
+ }
3397
+
3398
+ /// An iterator over the disjoint matches of a pattern within this mutable string
3399
+ /// slice as well as the index that the match starts at.
3400
+ #[ unstable( feature = "mut_str_needle_methods" , issue = "56345" ) ]
3401
+ #[ inline]
3402
+ pub fn match_indices_mut < ' a , P > ( & ' a mut self , pat : P )
3403
+ -> ext:: MatchIndices < & ' a mut str , P :: Searcher >
3404
+ where
3405
+ P : Needle < & ' a mut str > ,
3406
+ P :: Searcher : Searcher < str > , // FIXME: RFC 2089
3407
+ P :: Consumer : Consumer < str > , // FIXME: RFC 2089
3408
+ {
3409
+ ext:: match_indices ( self , pat)
3410
+ }
3411
+
3412
+ /// An iterator over the disjoint matches of a pattern within this mutable string slice,
3413
+ /// yielded in reverse order along with the index of the match.
3414
+ #[ unstable( feature = "mut_str_needle_methods" , issue = "56345" ) ]
3415
+ #[ inline]
3416
+ pub fn rmatch_indices_mut < ' a , P > ( & ' a mut self , pat : P )
3417
+ -> ext:: RMatchIndices < & ' a mut str , P :: Searcher >
3418
+ where
3419
+ P : Needle < & ' a mut str > ,
3420
+ P :: Searcher : ReverseSearcher < str > ,
3421
+ P :: Consumer : Consumer < str > , // FIXME: RFC 2089
3422
+ {
3423
+ ext:: rmatch_indices ( self , pat)
3424
+ }
3425
+
3426
+ /// An iterator over the disjoint matches of a pattern within this mutable string
3427
+ /// slice as well as the range that the match covers.
3428
+ #[ unstable( feature = "mut_str_needle_methods" , issue = "56345" ) ]
3429
+ #[ inline]
3430
+ pub fn match_ranges_mut < ' a , P > ( & ' a mut self , pat : P )
3431
+ -> ext:: MatchRanges < & ' a mut str , P :: Searcher >
3432
+ where
3433
+ P : Needle < & ' a mut str > ,
3434
+ P :: Searcher : Searcher < str > , // FIXME: RFC 2089
3435
+ P :: Consumer : Consumer < str > , // FIXME: RFC 2089
3436
+ {
3437
+ ext:: match_ranges ( self , pat)
3438
+ }
3439
+
3440
+ /// An iterator over the disjoint matches of a pattern within this mutable string slice,
3441
+ /// yielded in reverse order along with the range of the match.
3442
+ #[ unstable( feature = "mut_str_needle_methods" , issue = "56345" ) ]
3443
+ #[ inline]
3444
+ pub fn rmatch_ranges_mut < ' a , P > ( & ' a mut self , pat : P )
3445
+ -> ext:: RMatchRanges < & ' a mut str , P :: Searcher >
3446
+ where
3447
+ P : Needle < & ' a mut str > ,
3448
+ P :: Searcher : ReverseSearcher < str > ,
3449
+ P :: Consumer : Consumer < str > , // FIXME: RFC 2089
3450
+ {
3451
+ ext:: rmatch_ranges ( self , pat)
3452
+ }
3453
+
3277
3454
/// Returns a string slice with leading and trailing whitespace removed.
3278
3455
///
3279
3456
/// 'Whitespace' is defined according to the terms of the Unicode Derived
@@ -3647,6 +3824,63 @@ impl str {
3647
3824
self . trim_end_matches ( pat)
3648
3825
}
3649
3826
3827
+ /// Returns a mutable string slice with leading and trailing whitespace removed.
3828
+ #[ unstable( feature = "mut_str_needle_methods" , issue = "56345" ) ]
3829
+ #[ inline]
3830
+ pub fn trim_mut ( & mut self ) -> & mut str {
3831
+ self . trim_matches_mut ( |c : char | c. is_whitespace ( ) )
3832
+ }
3833
+
3834
+ /// Returns a mutable string slice with leading whitespace removed.
3835
+ #[ unstable( feature = "mut_str_needle_methods" , issue = "56345" ) ]
3836
+ #[ inline]
3837
+ pub fn trim_start_mut ( & mut self ) -> & mut str {
3838
+ self . trim_start_matches_mut ( |c : char | c. is_whitespace ( ) )
3839
+ }
3840
+
3841
+ /// Returns a mutable string slice with trailing whitespace removed.
3842
+ #[ unstable( feature = "mut_str_needle_methods" , issue = "56345" ) ]
3843
+ #[ inline]
3844
+ pub fn trim_end_mut ( & mut self ) -> & mut str {
3845
+ self . trim_end_matches_mut ( |c : char | c. is_whitespace ( ) )
3846
+ }
3847
+
3848
+ /// Returns a mutable string slice with all prefixes and suffixes that match a
3849
+ /// pattern repeatedly removed.
3850
+ #[ unstable( feature = "mut_str_needle_methods" , issue = "56345" ) ]
3851
+ #[ inline]
3852
+ pub fn trim_matches_mut < ' a , P : Needle < & ' a mut str > > ( & ' a mut self , pat : P ) -> & ' a mut str
3853
+ where
3854
+ P :: Searcher : Searcher < str > , // FIXME: RFC 2089
3855
+ P :: Consumer : DoubleEndedConsumer < str > ,
3856
+ {
3857
+ ext:: trim ( self , pat)
3858
+ }
3859
+
3860
+ /// Returns a mutable string slice with all prefixes that match a pattern
3861
+ /// repeatedly removed.
3862
+ #[ unstable( feature = "mut_str_needle_methods" , issue = "56345" ) ]
3863
+ #[ inline]
3864
+ pub fn trim_start_matches_mut < ' a , P : Needle < & ' a mut str > > ( & ' a mut self , pat : P ) -> & ' a mut str
3865
+ where
3866
+ P :: Searcher : Searcher < str > , // FIXME: RFC 2089
3867
+ P :: Consumer : Consumer < str > , // FIXME: RFC 2089
3868
+ {
3869
+ ext:: trim_start ( self , pat)
3870
+ }
3871
+
3872
+ /// Returns a mutable string slice with all suffixes that match a pattern
3873
+ /// repeatedly removed.
3874
+ #[ unstable( feature = "mut_str_needle_methods" , issue = "56345" ) ]
3875
+ #[ inline]
3876
+ pub fn trim_end_matches_mut < ' a , P : Needle < & ' a mut str > > ( & ' a mut self , pat : P ) -> & ' a mut str
3877
+ where
3878
+ P :: Searcher : Searcher < str > , // FIXME: RFC 2089
3879
+ P :: Consumer : ReverseConsumer < str > ,
3880
+ {
3881
+ ext:: trim_end ( self , pat)
3882
+ }
3883
+
3650
3884
/// Parses this string slice into another type.
3651
3885
///
3652
3886
/// Because `parse` is so general, it can cause problems with type
0 commit comments