@@ -155,40 +155,21 @@ impl ToTokens for Enum {
155155
156156 let from_bytes_arms = variants
157157 . iter ( )
158- . map ( |variant| variant. gen_from_bytes ( * rename_all) ) ;
159- let to_str_arms = variants
158+ . map ( |variant| variant. gen_from_bytes ( * rename_all) )
159+ . collect :: < Vec < _ > > ( ) ;
160+ let to_byte_str_arms = variants
160161 . iter ( )
161- . map ( |variant| variant. gen_to_str ( * rename_all) ) ;
162-
163- tokens. append_all ( quote ! {
164- impl #ident {
165- #[ doc( hidden) ]
166- fn __benzina04_from_bytes( val: & [ u8 ] ) -> #crate_name:: __private:: std:: option:: Option <Self > {
167- match val {
168- #( #from_bytes_arms) *
169- _ => #crate_name:: __private:: std:: option:: Option :: None ,
170- }
171- }
172-
173- #[ doc( hidden) ]
174- fn __benzina04_as_str( & self ) -> & ' static str {
175- match self {
176- #( #to_str_arms) *
177- }
178- }
179- }
180- } ) ;
162+ . map ( |variant| variant. gen_to_byte_str ( * rename_all) )
163+ . collect :: < Vec < _ > > ( ) ;
181164
182165 #[ cfg( feature = "postgres" ) ]
183166 tokens. append_all ( quote ! {
184167 #[ automatically_derived]
185168 impl #crate_name:: __private:: diesel:: deserialize:: FromSql <#sql_type, #crate_name:: __private:: diesel:: pg:: Pg > for #ident {
186169 fn from_sql( bytes: #crate_name:: __private:: diesel:: pg:: PgValue <' _>) -> #crate_name:: __private:: diesel:: deserialize:: Result <Self > {
187- match Self :: __benzina04_from_bytes( bytes. as_bytes( ) ) {
188- #crate_name:: __private:: std:: option:: Option :: Some ( this) => {
189- #crate_name:: __private:: std:: result:: Result :: Ok ( this)
190- } ,
191- #crate_name:: __private:: std:: option:: Option :: None => {
170+ match bytes. as_bytes( ) {
171+ #( #from_bytes_arms) *
172+ _ => {
192173 #crate_name:: __private:: std:: result:: Result :: Err (
193174 #crate_name:: __private:: std:: convert:: Into :: into(
194175 "Unrecognized enum variant"
@@ -202,8 +183,10 @@ impl ToTokens for Enum {
202183 #[ automatically_derived]
203184 impl #crate_name:: __private:: diesel:: serialize:: ToSql <#sql_type, #crate_name:: __private:: diesel:: pg:: Pg > for #ident {
204185 fn to_sql<' b>( & ' b self , out: & mut #crate_name:: __private:: diesel:: serialize:: Output <' b, ' _, #crate_name:: __private:: diesel:: pg:: Pg >) -> #crate_name:: __private:: diesel:: serialize:: Result {
205- let sql_val = self . __benzina04_as_str( ) ;
206- #crate_name:: __private:: std:: io:: Write :: write_all( out, sql_val. as_bytes( ) ) ?;
186+ let s = match self {
187+ #( #to_byte_str_arms) *
188+ } ;
189+ #crate_name:: __private:: std:: io:: Write :: write_all( out, s) ?;
207190
208191 #crate_name:: __private:: std:: result:: Result :: Ok (
209192 #crate_name:: __private:: diesel:: serialize:: IsNull :: No
@@ -217,11 +200,9 @@ impl ToTokens for Enum {
217200 #[ automatically_derived]
218201 impl #crate_name:: __private:: diesel:: deserialize:: FromSql <#sql_type, #crate_name:: __private:: diesel:: mysql:: Mysql > for #ident {
219202 fn from_sql( bytes: #crate_name:: __private:: diesel:: mysql:: MysqlValue <' _>) -> #crate_name:: __private:: diesel:: deserialize:: Result <Self > {
220- match Self :: __benzina04_from_bytes( bytes. as_bytes( ) ) {
221- #crate_name:: __private:: std:: option:: Option :: Some ( this) => {
222- #crate_name:: __private:: std:: result:: Result :: Ok ( this)
223- } ,
224- #crate_name:: __private:: std:: option:: Option :: None => {
203+ match bytes. as_bytes( ) {
204+ #( #from_bytes_arms) *
205+ _ => {
225206 #crate_name:: __private:: std:: result:: Result :: Err (
226207 #crate_name:: __private:: std:: convert:: Into :: into(
227208 "Unrecognized enum variant"
@@ -235,8 +216,10 @@ impl ToTokens for Enum {
235216 #[ automatically_derived]
236217 impl #crate_name:: __private:: diesel:: serialize:: ToSql <#sql_type, #crate_name:: __private:: diesel:: mysql:: Mysql > for #ident {
237218 fn to_sql<' b>( & ' b self , out: & mut #crate_name:: __private:: diesel:: serialize:: Output <' b, ' _, #crate_name:: __private:: diesel:: mysql:: Mysql >) -> #crate_name:: __private:: diesel:: serialize:: Result {
238- let sql_val = self . __benzina04_as_str( ) ;
239- #crate_name:: __private:: std:: io:: Write :: write_all( out, sql_val. as_bytes( ) ) ?;
219+ let s = match self {
220+ #( #to_byte_str_arms) *
221+ } ;
222+ #crate_name:: __private:: std:: io:: Write :: write_all( out, s) ?;
240223
241224 #crate_name:: __private:: std:: result:: Result :: Ok ( #crate_name:: __private:: diesel:: serialize:: IsNull :: No )
242225 }
@@ -263,11 +246,11 @@ impl EnumVariant {
263246 let original_name_ident = Ident :: new ( original_name, * original_name_span) ;
264247 let rename_bytes = LitByteStr :: new ( rename. as_bytes ( ) , * original_name_span) ;
265248 quote ! {
266- #rename_bytes => #crate_name:: __private:: std:: option :: Option :: Some ( Self :: #original_name_ident) ,
249+ #rename_bytes => #crate_name:: __private:: std:: result :: Result :: Ok ( Self :: #original_name_ident) ,
267250 }
268251 }
269252
270- fn gen_to_str ( & self , rename_rule : RenameRule ) -> impl ToTokens {
253+ fn gen_to_byte_str ( & self , rename_rule : RenameRule ) -> impl ToTokens {
271254 let Self {
272255 original_name,
273256 original_name_span,
@@ -281,8 +264,9 @@ impl EnumVariant {
281264 . unwrap_or_else ( || rename_rule. format ( original_name) ) ;
282265
283266 let original_name_ident = Ident :: new ( original_name, * original_name_span) ;
267+ let rename_bytes = LitByteStr :: new ( rename. as_bytes ( ) , * original_name_span) ;
284268 quote ! {
285- Self :: #original_name_ident => #rename ,
269+ Self :: #original_name_ident => #rename_bytes ,
286270 }
287271 }
288272}
0 commit comments