@@ -1313,13 +1313,19 @@ mod traits {
13131313        } 
13141314    } 
13151315
1316+     /// Implements substring slicing with syntax `&self[begin .. end]`. 
1317+ /// 
13161318/// Returns a slice of the given string from the byte range 
13171319/// [`begin`..`end`). 
13181320/// 
13191321/// This operation is `O(1)`. 
13201322/// 
1321- /// Panics when `begin` and `end` do not point to valid characters 
1322- /// or point beyond the last character of the string. 
1323+ /// # Panics 
1324+ /// 
1325+ /// Panics if `begin` or `end` does not point to the starting 
1326+ /// byte offset of a character (as defined by `is_char_boundary`). 
1327+ /// Requires that `begin <= end` and `end <= len` where `len` is the 
1328+ /// length of the string. 
13231329/// 
13241330/// # Examples 
13251331/// 
@@ -1355,8 +1361,20 @@ mod traits {
13551361        } 
13561362    } 
13571363
1364+     /// Implements mutable substring slicing with syntax 
1365+ /// `&mut self[begin .. end]`. 
1366+ /// 
13581367/// Returns a mutable slice of the given string from the byte range 
13591368/// [`begin`..`end`). 
1369+ /// 
1370+ /// This operation is `O(1)`. 
1371+ /// 
1372+ /// # Panics 
1373+ /// 
1374+ /// Panics if `begin` or `end` does not point to the starting 
1375+ /// byte offset of a character (as defined by `is_char_boundary`). 
1376+ /// Requires that `begin <= end` and `end <= len` where `len` is the 
1377+ /// length of the string. 
13601378#[ stable( feature = "derefmut_for_string" ,  since = "1.2.0" ) ]  
13611379    impl  ops:: IndexMut < ops:: Range < usize > >  for  str  { 
13621380        #[ inline]  
@@ -1372,13 +1390,12 @@ mod traits {
13721390        } 
13731391    } 
13741392
1375-     /// Returns a slice of the string from the beginning to byte 
1376- /// `end`. 
1393+     /// Implements substring slicing with syntax `&self[.. end]`. 
13771394/// 
1378- /// Equivalent to `self[0 .. end]`. 
1395+ /// Returns a slice of the string from the beginning to byte offset 
1396+ /// `end`. 
13791397/// 
1380- /// Panics when `end` does not point to a valid character, or is 
1381- /// out of bounds. 
1398+ /// Equivalent to `&self[0 .. end]`. 
13821399#[ stable( feature = "rust1" ,  since = "1.0.0" ) ]  
13831400    impl  ops:: Index < ops:: RangeTo < usize > >  for  str  { 
13841401        type  Output  = str ; 
@@ -1394,8 +1411,12 @@ mod traits {
13941411        } 
13951412    } 
13961413
1397-     /// Returns a mutable slice of the string from the beginning to byte 
1414+     /// Implements mutable substring slicing with syntax `&mut self[.. end]`. 
1415+ /// 
1416+ /// Returns a mutable slice of the string from the beginning to byte offset 
13981417/// `end`. 
1418+ /// 
1419+ /// Equivalent to `&mut self[0 .. end]`. 
13991420#[ stable( feature = "derefmut_for_string" ,  since = "1.2.0" ) ]  
14001421    impl  ops:: IndexMut < ops:: RangeTo < usize > >  for  str  { 
14011422        #[ inline]  
@@ -1409,12 +1430,12 @@ mod traits {
14091430        } 
14101431    } 
14111432
1412-     /// Returns a slice of the string from ` begin` to its end . 
1433+     /// Implements substring slicing with syntax `&self[ begin ..]` . 
14131434/// 
1414- /// Equivalent to `self[begin .. self.len()]`. 
1435+ /// Returns a slice of the string from byte offset `begin` 
1436+ /// to the end of the string. 
14151437/// 
1416- /// Panics when `begin` does not point to a valid character, or is 
1417- /// out of bounds. 
1438+ /// Equivalent to `&self[begin .. len]`. 
14181439#[ stable( feature = "rust1" ,  since = "1.0.0" ) ]  
14191440    impl  ops:: Index < ops:: RangeFrom < usize > >  for  str  { 
14201441        type  Output  = str ; 
@@ -1430,7 +1451,12 @@ mod traits {
14301451        } 
14311452    } 
14321453
1433-     /// Returns a slice of the string from `begin` to its end. 
1454+     /// Implements mutable substring slicing with syntax `&mut self[begin ..]`. 
1455+ /// 
1456+ /// Returns a mutable slice of the string from byte offset `begin` 
1457+ /// to the end of the string. 
1458+ /// 
1459+ /// Equivalent to `&mut self[begin .. len]`. 
14341460#[ stable( feature = "derefmut_for_string" ,  since = "1.2.0" ) ]  
14351461    impl  ops:: IndexMut < ops:: RangeFrom < usize > >  for  str  { 
14361462        #[ inline]  
@@ -1445,6 +1471,12 @@ mod traits {
14451471        } 
14461472    } 
14471473
1474+     /// Implements substring slicing with syntax `&self[..]`. 
1475+ /// 
1476+ /// Returns a slice of the whole string. This operation can 
1477+ /// never panic. 
1478+ /// 
1479+ /// Equivalent to `&self[0 .. len]`. 
14481480#[ stable( feature = "rust1" ,  since = "1.0.0" ) ]  
14491481    impl  ops:: Index < ops:: RangeFull >  for  str  { 
14501482        type  Output  = str ; 
@@ -1455,6 +1487,12 @@ mod traits {
14551487        } 
14561488    } 
14571489
1490+     /// Implements mutable substring slicing with syntax `&mut self[..]`. 
1491+ /// 
1492+ /// Returns a mutable slice of the whole string. This operation can 
1493+ /// never panic. 
1494+ /// 
1495+ /// Equivalent to `&mut self[0 .. len]`. 
14581496#[ stable( feature = "derefmut_for_string" ,  since = "1.2.0" ) ]  
14591497    impl  ops:: IndexMut < ops:: RangeFull >  for  str  { 
14601498        #[ inline]  
0 commit comments