@@ -810,17 +810,6 @@ fn expand_svd_register(
810810
811811/// Convert a parsed `Register` into its `Field` equivalent
812812fn convert_svd_register ( register : & Register , name : Option < & str > ) -> Result < syn:: Field , syn:: Error > {
813- let name_to_ty_str = |name : & String , ns : Option < & str > | -> String {
814- if let Some ( ns) = ns {
815- String :: from ( "self::" )
816- + & ns. to_sanitized_snake_case ( )
817- + "::"
818- + & name. to_sanitized_upper_case ( )
819- } else {
820- name. to_sanitized_upper_case ( ) . to_string ( )
821- }
822- } ;
823-
824813 Ok ( match register {
825814 Register :: Single ( info) => new_syn_field (
826815 & info. name . to_sanitized_snake_case ( ) ,
@@ -831,7 +820,7 @@ fn convert_svd_register(register: &Register, name: Option<&str>) -> Result<syn::
831820
832821 let ty = syn:: Type :: Array ( parse_str :: < syn:: TypeArray > ( & format ! (
833822 "[{};{}]" ,
834- name_to_ty_str ( & nb_name, name) ,
823+ name_to_ty_cow ( & nb_name, name) ,
835824 u64 :: from( array_info. dim)
836825 ) ) ?) ;
837826
@@ -913,8 +902,8 @@ fn new_syn_field(ident: &str, ty: syn::Type) -> syn::Field {
913902 }
914903}
915904
916- fn name_to_ty ( name : & String , ns : Option < & str > ) -> Result < syn :: Type , syn :: Error > {
917- let ident = if let Some ( ns) = ns {
905+ fn name_to_ty_cow < ' a > ( name : & ' a String , ns : Option < & str > ) -> Cow < ' a , str > {
906+ if let Some ( ns) = ns {
918907 Cow :: Owned (
919908 String :: from ( "self::" )
920909 + & ns. to_sanitized_snake_case ( )
@@ -923,7 +912,10 @@ fn name_to_ty(name: &String, ns: Option<&str>) -> Result<syn::Type, syn::Error>
923912 )
924913 } else {
925914 name. to_sanitized_upper_case ( )
926- } ;
915+ }
916+ }
927917
918+ fn name_to_ty ( name : & String , ns : Option < & str > ) -> Result < syn:: Type , syn:: Error > {
919+ let ident = name_to_ty_cow ( name, ns) ;
928920 Ok ( syn:: Type :: Path ( parse_str :: < syn:: TypePath > ( & ident) ?) )
929921}
0 commit comments