# Macro syn::braced

source · [−]

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

Expand description

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

## Example

    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()?,
            })
        }
    }