Auto merge of #32586 - seanmonstar:speialize-to-string, r=alexcrichton

specialize ToString for str

If there was some conditional compiling we could do, such that this impl only exists in nightly, and is turned off in beta/stable, I think that'd be an improvement here, as we could test specialization out without affecting stable builds.
This commit is contained in:
bors 2016-03-31 21:18:29 -07:00
commit 3b342fae8e
2 changed files with 10 additions and 1 deletions

View File

@ -48,6 +48,7 @@
#![feature(placement_new_protocol)]
#![feature(shared)]
#![feature(slice_patterns)]
#![feature(specialization)]
#![feature(staged_api)]
#![feature(step_by)]
#![feature(str_char)]

View File

@ -1755,7 +1755,7 @@ pub trait ToString {
#[stable(feature = "rust1", since = "1.0.0")]
impl<T: fmt::Display + ?Sized> ToString for T {
#[inline]
fn to_string(&self) -> String {
default fn to_string(&self) -> String {
use core::fmt::Write;
let mut buf = String::new();
let _ = buf.write_fmt(format_args!("{}", self));
@ -1764,6 +1764,14 @@ impl<T: fmt::Display + ?Sized> ToString for T {
}
}
#[stable(feature = "str_to_string_specialization", since = "1.9.0")]
impl ToString for str {
#[inline]
fn to_string(&self) -> String {
String::from(self)
}
}
#[stable(feature = "rust1", since = "1.0.0")]
impl AsRef<str> for String {
#[inline]