@@ -198,9 +198,16 @@ impl<'a> ArgumentV1<'a> {
198
198
}
199
199
200
200
// flags available in the v1 format of format_args
201
- #[ derive( Copy , Clone ) ]
202
- #[ allow( dead_code) ] // SignMinus isn't currently used
203
- enum FlagV1 { SignPlus , SignMinus , Alternate , SignAwareZeroPad , }
201
+ bitflags ! {
202
+ #[ derive( Copy , Clone ) ]
203
+ #[ allow( dead_code) ] // SignMinus isn't currently used
204
+ flags FlagV1 : u32 {
205
+ const SignPlus = 1 << 0 ,
206
+ const SignMinus = 1 << 1 ,
207
+ const Alternate = 1 << 2 ,
208
+ const SignAwareZeroPad = 1 << 3 ,
209
+ }
210
+ }
204
211
205
212
impl < ' a > Arguments < ' a > {
206
213
/// When using the format_args!() macro, this function is used to generate the
@@ -472,12 +479,12 @@ impl<'a> Formatter<'a> {
472
479
let mut sign = None ;
473
480
if !is_positive {
474
481
sign = Some ( '-' ) ; width += 1 ;
475
- } else if self . flags & ( 1 << ( FlagV1 :: SignPlus as u32 ) ) != 0 {
482
+ } else if self . flags . contains ( FlagV1 :: SignPlus ) {
476
483
sign = Some ( '+' ) ; width += 1 ;
477
484
}
478
485
479
486
let mut prefixed = false ;
480
- if self . flags & ( 1 << ( FlagV1 :: Alternate as u32 ) ) != 0 {
487
+ if self . flags . contains ( FlagV1 :: Alternate ) {
481
488
prefixed = true ; width += prefix. char_len ( ) ;
482
489
}
483
490
@@ -507,7 +514,7 @@ impl<'a> Formatter<'a> {
507
514
}
508
515
// The sign and prefix goes before the padding if the fill character
509
516
// is zero
510
- Some ( min) if self . flags & ( 1 << ( FlagV1 :: SignAwareZeroPad as u32 ) ) != 0 => {
517
+ Some ( min) if self . flags . contains ( FlagV1 :: SignAwareZeroPad ) => {
511
518
self . fill = '0' ;
512
519
try!( write_prefix ( self ) ) ;
513
520
self . with_padding ( min - width, Alignment :: Right , |f| {
@@ -873,8 +880,8 @@ impl<T> Pointer for *const T {
873
880
// it denotes whether to prefix with 0x. We use it to work out whether
874
881
// or not to zero extend, and then unconditionally set it to get the
875
882
// prefix.
876
- if f. flags & 1 << ( FlagV1 :: Alternate as u32 ) > 0 {
877
- f. flags |= 1 << ( FlagV1 :: SignAwareZeroPad as u32 ) ;
883
+ if f. flags . contains ( FlagV1 :: Alternate ) {
884
+ f. flags . insert ( FlagV1 :: SignAwareZeroPad ) ;
878
885
879
886
if let None = f. width {
880
887
// The formats need two extra bytes, for the 0x
@@ -885,7 +892,7 @@ impl<T> Pointer for *const T {
885
892
}
886
893
}
887
894
}
888
- f. flags |= 1 << ( FlagV1 :: Alternate as u32 ) ;
895
+ f. flags . insert ( FlagV1 :: Alternate ) ;
889
896
890
897
let ret = LowerHex :: fmt ( & ( * self as usize ) , f) ;
891
898
0 commit comments