@@ -2647,37 +2647,50 @@ impl ToString for i8 {
26472647// for strings, including `&&&str`s that would never be written
26482648// by hand. This macro generates twelve layers of nested `&`-impl
26492649// for primitive strings.
2650- macro_rules! to_string_str {
2651- { type ; x $( $x: ident) * } => {
2652- & to_string_str! { type ; $( $x) * }
2653- } ;
2654- { type ; } => { str } ;
2655- { impl ; x $( $x: ident) * } => {
2656- to_string_str! { $( $x) * }
2650+ #[ cfg( not( no_global_oom_handling) ) ]
2651+ macro_rules! to_string_str_wrap_in_ref {
2652+ { x $( $x: ident) * } => {
2653+ & to_string_str_wrap_in_ref! { $( $x) * }
26572654 } ;
2658- { impl ; } => { } ;
2655+ { } => { str } ;
2656+ }
2657+ #[ cfg( not( no_global_oom_handling) ) ]
2658+ macro_rules! to_string_expr_wrap_in_deref {
26592659 { $self: expr ; x $( $x: ident) * } => {
2660- * ( to_string_str ! { $self ; $( $x) * } )
2660+ * ( to_string_expr_wrap_in_deref ! { $self ; $( $x) * } )
26612661 } ;
26622662 { $self: expr ; } => { $self } ;
2663- { $( $x: ident) * } => {
2664- #[ doc( hidden) ]
2665- #[ cfg( not( no_global_oom_handling) ) ]
2666- #[ stable( feature = "str_to_string_specialization" , since = "1.9.0" ) ]
2667- impl ToString for to_string_str!( type ; $( $x) * ) {
2668- #[ inline]
2669- fn to_string( & self ) -> String {
2670- String :: from( to_string_str!( self ; $( $x) * ) )
2663+ }
2664+ #[ cfg( not( no_global_oom_handling) ) ]
2665+ macro_rules! to_string_str {
2666+ { $( $( $x: ident) * ) ,+} => {
2667+ $(
2668+ #[ doc( hidden) ]
2669+ #[ stable( feature = "str_to_string_specialization" , since = "1.9.0" ) ]
2670+ impl ToString for to_string_str_wrap_in_ref!( $( $x) * ) {
2671+ #[ inline]
2672+ fn to_string( & self ) -> String {
2673+ String :: from( to_string_expr_wrap_in_deref!( self ; $( $x) * ) )
2674+ }
26712675 }
2672- }
2673- to_string_str! { impl ; $( $x) * }
2676+ ) +
26742677 } ;
26752678}
26762679
2680+ #[ cfg( not( no_global_oom_handling) ) ]
26772681to_string_str ! {
2678- x x x x
2679- x x x x
2680- x x x x
2682+ x x x x x x x x x x x x,
2683+ x x x x x x x x x x x,
2684+ x x x x x x x x x x,
2685+ x x x x x x x x x,
2686+ x x x x x x x x,
2687+ x x x x x x x,
2688+ x x x x x x,
2689+ x x x x x,
2690+ x x x x,
2691+ x x x,
2692+ x x,
2693+ x,
26812694}
26822695
26832696#[ doc( hidden) ]
0 commit comments