From 3f404bfa86ac387228026ad01d29354b7651bceb Mon Sep 17 00:00:00 2001 From: Conrad Ludgate Date: Sat, 28 May 2022 11:01:09 +0100 Subject: [PATCH 1/2] improve format impl for literals --- library/alloc/src/fmt.rs | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/library/alloc/src/fmt.rs b/library/alloc/src/fmt.rs index 73b75ea4d83d5..a92bdd50cdad6 100644 --- a/library/alloc/src/fmt.rs +++ b/library/alloc/src/fmt.rs @@ -604,9 +604,15 @@ use crate::string; #[cfg(not(no_global_oom_handling))] #[must_use] #[stable(feature = "rust1", since = "1.0.0")] +#[inline] pub fn format(args: Arguments<'_>) -> string::String { - let capacity = args.estimated_capacity(); - let mut output = string::String::with_capacity(capacity); - output.write_fmt(args).expect("a formatting trait implementation returned an error"); - output + #[cold] + fn format_cold(args: Arguments<'_>) -> string::String { + let capacity = args.estimated_capacity(); + let mut output = string::String::with_capacity(capacity); + output.write_fmt(args).expect("a formatting trait implementation returned an error"); + output + } + + args.as_str().map_or_else(|| format_cold(args), crate::borrow::ToOwned::to_owned) } From 5dd0fe301ac0180afddc12ad3124ab0a1f813298 Mon Sep 17 00:00:00 2001 From: Conrad Ludgate Date: Sat, 28 May 2022 12:08:27 +0100 Subject: [PATCH 2/2] remove useless cold --- library/alloc/src/fmt.rs | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/library/alloc/src/fmt.rs b/library/alloc/src/fmt.rs index a92bdd50cdad6..ed398b56612ce 100644 --- a/library/alloc/src/fmt.rs +++ b/library/alloc/src/fmt.rs @@ -606,13 +606,12 @@ use crate::string; #[stable(feature = "rust1", since = "1.0.0")] #[inline] pub fn format(args: Arguments<'_>) -> string::String { - #[cold] - fn format_cold(args: Arguments<'_>) -> string::String { + fn format_inner(args: Arguments<'_>) -> string::String { let capacity = args.estimated_capacity(); let mut output = string::String::with_capacity(capacity); output.write_fmt(args).expect("a formatting trait implementation returned an error"); output } - args.as_str().map_or_else(|| format_cold(args), crate::borrow::ToOwned::to_owned) + args.as_str().map_or_else(|| format_inner(args), crate::borrow::ToOwned::to_owned) }