Skip to content

Commit 3e826c5

Browse files
committed
Generalize name_to_ty usage
1 parent 5356990 commit 3e826c5

File tree

1 file changed

+7
-15
lines changed

1 file changed

+7
-15
lines changed

src/generate/peripheral.rs

Lines changed: 7 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -810,17 +810,6 @@ fn expand_svd_register(
810810

811811
/// Convert a parsed `Register` into its `Field` equivalent
812812
fn 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

Comments
 (0)