pub fn expand_products(input: TokenStream, mode: ScopeMode) -> TokenStreamExpand description
Expands a product syntax into a TokenStream.
§Examples
§Complete expansion
let input = quote! {
impl Foo for $((This)(That)) { }
};
let output = expand_products(input, ScopeMode::Expand);
assert_eq!(
output.to_string(),
"impl Foo for This { } \
impl Foo for That { }");§Sub-expand
let input = quote! {
let toplevel = thing ;
${ impl Foo for $((This)(That)) { } }
${ impl Bar for $((This)(That)) { } }
};
let output = expand_products(input, ScopeMode::SubExpand);
assert_eq!(
output.to_string(),
"let toplevel = thing ; \
impl Foo for This { } \
impl Foo for That { } \
impl Bar for This { } \
impl Bar for That { }"
);§Auto-brace-semi
let input = quote! {
impl Foo for $((This)(That)) { }
impl Bar for $((This)(That)) { }
};
let output = expand_products(input, ScopeMode::AutoBraceSemi);
assert_eq!(
output.to_string(),
"impl Foo for This { } \
impl Foo for That { } \
impl Bar for This { } \
impl Bar for That { }"
);