@@ -113,46 +113,45 @@ macro_rules! argument_new {
113
113
} ;
114
114
}
115
115
116
- #[ rustc_diagnostic_item = "ArgumentMethods" ]
117
116
impl Argument < ' _ > {
118
117
#[ inline]
119
- pub fn new_display < T : Display > ( x : & T ) -> Argument < ' _ > {
118
+ pub const fn new_display < T : Display > ( x : & T ) -> Argument < ' _ > {
120
119
argument_new ! ( T , x, <T as Display >:: fmt)
121
120
}
122
121
#[ inline]
123
- pub fn new_debug < T : Debug > ( x : & T ) -> Argument < ' _ > {
122
+ pub const fn new_debug < T : Debug > ( x : & T ) -> Argument < ' _ > {
124
123
argument_new ! ( T , x, <T as Debug >:: fmt)
125
124
}
126
125
#[ inline]
127
- pub fn new_debug_noop < T : Debug > ( x : & T ) -> Argument < ' _ > {
126
+ pub const fn new_debug_noop < T : Debug > ( x : & T ) -> Argument < ' _ > {
128
127
argument_new ! ( T , x, |_: & T , _| Ok ( ( ) ) )
129
128
}
130
129
#[ inline]
131
- pub fn new_octal < T : Octal > ( x : & T ) -> Argument < ' _ > {
130
+ pub const fn new_octal < T : Octal > ( x : & T ) -> Argument < ' _ > {
132
131
argument_new ! ( T , x, <T as Octal >:: fmt)
133
132
}
134
133
#[ inline]
135
- pub fn new_lower_hex < T : LowerHex > ( x : & T ) -> Argument < ' _ > {
134
+ pub const fn new_lower_hex < T : LowerHex > ( x : & T ) -> Argument < ' _ > {
136
135
argument_new ! ( T , x, <T as LowerHex >:: fmt)
137
136
}
138
137
#[ inline]
139
- pub fn new_upper_hex < T : UpperHex > ( x : & T ) -> Argument < ' _ > {
138
+ pub const fn new_upper_hex < T : UpperHex > ( x : & T ) -> Argument < ' _ > {
140
139
argument_new ! ( T , x, <T as UpperHex >:: fmt)
141
140
}
142
141
#[ inline]
143
- pub fn new_pointer < T : Pointer > ( x : & T ) -> Argument < ' _ > {
142
+ pub const fn new_pointer < T : Pointer > ( x : & T ) -> Argument < ' _ > {
144
143
argument_new ! ( T , x, <T as Pointer >:: fmt)
145
144
}
146
145
#[ inline]
147
- pub fn new_binary < T : Binary > ( x : & T ) -> Argument < ' _ > {
146
+ pub const fn new_binary < T : Binary > ( x : & T ) -> Argument < ' _ > {
148
147
argument_new ! ( T , x, <T as Binary >:: fmt)
149
148
}
150
149
#[ inline]
151
- pub fn new_lower_exp < T : LowerExp > ( x : & T ) -> Argument < ' _ > {
150
+ pub const fn new_lower_exp < T : LowerExp > ( x : & T ) -> Argument < ' _ > {
152
151
argument_new ! ( T , x, <T as LowerExp >:: fmt)
153
152
}
154
153
#[ inline]
155
- pub fn new_upper_exp < T : UpperExp > ( x : & T ) -> Argument < ' _ > {
154
+ pub const fn new_upper_exp < T : UpperExp > ( x : & T ) -> Argument < ' _ > {
156
155
argument_new ! ( T , x, <T as UpperExp >:: fmt)
157
156
}
158
157
#[ inline]
@@ -203,15 +202,8 @@ impl Argument<'_> {
203
202
/// let f = format_args!("{}", "a");
204
203
/// println!("{f}");
205
204
/// ```
206
- ///
207
- /// This function should _not_ be const, to make sure we don't accept
208
- /// format_args!() and panic!() with arguments in const, even when not evaluated:
209
- ///
210
- /// ```compile_fail,E0015
211
- /// const _: () = if false { panic!("a {}", "a") };
212
- /// ```
213
205
#[ inline]
214
- pub fn none ( ) -> [ Self ; 0 ] {
206
+ pub const fn none ( ) -> [ Self ; 0 ] {
215
207
[ ]
216
208
}
217
209
}
@@ -246,8 +238,15 @@ impl<'a> Arguments<'a> {
246
238
247
239
/// When using the format_args!() macro, this function is used to generate the
248
240
/// Arguments structure.
241
+ ///
242
+ /// This function should _not_ be const, to make sure we don't accept
243
+ /// format_args!() and panic!() with arguments in const, even when not evaluated:
244
+ ///
245
+ /// ```compile_fail,E0015
246
+ /// const _: () = if false { panic!("a {}", "a") };
247
+ /// ```
249
248
#[ inline]
250
- pub const fn new_v1 < const P : usize , const A : usize > (
249
+ pub fn new_v1 < const P : usize , const A : usize > (
251
250
pieces : & ' a [ & ' static str ; P ] ,
252
251
args : & ' a [ rt:: Argument < ' a > ; A ] ,
253
252
) -> Arguments < ' a > {
@@ -262,8 +261,15 @@ impl<'a> Arguments<'a> {
262
261
/// 1. The `pieces` slice must be at least as long as `fmt`.
263
262
/// 2. Every `rt::Placeholder::position` value within `fmt` must be a valid index of `args`.
264
263
/// 3. Every `rt::Count::Param` within `fmt` must contain a valid index of `args`.
264
+ ///
265
+ /// This function should _not_ be const, to make sure we don't accept
266
+ /// format_args!() and panic!() with arguments in const, even when not evaluated:
267
+ ///
268
+ /// ```compile_fail,E0015
269
+ /// const _: () = if false { panic!("a {:1}", "a") };
270
+ /// ```
265
271
#[ inline]
266
- pub const fn new_v1_formatted (
272
+ pub fn new_v1_formatted (
267
273
pieces : & ' a [ & ' static str ] ,
268
274
args : & ' a [ rt:: Argument < ' a > ] ,
269
275
fmt : & ' a [ rt:: Placeholder ] ,
0 commit comments