logo
macro_rules! braces_unwrap {
    ( $Callback : path, { $( $Src : tt )* } ) => { ... };
    ( $Callback : path, $( $Src : tt )* ) => { ... };
    (
      $Callback : path where
      @SRC{ { $( $Src : tt )* } }
    ) => { ... };
    (
      $Callback : path where
      @SRC{ $( $Src : tt )* }
    ) => { ... };
    (
      $Callback : path where
      @Prefix{ { $( $Prefix : tt )* } }
      @Postfix{ { $( $Postfix : tt )* } }
      @SRC{ { $( $Src : tt )* } }
    ) => { ... };
    (
      $Callback : path where
      @Prefix{ { $( $Prefix : tt )* } }
      @Postfix{ { $( $Postfix : tt )* } }
      @SRC{ $( $Src : tt )* }
    ) => { ... };
    (
      $Callback : path where
      @Prefix{ { $( $Prefix : tt )* } }
      @Postfix{ $( $Postfix : tt )* }
      @SRC{ { $( $Src : tt )* } }
    ) => { ... };
    (
      $Callback : path where
      @Prefix{ { $( $Prefix : tt )* } }
      @Postfix{ $( $Postfix : tt )* }
      @SRC{ $( $Src : tt )* }
    ) => { ... };
    (
      $Callback : path where
      @Prefix{ $( $Prefix : tt )* }
      @Postfix{ { $( $Postfix : tt )* } }
      @SRC{ { $( $Src : tt )* } }
    ) => { ... };
    (
      $Callback : path where
      @Prefix{ $( $Prefix : tt )* }
      @Postfix{ { $( $Postfix : tt )* } }
      @SRC{ $( $Src : tt )* }
    ) => { ... };
    (
      $Callback : path where
      @Prefix{ $( $Prefix : tt )* }
      @Postfix{ $( $Postfix : tt )* }
      @SRC{ { $( $Src : tt )* } }
    ) => { ... };
    (
      $Callback : path where
      @Prefix{ $( $Prefix : tt )* }
      @Postfix{ $( $Postfix : tt )* }
      @SRC{ $( $Src : tt )* }
    ) => { ... };
    (
      $Callback : path where
      @Prefix{ { $( $Prefix : tt )* } }
      @SRC{ { $( $Src : tt )* } }
    ) => { ... };
    (
      $Callback : path where
      @Prefix{ { $( $Prefix : tt )* } }
      @SRC{ $( $Src : tt )* }
    ) => { ... };
    (
      $Callback : path where
      @Prefix{ $( $Prefix : tt )* }
      @SRC{ { $( $Src : tt )* } }
    ) => { ... };
    (
      $Callback : path where
      @Prefix{ $( $Prefix : tt )* }
      @SRC{ $( $Src : tt )* }
    ) => { ... };
    (
      $Callback : path where
      @Postfix{ { $( $Postfix : tt )* } }
      @SRC{ { $( $Src : tt )* } }
    ) => { ... };
    (
      $Callback : path where
      @Postfix{ { $( $Postfix : tt )* } }
      @SRC{ $( $Src : tt )* }
    ) => { ... };
    (
      $Callback : path where
      @Postfix{ $( $Postfix : tt )* }
      @SRC{ { $( $Src : tt )* } }
    ) => { ... };
    (
      $Callback : path where
      @Postfix{ $( $Postfix : tt )* }
      @SRC{ $( $Src : tt )* }
    ) => { ... };
}
Expand description

Unwrap braces of token tree and pass its content to the passed callback. If token tree in not braced then it passed to callback as is.

Function-style sample

use for_each::*;
let ( a, b, c ) = ( 1, 2, 3 );
braces_unwrap!( dbg, { a, b, c } );
// generates :
// dbg!( a, b, c );
braces_unwrap!( dbg, a, b, c );
// generates :
// dbg!( a, b, c );

Map-style sample

use for_each::*;
let ( prefix, a, b, c, postfix ) = ( "prefix", 1, 2, 3, "postfix" );
braces_unwrap!
(
  dbg where
  @Prefix{ prefix, }
  @Postfix{ postfix }
  @SRC{ { a, b, c, } }
);
// generates :
// dbg!( prefix, a, b, c, psotfix );
braces_unwrap!
(
  dbg where
  @Prefix{ prefix, }
  @Postfix{ postfix }
  @SRC{ a, b, c, }
);
// generates :
// dbg!( prefix, a, b, c, psotfix );