#quote #string #token-stream #popular #backed #sorting #macro

squote

使用 String 作为其存储后端的 quote crate 的克隆版

3 个版本

0.1.2 2020 年 8 月 3 日
0.1.1 2020 年 7 月 31 日
0.1.0 2020 年 7 月 31 日

#1038Rust 模式

Download history 236/week @ 2023-12-04 252/week @ 2023-12-11 315/week @ 2023-12-18 229/week @ 2023-12-25 122/week @ 2024-01-01 207/week @ 2024-01-08 164/week @ 2024-01-15 149/week @ 2024-01-22 104/week @ 2024-01-29 162/week @ 2024-02-05 224/week @ 2024-02-12 207/week @ 2024-02-19 184/week @ 2024-02-26 265/week @ 2024-03-04 187/week @ 2024-03-11 231/week @ 2024-03-18

873 每月下载量

MIT 许可证

33KB
788

crates.io docs.rs Build and Test

squote

流行的 quote crate 的基于字符串的实现。

此 crate 与 quote 的比较

当不确定时,始终优先使用 quote。这个 crate 的创建是因为,对于非常大的代码生成,与简单的字符串连接相比,quote 可能会变慢。如果你生成代码从不使用传入的 TokenStreams(即来自某种宏),那么使用这个 crate 可能会看到一些性能提升。

正在进行 相关工作,以查看这个 crate 的性能提升是否可以合并到 quote crate 中,在这种情况下,这个 crate 将会被弃用。

用法

use proc_macro::TokenStream;
use squote::quote;

#[proc_macro]
pub fn my_macro(stream: TokenStream) -> TokenStream {
    let tokens = quote! {
        impl<'a, T: ToTokens> ToTokens for &'a T {
            fn to_tokens(&self, tokens: &mut TokenStream) {
                (**self).to_tokens(tokens)
            }
        }
    };
    s.parse::<TokenStream>().unwrap()
}

无运行时依赖