File tree 2 files changed +27
-2
lines changed
2 files changed +27
-2
lines changed Original file line number Diff line number Diff line change @@ -98,6 +98,26 @@ fn gen_iterator(group: &SettingGroup, fmt: &mut Formatter) {
98
98
fmtln ! ( fmt, "}" ) ;
99
99
}
100
100
101
+ /// Generates a `all()` function with all options for this enum
102
+ fn gen_enum_all ( name : & str , values : & [ & ' static str ] , fmt : & mut Formatter ) {
103
+ fmtln ! (
104
+ fmt,
105
+ "/// Returns a slice with all possible [{}] values." ,
106
+ name
107
+ ) ;
108
+ fmtln ! ( fmt, "pub fn all() -> &'static [{}] {{" , name) ;
109
+ fmt. indent ( |fmt| {
110
+ fmtln ! ( fmt, "&[" ) ;
111
+ fmt. indent ( |fmt| {
112
+ for v in values. iter ( ) {
113
+ fmtln ! ( fmt, "Self::{}," , camel_case( v) ) ;
114
+ }
115
+ } ) ;
116
+ fmtln ! ( fmt, "]" ) ;
117
+ } ) ;
118
+ fmtln ! ( fmt, "}" ) ;
119
+ }
120
+
101
121
/// Emit Display and FromStr implementations for enum settings.
102
122
fn gen_to_and_from_str ( name : & str , values : & [ & ' static str ] , fmt : & mut Formatter ) {
103
123
fmtln ! ( fmt, "impl fmt::Display for {} {{" , name) ;
@@ -158,6 +178,12 @@ fn gen_enum_types(group: &SettingGroup, fmt: &mut Formatter) {
158
178
} ) ;
159
179
fmtln ! ( fmt, "}" ) ;
160
180
181
+ fmtln ! ( fmt, "impl {} {{" , name) ;
182
+ fmt. indent ( |fmt| {
183
+ gen_enum_all ( & name, values, fmt) ;
184
+ } ) ;
185
+ fmtln ! ( fmt, "}" ) ;
186
+
161
187
gen_to_and_from_str ( & name, values, fmt) ;
162
188
}
163
189
}
Original file line number Diff line number Diff line change @@ -231,8 +231,7 @@ where
231
231
fn generate_flags ( & mut self ) -> Result < Flags > {
232
232
let mut builder = settings:: builder ( ) ;
233
233
234
- let opt_levels = [ OptLevel :: None , OptLevel :: Speed , OptLevel :: SpeedAndSize ] ;
235
- let opt = self . u . choose ( & opt_levels) ?;
234
+ let opt = self . u . choose ( OptLevel :: all ( ) ) ?;
236
235
builder. set ( "opt_level" , & format ! ( "{}" , opt) [ ..] ) ?;
237
236
238
237
// Boolean flags
You can’t perform that action at this time.
0 commit comments