std: Tweak some unstable features of str
This commit clarifies some of the unstable features in the `str` module by moving them out of the blanket `core` and `collections` features. The following methods were moved to the `str_char` feature which generally encompasses decoding specific characters from a `str` and dealing with the result. It is unclear if any of these methods need to be stabilized for 1.0 and the most conservative route for now is to continue providing them but to leave them as unstable under a more specific name. * `is_char_boundary` * `char_at` * `char_range_at` * `char_at_reverse` * `char_range_at_reverse` * `slice_shift_char` The following methods were moved into the generic `unicode` feature as they are specifically enabled by the `unicode` crate itself. * `nfd_chars` * `nfkd_chars` * `nfc_chars` * `graphemes` * `grapheme_indices` * `width`
This commit is contained in:
parent
c64d671671
commit
aa88da6317
16 changed files with 156 additions and 92 deletions
|
|
@ -18,6 +18,7 @@
|
|||
|
||||
use self::OldSearcher::{TwoWay, TwoWayLong};
|
||||
|
||||
use char::CharExt;
|
||||
use clone::Clone;
|
||||
use cmp::{self, Eq};
|
||||
use default::Default;
|
||||
|
|
@ -1112,8 +1113,10 @@ static UTF8_CHAR_WIDTH: [u8; 256] = [
|
|||
/// the next `char` in a string. This can be used as a data structure
|
||||
/// for iterating over the UTF-8 bytes of a string.
|
||||
#[derive(Copy)]
|
||||
#[unstable(feature = "core",
|
||||
reason = "naming is uncertain with container conventions")]
|
||||
#[unstable(feature = "str_char",
|
||||
reason = "existence of this struct is uncertain as it is frequently \
|
||||
able to be replaced with char.len_utf8() and/or \
|
||||
char/char_indices iterators")]
|
||||
pub struct CharRange {
|
||||
/// Current `char`
|
||||
pub ch: char,
|
||||
|
|
@ -1646,8 +1649,8 @@ impl StrExt for str {
|
|||
if self.is_empty() {
|
||||
None
|
||||
} else {
|
||||
let CharRange {ch, next} = self.char_range_at(0);
|
||||
let next_s = unsafe { self.slice_unchecked(next, self.len()) };
|
||||
let ch = self.char_at(0);
|
||||
let next_s = unsafe { self.slice_unchecked(ch.len_utf8(), self.len()) };
|
||||
Some((ch, next_s))
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue