Make From<PathSegment> for Field handle a corner case

This commit is contained in:
John Hughes
2024-01-02 22:57:57 +01:00
parent 4b8b3e0430
commit 99a7323745
2 changed files with 29 additions and 3 deletions

View File

@@ -250,11 +250,20 @@ impl From<&syn::Field> for Field {
impl From<&syn::PathSegment> for Field {
fn from(path_segment: &syn::PathSegment) -> Self {
if let syn::PathArguments::AngleBracketed(ref args) = path_segment.arguments {
if let Some(syn::GenericArgument::Type(Path(ref path))) = args.args.first() {
return Field::from(&path.path);
match args.args.first() {
Some(syn::GenericArgument::Type(Path(ref path))) => {
return Field::from(&path.path);
},
Some(syn::GenericArgument::Type(syn::Type::Group(syn::TypeGroup { elem, ..}))) => {
if let syn::Type::Path(ref group) = elem.as_ref() {
return Field::from(&group.path);
}
},
_ => unimplemented!("unable to match '{:?}'", args.args.first()),
}
}
unimplemented!()
unimplemented!("unable to match '{}'", quote!{#path_segment})
}
}