[−][src]Macro syn::braced
Parse a set of curly braces and expose their content to subsequent parsers.
Example
# use quote::quote;
#
use syn::{braced, token, Ident, Result, Token, Type};
use syn::parse::{Parse, ParseStream};
use syn::punctuated::Punctuated;
// Parse a simplified struct syntax like:
//
// struct S {
// a: A,
// b: B,
// }
struct Struct {
struct_token: Token![struct],
ident: Ident,
brace_token: token::Brace,
fields: Punctuated<Field, Token![,]>,
}
struct Field {
name: Ident,
colon_token: Token![:],
ty: Type,
}
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_terminated(Field::parse)?,
})
}
}
impl Parse for Field {
fn parse(input: ParseStream) -> Result<Self> {
Ok(Field {
name: input.parse()?,
colon_token: input.parse()?,
ty: input.parse()?,
})
}
}
#
# fn main() {
# let input = quote! {
# struct S {
# a: A,
# b: B,
# }
# };
# syn::parse2::<Struct>(input).unwrap();
# }