mirror of
https://github.com/hexedtech/jni-toolbox.git
synced 2025-03-15 02:55:32 +01:00
21 lines
718 B
Rust
21 lines
718 B
Rust
|
|
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!(),
|
|
}
|
|
}
|