cgp-macro-lib 0.7.0

Context-generic programming core component macros implemented as a library.
Documentation
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
use proc_macro2::TokenStream;
use quote::quote;
use syn::punctuated::Punctuated;
use syn::token::Comma;

use crate::for_each_replace::{ReplaceSpecs, replace_stream};

pub fn replace_with(tokens: TokenStream) -> syn::Result<TokenStream> {
    let specs: ReplaceSpecs = syn::parse2(tokens)?;

    let items: Punctuated<TokenStream, Comma> = specs.replacements.into_iter().collect();

    let tokens = quote! { [ #items ] };

    Ok(replace_stream(&specs.target_ident, &tokens, specs.body))
}