@@ -33,21 +33,20 @@ fn max_value_of(ty: &str) -> Option<usize> {
33
33
34
34
fn fold_expr ( expr : & syn:: Expr ) -> u64 {
35
35
use syn:: Expr ;
36
- match expr{
37
- & Expr :: Lit ( ref expr_lit) => {
36
+ match expr {
37
+ Expr :: Lit ( ref expr_lit) => {
38
38
match expr_lit. lit {
39
39
syn:: Lit :: Int ( ref lit_int) => lit_int. base10_parse ( ) . expect ( "Int literal out of range" ) ,
40
40
_ => panic ! ( "Only Int literals are supported" )
41
41
}
42
42
} ,
43
- & Expr :: Binary ( ref expr_binary) => {
43
+ Expr :: Binary ( ref expr_binary) => {
44
44
let l = fold_expr ( & expr_binary. left ) ;
45
45
let r = fold_expr ( & expr_binary. right ) ;
46
46
match & expr_binary. op {
47
47
syn:: BinOp :: Shl ( _) => l << r,
48
48
op => panic ! ( "{} not supported" , op. to_token_stream( ) )
49
49
}
50
-
51
50
}
52
51
_ => panic ! ( "Only literals are supported" )
53
52
}
@@ -76,13 +75,17 @@ fn extract_repr(attrs: &[syn::Attribute]) -> Option<syn::Ident> {
76
75
} )
77
76
. nth ( 0 )
78
77
}
78
+
79
79
fn gen_enumflags ( ident : & Ident , item : & DeriveInput , data : & DataEnum ) -> TokenStream {
80
80
let span = Span :: call_site ( ) ;
81
81
let variants = data. variants . iter ( ) . map ( |v| & v. ident ) ;
82
- let flag_values: Vec < _ > = data. variants . iter ( )
83
- . map ( |v| v. discriminant . as_ref ( ) . map ( |d| fold_expr ( & d. 1 ) ) . expect ( "No discriminant" ) ) . collect ( ) ;
82
+ let flag_values: Vec < _ > =
83
+ data. variants . iter ( )
84
+ . map ( |v| v. discriminant . as_ref ( )
85
+ . map ( |d| fold_expr ( & d. 1 ) ) . expect ( "No discriminant" ) )
86
+ . collect ( ) ;
84
87
let variants_len = flag_values. len ( ) ;
85
- assert ! ( flag_values. iter( ) . find ( |&& v| v == 0 ) . is_none ( ) , "Null flag is not allowed" ) ;
88
+ assert ! ( flag_values. iter( ) . all ( |& v| v != 0 ) , "Null flag is not allowed" ) ;
86
89
let names = flag_values. iter ( ) . map ( |_| & ident) ;
87
90
let ty = extract_repr ( & item. attrs ) . unwrap_or ( Ident :: new ( "usize" , span) ) ;
88
91
let max_flag_value = flag_values. iter ( ) . max ( ) . unwrap ( ) ;
@@ -109,7 +112,7 @@ fn gen_enumflags(ident: &Ident, item: &DeriveInput, data: &DataEnum) -> TokenStr
109
112
} )
110
113
. collect ( ) ;
111
114
assert ! (
112
- wrong_flag_values. len ( ) == 0 ,
115
+ wrong_flag_values. is_empty ( ) ,
113
116
format!(
114
117
"The following flags are not unique: {data:?}" ,
115
118
data = wrong_flag_values
0 commit comments