12
12
13
13
//! Unicode string manipulation (the [`str`](../primitive.str.html) type).
14
14
//!
15
- //! Rust's [`str`](../primitive.str.html) type is one of the core primitive
16
- //! types of the language. `&str` is the borrowed string type. This type of
17
- //! string can only be created from other strings, unless it is a `&'static str`
18
- //! (see below). It is not possible to move out of borrowed strings because they
19
- //! are owned elsewhere.
15
+ //! Rust's [`str`](../primitive.str.html) type is one of the core primitive types of the
16
+ //! language. `&str` is the borrowed string type. This type of string can only be created
17
+ //! from other strings, unless it is a `&'static str` (see below). It is not possible to
18
+ //! move out of borrowed strings because they are owned elsewhere.
20
19
//!
21
- //! Basic operations are implemented directly by the compiler, but more advanced
22
- //! operations are defined on the [`StrExt`](trait.StrExt.html) trait.
20
+ //! Basic operations are implemented directly by the compiler, but more advanced operations are
21
+ //! defined on the [`StrExt`](trait.StrExt.html) trait.
23
22
//!
24
23
//! # Examples
25
24
//!
29
28
//! let s = "Hello, world.";
30
29
//! ```
31
30
//!
32
- //! This `&str` is a `&'static str`, which is the type of string literals.
33
- //! They're `'static` because literals are available for the entire lifetime of
34
- //! the program.
31
+ //! This `&str` is a `&'static str`, which is the type of string literals. They're `'static`
32
+ //! because literals are available for the entire lifetime of the program.
35
33
//!
36
34
//! You can get a non-`'static` `&str` by taking a slice of a `String`:
37
35
//!
42
40
//!
43
41
//! # Representation
44
42
//!
45
- //! Rust's string type, `str`, is a sequence of Unicode scalar values encoded as
46
- //! a stream of UTF-8 bytes. All [strings](../../reference.html#literals) are
47
- //! guaranteed to be validly encoded UTF-8 sequences. Additionally, strings are
48
- //! not null-terminated and can thus contain null bytes.
43
+ //! Rust's string type, `str`, is a sequence of Unicode scalar values encoded as a stream of UTF-8
44
+ //! bytes. All [strings](../../reference.html#literals) are guaranteed to be validly encoded UTF-8
45
+ //! sequences. Additionally, strings are not null-terminated and can thus contain null bytes.
49
46
//!
50
- //! The actual representation of `str`s have direct mappings to slices: `&str`
51
- //! is the same as `&[u8]`.
47
+ //! The actual representation of `str`s have direct mappings to slices: `&str` is the same as
48
+ //! `&[u8]`.
52
49
53
50
#![ doc( primitive = "str" ) ]
54
51
#![ stable( feature = "rust1" , since = "1.0.0" ) ]
55
52
56
53
use self :: RecompositionState :: * ;
57
54
use self :: DecompositionType :: * ;
58
55
56
+ use core:: char:: CharExt ;
59
57
use core:: clone:: Clone ;
60
58
use core:: iter:: AdditiveIterator ;
61
- use core:: iter:: { Iterator , IteratorExt , Extend } ;
59
+ use core:: iter:: { Iterator , IteratorExt } ;
62
60
use core:: ops:: Index ;
63
61
use core:: ops:: RangeFull ;
64
62
use core:: option:: Option :: { self , Some , None } ;
65
63
use core:: result:: Result ;
66
64
use core:: slice:: AsSlice ;
67
65
use core:: str as core_str;
68
- use unicode:: char:: CharExt ;
69
66
use unicode:: str:: { UnicodeStr , Utf16Encoder } ;
70
67
71
68
use vec_deque:: VecDeque ;
@@ -839,19 +836,17 @@ pub trait StrExt: Index<RangeFull, Output = str> {
839
836
840
837
/// Returns a slice of the string from the character range [`begin`..`end`).
841
838
///
842
- /// That is, start at the `begin`-th code point of the string and continue
843
- /// to the `end`-th code point. This does not detect or handle edge cases
844
- /// such as leaving a combining character as the first code point of the
845
- /// string.
839
+ /// That is, start at the `begin`-th code point of the string and continue to the `end`-th code
840
+ /// point. This does not detect or handle edge cases such as leaving a combining character as
841
+ /// the first code point of the string.
846
842
///
847
- /// Due to the design of UTF-8, this operation is `O(end)`. See `slice`,
848
- /// `slice_to` and `slice_from` for `O(1)` variants that use byte indices
849
- /// rather than code point indices.
843
+ /// Due to the design of UTF-8, this operation is `O(end)`. See `slice`, `slice_to` and
844
+ /// `slice_from` for `O(1)` variants that use byte indices rather than code point indices.
850
845
///
851
846
/// # Panics
852
847
///
853
- /// Panics if `begin` > `end` or the either `begin` or `end` are beyond the
854
- /// last character of the string.
848
+ /// Panics if `begin` > `end` or the either `begin` or `end` are beyond the last character of
849
+ /// the string.
855
850
///
856
851
/// # Examples
857
852
///
@@ -873,8 +868,8 @@ pub trait StrExt: Index<RangeFull, Output = str> {
873
868
///
874
869
/// # Unsafety
875
870
///
876
- /// Caller must check both UTF-8 character boundaries and the boundaries of
877
- /// the entire slice as well.
871
+ /// Caller must check both UTF-8 character boundaries and the boundaries of the entire slice as
872
+ /// well.
878
873
///
879
874
/// # Examples
880
875
///
@@ -1511,32 +1506,6 @@ pub trait StrExt: Index<RangeFull, Output = str> {
1511
1506
fn trim_right ( & self ) -> & str {
1512
1507
UnicodeStr :: trim_right ( & self [ ..] )
1513
1508
}
1514
-
1515
- /// Returns the lowercase equivalent of this string.
1516
- ///
1517
- /// # Examples
1518
- ///
1519
- /// let s = "HELLO";
1520
- /// assert_eq!(s.to_lowercase(), "hello");
1521
- #[ unstable( feature = "collections" ) ]
1522
- fn to_lowercase ( & self ) -> String {
1523
- let mut s = String :: with_capacity ( self . len ( ) ) ;
1524
- s. extend ( self [ ..] . chars ( ) . flat_map ( |c| c. to_lowercase ( ) ) ) ;
1525
- return s;
1526
- }
1527
-
1528
- /// Returns the uppercase equivalent of this string.
1529
- ///
1530
- /// # Examples
1531
- ///
1532
- /// let s = "hello";
1533
- /// assert_eq!(s.to_uppercase(), "HELLO");
1534
- #[ unstable( feature = "collections" ) ]
1535
- fn to_uppercase ( & self ) -> String {
1536
- let mut s = String :: with_capacity ( self . len ( ) ) ;
1537
- s. extend ( self [ ..] . chars ( ) . flat_map ( |c| c. to_uppercase ( ) ) ) ;
1538
- return s;
1539
- }
1540
1509
}
1541
1510
1542
1511
#[ stable( feature = "rust1" , since = "1.0.0" ) ]
0 commit comments