Rollup merge of #106662 - Ezrashaw:specialize-bool-tostring, r=cuviper

specialize impl of `ToString` on `bool`

Fixes #106611

Specialize `bool`s `ToString` impl by copying it from `Display`. This is a significant optimization as we avoid lots of dynamic dispatch. AFAIK, this doesn't require a API Change Proposal as this doesn't regress existing code and can be undone without regressing code.
This commit is contained in:
Yuki Okushi 2023-01-11 14:18:56 +09:00 committed by GitHub
commit feca61e5eb
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -2548,6 +2548,15 @@ fn to_string(&self) -> String {
}
}
#[cfg(not(no_global_oom_handling))]
#[stable(feature = "bool_to_string_specialization", since = "CURRENT_RUSTC_VERSION")]
impl ToString for bool {
#[inline]
fn to_string(&self) -> String {
String::from(if *self { "true" } else { "false" })
}
}
#[cfg(not(no_global_oom_handling))]
#[stable(feature = "u8_to_string_specialization", since = "1.54.0")]
impl ToString for u8 {