#quote #proc-macro

quote2

An alternative lightweight version of quote

5 releases (3 breaking)

0.9.0 Oct 8, 2024
0.8.1 Oct 3, 2024
0.7.0 Jul 4, 2023
0.5.0 Jul 3, 2023
0.1.0 Jul 1, 2023

#1011 in Procedural macros

Download history 191/week @ 2025-10-01 210/week @ 2025-10-08 326/week @ 2025-10-15 217/week @ 2025-10-22 335/week @ 2025-10-29 271/week @ 2025-11-05 406/week @ 2025-11-12 153/week @ 2025-11-19 457/week @ 2025-11-26 310/week @ 2025-12-03 197/week @ 2025-12-10 271/week @ 2025-12-17 310/week @ 2025-12-24 296/week @ 2025-12-31 247/week @ 2026-01-07 368/week @ 2026-01-14

1,288 downloads per month
Used in 14 crates (6 directly)

MIT license

8KB
158 lines

quote2

An alternative lightweight version of quote.

Crates.io Documentation License: MIT

Features

  • Very lightweight and produces extremely lean, minimal code compare to quote

  • Unlike quote, quote2 allows direct mutation of tokens without creating new TokenStream instances, enhancing runtime performance.

    similar to write macro.

Example

Add it as a dependency to your Rust project by adding the following line to your Cargo.toml file:

[dependencies]
quote2 = "0.9"
use quote2::{proc_macro2::TokenStream, quote, Quote};

let body = quote(|t| {
    for n in 1..7 {
        if n % 2 == 0 {
            quote!(t, {
                println!("{}", #n);
            });
        }
    }
});

let mut t = TokenStream::new();
quote!(t, {
    fn main() {
        #body
    }
});

Generated code:

fn main() {
    println!("{}", 2i32);
    println!("{}", 4i32);
    println!("{}", 6i32);
}

Dependencies

~69KB