macro_rules! braced {
($content:ident in $cursor:expr) => { ... };
}Expand description
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()?,
})
}
}