Macro syn_error_experiment::braced[][src]

macro_rules! braced {
    ($content:ident in $cursor:expr) => { ... };
}

Parse a set of curly braces and expose their content to subsequent parsers.

use syn_error_experiment::{braced, token, Ident, Token};
use syn_error_experiment::parse::{Parse, ParseStream, Result};

// Parse a simplified struct syntax like:
//
//     struct S {
//         a: A,
//         b: B,
//     }
struct Struct {
    pub struct_token: Token![struct],
    pub ident: Ident,
    pub brace_token: token::Brace,
    pub fields: Vec<Field>,
}

impl Parse for Struct {
    fn parse(input: ParseStream) -> Result<Self> {
        let content;
        Ok(Struct {
            struct_token: input.parse()?,
            ident: input.parse()?,
            brace_token: braced!(content in input),
            fields: content.parse()?,
        })
    }
}