use syn::Ident;
use syn::parse::{Parse, ParseStream};
use syn::token::Colon;
#[allow(dead_code)]
pub struct BlockHeader<Key> {
pub key: Key,
pub nametag: Option<NameTag>,
}
#[allow(dead_code)]
pub struct NameTag {
pub colon_token: Colon,
pub ident: Ident,
}
impl<Key> Parse for BlockHeader<Key>
where
Key: Parse,
{
fn parse(input: ParseStream) -> syn::Result<Self> {
let key = input.parse::<Key>()?;
let nametag = if input.peek(Colon) {
Some(input.parse::<NameTag>()?)
} else {
None
};
Ok(BlockHeader { key, nametag })
}
}
impl Parse for NameTag {
fn parse(input: ParseStream) -> syn::Result<Self> {
let colon_token = input.parse::<Colon>()?;
let ident = input.parse::<Ident>()?;
Ok(NameTag { colon_token, ident })
}
}