(
data: &syn::Data,
ty_name: &str,
f: fn(ExtractParams) -> TokenStream,
)
| 88 | pub type ExtractParams<'a> = (&'a Ident, &'a Option<Ident>, &'a Type); |
| 89 | |
| 90 | pub fn extract_ports( |
| 91 | data: &syn::Data, |
| 92 | ty_name: &str, |
| 93 | f: fn(ExtractParams) -> TokenStream, |
| 94 | ) -> Vec<TokenStream> { |
| 95 | let port_func = lit::ident(ty_name.to_lowercase()); |
| 96 | fields(data) |
| 97 | .filter(|field| { |
| 98 | match_last_ty(&field.ty, ty_name) |
| 99 | || last_inner_ty(&field.ty) |
| 100 | .map(|inner_ty| match_last_ty(inner_ty, ty_name)) |
| 101 | .unwrap_or(false) |
| 102 | }) |
| 103 | .map(|field| (&port_func, &field.ident, &field.ty)) |
| 104 | .map(f) |
| 105 | .collect() |
| 106 | } |
no test coverage detected