Macro pmutil::smart_quote
source · [−]macro_rules! smart_quote {
(
Vars{ $($vars:tt)* },
{
$(
$tokens:tt
)*
}
) => { ... };
(
{
$(
$tokens:tt
)*
}
) => { ... };
(
Vars{ $($vars:tt)* },
(
$(
$tokens:tt
)*
)
) => { ... };
(
(
$(
$tokens:tt
)*
)
) => { ... };
}
Expand description
ide-friendly quasi quotting.
Syntax
Vars
Syntax is simillar to field initialization syntax.
ⓘ
Vars {
a,
b: expr_b,
c: fn_c(),
d,
}
// is equivalent to
Vars {
a: a,
b: expr_b,
c: fn_c(),
d: d,
}
Note that Vars{}
is required even if there’s no variable.
Tokens
As parsers for syntax highligters implement error recovery,
tokens are wrapped in block or paren like { tokens.. }
/ ( tokens.. )
.
Example
ⓘ
smart_quote!(Vars{
OrigTrait: tr.ident,
SpecializerTrait: tr.ident.new_ident_with(|tr| format!("{}Specializer", tr)),
}, {
impl<T> OrigTrait for T where T: SpecializerTrait {
}
})
Example (no variable)
ⓘ
smart_quote!(Vars{}, {
yield ();
})