jni-toolbox/macro/src/ext.rs

22 lines
718 B
Rust
Raw Normal View History

2024-10-12 22:25:57 +02:00
pub(crate) fn bare_type(ty: Box<syn::Type>) -> Option<syn::TypePath> {
match *ty {
syn::Type::Array(a) => bare_type(a.elem),
syn::Type::BareFn(_) => None,
syn::Type::ImplTrait(_) => None,
syn::Type::Infer(_) => None,
syn::Type::Macro(_) => None,
syn::Type::Never(_) => None,
syn::Type::TraitObject(_) => None,
syn::Type::Verbatim(_) => None,
syn::Type::Ptr(p) => bare_type(p.elem),
syn::Type::Slice(s) => bare_type(s.elem),
syn::Type::Tuple(t) => bare_type(Box::new(t.elems.first()?.clone())), // TODO
syn::Type::Group(g) => bare_type(g.elem),
syn::Type::Paren(p) => bare_type(p.elem),
syn::Type::Reference(r) => bare_type(r.elem),
syn::Type::Path(ty) => Some(ty),
_ => todo!(),
}
}