1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
// This Source Code Form is subject to the terms of the Mozilla Public
// License, v. 2.0. If a copy of the MPL was not distributed with this
// file, You can obtain one at https://mozilla.org/MPL/2.0/.
use ;
use token;
/// More flexible alternative to the [`braced!`] macro.
///
/// # Examples
/// Instead of doing this (with no option to handle the error condition):
/// ```
/// # use syn::braced;
/// #
/// # struct A(syn::token::Brace);
/// #
/// # impl syn::parse::Parse for A {
/// # fn parse(input: syn::parse::ParseStream) -> syn::Result<Self> {
/// let content;
/// let brace = braced!(content in input);
/// # Ok(Self(brace))
/// # }
/// # }
/// #
/// # fn main() {
/// # let input = quote::quote!({});
/// # syn::parse2::<A>(input).unwrap();
/// # }
/// ```
/// You can instead do this:
/// ```
/// # struct A(syn::token::Brace);
/// #
/// # fn braced(input: syn::parse::ParseStream) -> syn::Result<(syn::token::Brace, syn::parse::ParseBuffer)> {
/// # syn::__private::parse_braces(input).map(|braces| (braces.token, braces.content))
/// # }
/// #
/// # impl syn::parse::Parse for A {
/// # fn parse(input: syn::parse::ParseStream) -> syn::Result<Self> {
/// let (brace, content) = braced(input)?;
/// # Ok(Self(brace))
/// # }
/// # }
/// #
/// # fn main() {
/// # let input = quote::quote!({});
/// # syn::parse2::<A>(input).unwrap();
/// # }
/// ```
///
/// [braced!]: syn::braced!