Remove the need to provide the maximum number of digits to `impl_Disp… · qinheping/verify-rust-std@4451aee (original) (raw)
`@@ -208,7 +208,7 @@ static DEC_DIGITS_LUT: &[u8; 200] = b"0001020304050607080910111213141516171819\
`
208
208
` 8081828384858687888990919293949596979899";
`
209
209
``
210
210
`macro_rules! impl_Display {
`
211
``
`-
($($t:ident => size:literalsize:literal size:literal(as positive:ident)?namedpositive:ident)? named positive:ident)?namedname:ident,)* ; as u:identviau:ident via u:identviaconv_fn:ident named $gen_name:ident) => {
`
``
211
`+
($($t:ident (as(as (aspositive:ident)? named name:ident,)∗;asname:ident,)* ; as name:ident,)∗;asu:ident via convfn:identnamedconv_fn:ident named convfn:identnamedgen_name:ident) => {
`
212
212
``
213
213
` $(
`
214
214
` #[stable(feature = "rust1", since = "1.0.0")]
`
`@@ -248,8 +248,9 @@ macro_rules! impl_Display {
`
248
248
` #[cfg(not(feature = "optimize_for_size"))]
`
249
249
`impl $t {
`
250
250
`fn _fmt(mut self: $t, is_nonnegative: bool, f: &mut fmt::Formatter<'_>) -> fmt::Result {
`
251
``
`-
let mut buf = [MaybeUninit::::uninit(); $size];
`
252
``
`-
let mut curr = $size;
`
``
251
`+
const SIZE: usize = $t::MAX.ilog(10) as usize + 1;
`
``
252
`+
let mut buf = [MaybeUninit::::uninit(); SIZE];
`
``
253
`+
let mut curr = SIZE;
`
253
254
`let buf_ptr = MaybeUninit::slice_as_mut_ptr(&mut buf);
`
254
255
`let lut_ptr = DEC_DIGITS_LUT.as_ptr();
`
255
256
``
`@@ -526,16 +527,16 @@ macro_rules! impl_Exp {
`
526
527
`mod imp {
`
527
528
`use super::*;
`
528
529
`impl_Display!(
`
529
``
`-
i8 => 3 as u8 named fmt_i8,
`
530
``
`-
u8 => 3 named fmt_u8,
`
531
``
`-
i16 => 5 as u16 named fmt_i16,
`
532
``
`-
u16 => 5 named fmt_u16,
`
533
``
`-
i32 => 10 as u32 named fmt_i32,
`
534
``
`-
u32 => 10 named fmt_u32,
`
535
``
`-
i64 => 19 as u64 named fmt_i64,
`
536
``
`-
u64 => 20 named fmt_u64,
`
537
``
`-
isize => 19 as usize named fmt_isize,
`
538
``
`-
usize => 20 named fmt_usize,
`
``
530
`+
i8 as u8 named fmt_i8,
`
``
531
`+
u8 named fmt_u8,
`
``
532
`+
i16 as u16 named fmt_i16,
`
``
533
`+
u16 named fmt_u16,
`
``
534
`+
i32 as u32 named fmt_i32,
`
``
535
`+
u32 named fmt_u32,
`
``
536
`+
i64 as u64 named fmt_i64,
`
``
537
`+
u64 named fmt_u64,
`
``
538
`+
isize as usize named fmt_isize,
`
``
539
`+
usize named fmt_usize,
`
539
540
`; as u64 via to_u64 named fmt_u64
`
540
541
`);
`
541
542
`impl_Exp!(
`
`@@ -548,18 +549,18 @@ mod imp {
`
548
549
`mod imp {
`
549
550
`use super::*;
`
550
551
`impl_Display!(
`
551
``
`-
i8 => 3 as u8 named fmt_i8,
`
552
``
`-
u8 => 3 named fmt_u8,
`
553
``
`-
i16 => 5 as u16 named fmt_i16,
`
554
``
`-
u16 => 5 named fmt_u16,
`
555
``
`-
i32 => 10 as u32 named fmt_i32,
`
556
``
`-
u32 => 10 named fmt_u32,
`
557
``
`-
isize => 19 as usize named fmt_isize,
`
558
``
`-
usize => 20 named fmt_usize,
`
``
552
`+
i8 as u8 named fmt_i8,
`
``
553
`+
u8 named fmt_u8,
`
``
554
`+
i16 as u16 named fmt_i16,
`
``
555
`+
u16 named fmt_u16,
`
``
556
`+
i32 as u32 named fmt_i32,
`
``
557
`+
u32 named fmt_u32,
`
``
558
`+
isize as usize named fmt_isize,
`
``
559
`+
usize named fmt_usize,
`
559
560
`; as u32 via to_u32 named fmt_u32);
`
560
561
`impl_Display!(
`
561
``
`-
i64 => 19 as u64 named fmt_i64,
`
562
``
`-
u64 => 20 named fmt_u64,
`
``
562
`+
i64 as u64 named fmt_i64,
`
``
563
`+
u64 named fmt_u64,
`
563
564
`; as u64 via to_u64 named fmt_u64);
`
564
565
``
565
566
`impl_Exp!(i8, u8, i16, u16, i32, u32, isize, usize as u32 via to_u32 named exp_u32);
`