From 8018293e0871645ad266b78864473d82a16d0c0f Mon Sep 17 00:00:00 2001 From: Huon Wilson Date: Tue, 30 Dec 2014 13:34:06 +1100 Subject: Switch encode_utf* to by-value self. --- src/libcore/char.rs | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) (limited to 'src/libcore') diff --git a/src/libcore/char.rs b/src/libcore/char.rs index 3423e76ea64..332c002451f 100644 --- a/src/libcore/char.rs +++ b/src/libcore/char.rs @@ -183,7 +183,7 @@ pub trait Char { /// If the buffer is not large enough, nothing will be written into it /// and a `None` will be returned. #[unstable = "pending trait organization"] - fn encode_utf8(&self, dst: &mut [u8]) -> Option; + fn encode_utf8(self, dst: &mut [u8]) -> Option; /// Encodes this character as UTF-16 into the provided `u16` buffer, /// and then returns the number of `u16`s written. @@ -191,7 +191,7 @@ pub trait Char { /// If the buffer is not large enough, nothing will be written into it /// and a `None` will be returned. #[unstable = "pending trait organization"] - fn encode_utf16(&self, dst: &mut [u16]) -> Option; + fn encode_utf16(self, dst: &mut [u16]) -> Option; } #[experimental = "trait is experimental"] @@ -260,9 +260,9 @@ impl Char for char { #[inline] #[unstable = "pending error conventions, trait organization"] - fn encode_utf8<'a>(&self, dst: &'a mut [u8]) -> Option { + fn encode_utf8(self, dst: &mut [u8]) -> Option { // Marked #[inline] to allow llvm optimizing it away - let code = *self as u32; + let code = self as u32; if code < MAX_ONE_B && dst.len() >= 1 { dst[0] = code as u8; Some(1) @@ -288,9 +288,9 @@ impl Char for char { #[inline] #[unstable = "pending error conventions, trait organization"] - fn encode_utf16(&self, dst: &mut [u16]) -> Option { + fn encode_utf16(self, dst: &mut [u16]) -> Option { // Marked #[inline] to allow llvm optimizing it away - let mut ch = *self as u32; + let mut ch = self as u32; if (ch & 0xFFFF_u32) == ch && dst.len() >= 1 { // The BMP falls through (assuming non-surrogate, as it should) dst[0] = ch as u16; -- cgit 1.4.1-3-g733a5 From 01417f245cad2dc7dcafcf285ed6c1be163ac3a5 Mon Sep 17 00:00:00 2001 From: Huon Wilson Date: Tue, 30 Dec 2014 13:36:24 +1100 Subject: Mark the contents of `char` stable. --- src/libcore/char.rs | 46 +++++++++++++++++++++++++--------------------- 1 file changed, 25 insertions(+), 21 deletions(-) (limited to 'src/libcore') diff --git a/src/libcore/char.rs b/src/libcore/char.rs index 332c002451f..708b0bf8637 100644 --- a/src/libcore/char.rs +++ b/src/libcore/char.rs @@ -69,7 +69,7 @@ pub const MAX: char = '\u{10ffff}'; /// Converts from `u32` to a `char` #[inline] -#[unstable = "pending decisions about costructors for primitives"] +#[stable] pub fn from_u32(i: u32) -> Option { // catch out-of-bounds and surrogates if (i > MAX as u32) || (i >= 0xD800 && i <= 0xDFFF) { @@ -92,7 +92,7 @@ pub fn from_u32(i: u32) -> Option { /// Panics if given an `radix` > 36. /// #[inline] -#[unstable = "pending decisions about costructors for primitives"] +#[unstable = "pending integer conventions"] pub fn from_digit(num: uint, radix: uint) -> Option { if radix > 36 { panic!("from_digit: radix is too high (maximum 36)"); @@ -111,7 +111,7 @@ pub fn from_digit(num: uint, radix: uint) -> Option { } /// Basic `char` manipulations. -#[experimental = "trait organization may change"] +#[stable] pub trait Char { /// Checks if a `char` parses as a numeric digit in the given radix. /// @@ -126,7 +126,7 @@ pub trait Char { /// # Panics /// /// Panics if given a radix > 36. - #[unstable = "pending error conventions"] + #[unstable = "pending integer conventions"] fn is_digit(self, radix: uint) -> bool; /// Converts a character to the corresponding digit. @@ -140,7 +140,7 @@ pub trait Char { /// # Panics /// /// Panics if given a radix outside the range [0..36]. - #[unstable = "pending error conventions, trait organization"] + #[unstable = "pending integer conventions"] fn to_digit(self, radix: uint) -> Option; /// Returns an iterator that yields the hexadecimal Unicode escape @@ -149,7 +149,7 @@ pub trait Char { /// All characters are escaped with Rust syntax of the form `\\u{NNNN}` /// where `NNNN` is the shortest hexadecimal representation of the code /// point. - #[unstable = "pending error conventions, trait organization"] + #[stable] fn escape_unicode(self) -> EscapeUnicode; /// Returns an iterator that yields the 'default' ASCII and @@ -164,17 +164,17 @@ pub trait Char { /// escaped. /// * Any other chars in the range [0x20,0x7e] are not escaped. /// * Any other chars are given hex Unicode escapes; see `escape_unicode`. - #[unstable = "pending error conventions, trait organization"] + #[stable] fn escape_default(self) -> EscapeDefault; /// Returns the amount of bytes this character would need if encoded in /// UTF-8. - #[unstable = "pending trait organization"] + #[stable] fn len_utf8(self) -> uint; /// Returns the amount of bytes this character would need if encoded in /// UTF-16. - #[unstable = "pending trait organization"] + #[stable] fn len_utf16(self) -> uint; /// Encodes this character as UTF-8 into the provided byte buffer, @@ -182,7 +182,7 @@ pub trait Char { /// /// If the buffer is not large enough, nothing will be written into it /// and a `None` will be returned. - #[unstable = "pending trait organization"] + #[stable] fn encode_utf8(self, dst: &mut [u8]) -> Option; /// Encodes this character as UTF-16 into the provided `u16` buffer, @@ -190,13 +190,13 @@ pub trait Char { /// /// If the buffer is not large enough, nothing will be written into it /// and a `None` will be returned. - #[unstable = "pending trait organization"] + #[stable] fn encode_utf16(self, dst: &mut [u16]) -> Option; } -#[experimental = "trait is experimental"] -impl Char for char { - #[unstable = "pending trait organization"] +#[stable] +impl CharExt for char { + #[unstable = "pending integer conventions"] fn is_digit(self, radix: uint) -> bool { match self.to_digit(radix) { Some(_) => true, @@ -204,7 +204,7 @@ impl Char for char { } } - #[unstable = "pending trait organization"] + #[unstable = "pending integer conventions"] fn to_digit(self, radix: uint) -> Option { if radix > 36 { panic!("to_digit: radix is too high (maximum 36)"); @@ -219,12 +219,12 @@ impl Char for char { else { None } } - #[unstable = "pending error conventions, trait organization"] + #[stable] fn escape_unicode(self) -> EscapeUnicode { EscapeUnicode { c: self, state: EscapeUnicodeState::Backslash } } - #[unstable = "pending error conventions, trait organization"] + #[stable] fn escape_default(self) -> EscapeDefault { let init_state = match self { '\t' => EscapeDefaultState::Backslash('t'), @@ -240,7 +240,7 @@ impl Char for char { } #[inline] - #[unstable = "pending trait organization"] + #[stable] fn len_utf8(self) -> uint { let code = self as u32; match () { @@ -252,14 +252,14 @@ impl Char for char { } #[inline] - #[unstable = "pending trait organization"] + #[stable] fn len_utf16(self) -> uint { let ch = self as u32; if (ch & 0xFFFF_u32) == ch { 1 } else { 2 } } #[inline] - #[unstable = "pending error conventions, trait organization"] + #[unstable = "pending decision about Iterator/Writer/Reader"] fn encode_utf8(self, dst: &mut [u8]) -> Option { // Marked #[inline] to allow llvm optimizing it away let code = self as u32; @@ -287,7 +287,7 @@ impl Char for char { } #[inline] - #[unstable = "pending error conventions, trait organization"] + #[unstable = "pending decision about Iterator/Writer/Reader"] fn encode_utf16(self, dst: &mut [u16]) -> Option { // Marked #[inline] to allow llvm optimizing it away let mut ch = self as u32; @@ -310,6 +310,7 @@ impl Char for char { /// An iterator over the characters that represent a `char`, as escaped by /// Rust's unicode escaping rules. #[derive(Clone)] +#[stable] pub struct EscapeUnicode { c: char, state: EscapeUnicodeState @@ -325,6 +326,7 @@ enum EscapeUnicodeState { Done, } +#[stable] impl Iterator for EscapeUnicode { type Item = char; @@ -370,6 +372,7 @@ impl Iterator for EscapeUnicode { /// An iterator over the characters that represent a `char`, escaped /// for maximum portability. #[derive(Clone)] +#[stable] pub struct EscapeDefault { state: EscapeDefaultState } @@ -382,6 +385,7 @@ enum EscapeDefaultState { Unicode(EscapeUnicode), } +#[stable] impl Iterator for EscapeDefault { type Item = char; -- cgit 1.4.1-3-g733a5 From 19120209d8e532514203d16a2cff0ad3b44de3bb Mon Sep 17 00:00:00 2001 From: Huon Wilson Date: Tue, 30 Dec 2014 13:53:20 +1100 Subject: Rename `core::char::Char` to `CharExt` to match prelude guidelines. Imports may need to be updated so this is a [breaking-change] --- src/libcollections/lib.rs | 2 +- src/libcollections/str.rs | 2 +- src/libcore/char.rs | 2 +- src/libcore/fmt/float.rs | 2 +- src/libcore/fmt/mod.rs | 6 +++--- src/libcore/num/mod.rs | 2 +- src/libcore/prelude.rs | 2 +- src/librustdoc/clean/mod.rs | 1 - src/libstd/io/mod.rs | 2 +- src/libstd/prelude/v1.rs | 2 +- src/libunicode/lib.rs | 2 +- 11 files changed, 12 insertions(+), 13 deletions(-) (limited to 'src/libcore') diff --git a/src/libcollections/lib.rs b/src/libcollections/lib.rs index 944b224fed8..bf3b35b4f68 100644 --- a/src/libcollections/lib.rs +++ b/src/libcollections/lib.rs @@ -103,7 +103,7 @@ mod std { mod prelude { // from core. pub use core::borrow::IntoCow; - pub use core::char::Char; + pub use core::char::CharExt; pub use core::clone::Clone; pub use core::cmp::{PartialEq, Eq, PartialOrd, Ord}; pub use core::cmp::Ordering::{Less, Equal, Greater}; diff --git a/src/libcollections/str.rs b/src/libcollections/str.rs index ed6a957d2ac..ecf17820d2d 100644 --- a/src/libcollections/str.rs +++ b/src/libcollections/str.rs @@ -55,7 +55,7 @@ use self::RecompositionState::*; use self::DecompositionType::*; use core::borrow::{BorrowFrom, ToOwned}; -use core::char::Char; +use core::char::CharExt; use core::clone::Clone; use core::iter::AdditiveIterator; use core::iter::{range, Iterator, IteratorExt}; diff --git a/src/libcore/char.rs b/src/libcore/char.rs index 708b0bf8637..ce530ae1d32 100644 --- a/src/libcore/char.rs +++ b/src/libcore/char.rs @@ -112,7 +112,7 @@ pub fn from_digit(num: uint, radix: uint) -> Option { /// Basic `char` manipulations. #[stable] -pub trait Char { +pub trait CharExt { /// Checks if a `char` parses as a numeric digit in the given radix. /// /// Compared to `is_numeric()`, this function only recognizes the characters diff --git a/src/libcore/fmt/float.rs b/src/libcore/fmt/float.rs index 9e62226220c..f63242b4f85 100644 --- a/src/libcore/fmt/float.rs +++ b/src/libcore/fmt/float.rs @@ -15,7 +15,7 @@ pub use self::SignificantDigits::*; pub use self::SignFormat::*; use char; -use char::Char; +use char::CharExt; use fmt; use iter::{IteratorExt, range}; use num::{cast, Float, ToPrimitive}; diff --git a/src/libcore/fmt/mod.rs b/src/libcore/fmt/mod.rs index f49f87ff329..102836f8d30 100644 --- a/src/libcore/fmt/mod.rs +++ b/src/libcore/fmt/mod.rs @@ -388,7 +388,7 @@ impl<'a> Formatter<'a> { prefix: &str, buf: &str) -> Result { - use char::Char; + use char::CharExt; use fmt::rt::{FlagAlternate, FlagSignPlus, FlagSignAwareZeroPad}; let mut width = buf.len(); @@ -504,7 +504,7 @@ impl<'a> Formatter<'a> { fn with_padding(&mut self, padding: uint, default: rt::Alignment, f: F) -> Result where F: FnOnce(&mut Formatter) -> Result, { - use char::Char; + use char::CharExt; let align = match self.align { rt::AlignUnknown => default, _ => self.align @@ -613,7 +613,7 @@ impl Show for str { impl Show for char { fn fmt(&self, f: &mut Formatter) -> Result { - use char::Char; + use char::CharExt; let mut utf8 = [0u8; 4]; let amt = self.encode_utf8(&mut utf8).unwrap_or(0); diff --git a/src/libcore/num/mod.rs b/src/libcore/num/mod.rs index 6c3b153c000..426c858d408 100644 --- a/src/libcore/num/mod.rs +++ b/src/libcore/num/mod.rs @@ -15,7 +15,7 @@ #![stable] #![allow(missing_docs)] -use char::Char; +use char::CharExt; use clone::Clone; use cmp::{PartialEq, Eq}; use cmp::{PartialOrd, Ord}; diff --git a/src/libcore/prelude.rs b/src/libcore/prelude.rs index 64f13a8f123..d4aca1bb73c 100644 --- a/src/libcore/prelude.rs +++ b/src/libcore/prelude.rs @@ -38,7 +38,7 @@ pub use mem::drop; // Reexported types and traits -pub use char::Char; +pub use char::CharExt; pub use clone::Clone; pub use cmp::{PartialEq, PartialOrd, Eq, Ord}; pub use iter::{Extend, IteratorExt}; diff --git a/src/librustdoc/clean/mod.rs b/src/librustdoc/clean/mod.rs index f4d0bb79d88..5f6c62f1d7a 100644 --- a/src/librustdoc/clean/mod.rs +++ b/src/librustdoc/clean/mod.rs @@ -50,7 +50,6 @@ use rustc::session::config; use std::rc::Rc; use std::u32; use std::str::Str as StrTrait; // Conflicts with Str variant -use std::char::Char as CharTrait; // Conflicts with Char variant use std::path::Path as FsPath; // Conflicts with Path struct use core::DocContext; diff --git a/src/libstd/io/mod.rs b/src/libstd/io/mod.rs index ae401a04a96..51bf206f70e 100644 --- a/src/libstd/io/mod.rs +++ b/src/libstd/io/mod.rs @@ -225,7 +225,7 @@ pub use self::FileMode::*; pub use self::FileAccess::*; pub use self::IoErrorKind::*; -use char::Char; +use char::CharExt; use clone::Clone; use default::Default; use error::{FromError, Error}; diff --git a/src/libstd/prelude/v1.rs b/src/libstd/prelude/v1.rs index a122cb81b8c..eda20fc7d60 100644 --- a/src/libstd/prelude/v1.rs +++ b/src/libstd/prelude/v1.rs @@ -22,7 +22,7 @@ // Reexported types and traits #[stable] #[doc(no_inline)] pub use boxed::Box; -#[stable] #[doc(no_inline)] pub use char::{Char, UnicodeChar}; +#[stable] #[doc(no_inline)] pub use char::{CharExt, UnicodeChar}; #[stable] #[doc(no_inline)] pub use clone::Clone; #[stable] #[doc(no_inline)] pub use cmp::{PartialEq, PartialOrd, Eq, Ord}; #[stable] #[doc(no_inline)] pub use iter::CloneIteratorExt; diff --git a/src/libunicode/lib.rs b/src/libunicode/lib.rs index 1a619e57a9c..170700fb4d5 100644 --- a/src/libunicode/lib.rs +++ b/src/libunicode/lib.rs @@ -58,7 +58,7 @@ mod u_str; /// however the converse is not always true due to the above range limits /// and, as such, should be performed via the `from_u32` function.. pub mod char { - pub use core::char::{MAX, from_u32, from_digit, Char}; + pub use core::char::{MAX, from_u32, from_digit, CharExt}; pub use normalize::{decompose_canonical, decompose_compatible, compose}; -- cgit 1.4.1-3-g733a5 From 990a79f097e8e74308bfec6d72dcdbb769a7973b Mon Sep 17 00:00:00 2001 From: Huon Wilson Date: Sun, 4 Jan 2015 01:19:03 +1100 Subject: char: small tweak since `is_some` > equivalent `match`. --- src/libcore/char.rs | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) (limited to 'src/libcore') diff --git a/src/libcore/char.rs b/src/libcore/char.rs index ce530ae1d32..291b7f2ece4 100644 --- a/src/libcore/char.rs +++ b/src/libcore/char.rs @@ -198,10 +198,7 @@ pub trait CharExt { impl CharExt for char { #[unstable = "pending integer conventions"] fn is_digit(self, radix: uint) -> bool { - match self.to_digit(radix) { - Some(_) => true, - None => false, - } + self.to_digit(radix).is_some() } #[unstable = "pending integer conventions"] -- cgit 1.4.1-3-g733a5