ligen-parser 0.1.18

Ligen (Language Interface Generator) is an extensible automatic binding generator ecosystem.
Documentation
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
pub(crate) enum IntermediaryAttribute {
    Meta(syn::Meta),
    Lit(syn::Lit),
    Expr(syn::Expr),
    Unknown(String)
}

impl syn::parse::Parse for IntermediaryAttribute {
    fn parse(input: syn::parse::ParseStream) -> syn::Result<Self> {
        if input.peek(syn::Lit) {
            input.parse().map(IntermediaryAttribute::Lit)
        } else if let Ok(attribute) = input.parse().map(IntermediaryAttribute::Expr) {
            Ok(attribute)
        } else {
            Ok(input.parse().map(IntermediaryAttribute::Meta).unwrap_or(IntermediaryAttribute::Unknown(input.to_string())))
        }
    }
}