use syn::{Expr, parse::Parse, parse::ParseStream};
#[derive(Debug, Clone)]
pub struct LayerAttr {
pub layer_expr: Expr,
}
impl Parse for LayerAttr {
fn parse(input: ParseStream) -> syn::Result<Self> {
let layer_expr: Expr = input.parse()?;
Ok(LayerAttr { layer_expr })
}
}
pub fn extract_layer_attrs(attrs: &[syn::Attribute]) -> Vec<LayerAttr> {
let mut layers = Vec::new();
for attr in attrs {
if attr.path().is_ident("layer")
&& let Ok(layer_attr) = attr.parse_args::<LayerAttr>()
{
layers.push(layer_attr);
}
}
layers
}