#![allow(dead_code)]
use syn::parse::{Parse, ParseStream};
use syn::{Ident, Token, Visibility, WhereClause};
#[derive(Clone)]
pub struct GetterAst {
pub vis: Visibility,
pub name: Ident,
pub field: Ident,
pub where_clause: Option<WhereClause>,
pub ty: syn::Type,
}
impl Parse for GetterAst {
fn parse(input: ParseStream) -> syn::Result<Self> {
let vis = input.parse().unwrap_or(Visibility::Inherited);
let name = input.parse()?;
let field = input.parse()?;
let where_clause = if input.peek(syn::token::Where) {
input.parse().ok()
} else {
None
};
let _: Token![->] = input.parse()?;
let ty = input.parse()?;
let tree = GetterAst {
vis,
name,
field,
ty,
where_clause,
};
Ok(tree)
}
}