@@ -338,23 +338,19 @@ pub struct Arguments<'a> {
338
338
impl < ' a > Arguments < ' a > {
339
339
#[ inline]
340
340
#[ rustc_const_unstable( feature = "const_fmt_arguments_new" , issue = "none" ) ]
341
- pub const fn new_const ( pieces : & ' a [ & ' static str ] ) -> Self {
342
- if pieces. len ( ) > 1 {
343
- // Since panic!() expands to panic_fmt(format_args!()), using panic! here is both a
344
- // bit silly and also significantly increases the amount of MIR generated by panics.
345
- crate :: panicking:: panic_nounwind ( "invalid args" ) ;
346
- }
341
+ pub const fn new_const < const N : usize > ( pieces : & ' a [ & ' static str ; N ] ) -> Self {
342
+ const { assert ! ( N <= 1 ) } ;
347
343
Arguments { pieces, fmt : None , args : & [ ] }
348
344
}
349
345
350
346
/// When using the format_args!() macro, this function is used to generate the
351
347
/// Arguments structure.
352
348
#[ inline]
353
- pub fn new_v1 ( pieces : & ' a [ & ' static str ] , args : & ' a [ rt :: Argument < ' a > ] ) -> Arguments < ' a > {
354
- if pieces. len ( ) < args . len ( ) || pieces . len ( ) > args . len ( ) + 1 {
355
- // See Arguments::new_const for why we don't use panic!.
356
- crate :: panicking :: panic_nounwind ( "invalid args" ) ;
357
- }
349
+ pub fn new_v1 < const P : usize , const A : usize > (
350
+ pieces : & ' a [ & ' static str ; P ] ,
351
+ args : & ' a [ rt :: Argument < ' a > ; A ] ,
352
+ ) -> Arguments < ' a > {
353
+ const { assert ! ( P >= A && P <= A + 1 , "invalid args" ) }
358
354
Arguments { pieces, fmt : None , args }
359
355
}
360
356
0 commit comments