cgp_macro_lib/entrypoints/
replace_with.rs1use proc_macro2::TokenStream;
2use quote::quote;
3use syn::punctuated::Punctuated;
4use syn::token::Comma;
5
6use crate::for_each_replace::{ReplaceSpecs, replace_stream};
7
8pub fn replace_with(tokens: TokenStream) -> syn::Result<TokenStream> {
9 let specs: ReplaceSpecs = syn::parse2(tokens)?;
10
11 let items: Punctuated<TokenStream, Comma> = specs.replacements.into_iter().collect();
12
13 let tokens = quote! { [ #items ] };
14
15 Ok(replace_stream(&specs.target_ident, &tokens, specs.body))
16}