#macro #quote #proc-macro #prelude #ident #quote-use #hygienically

macro quote-use-macros

以卫生方式在procmacros中支持 use

5 个版本

0.8.3 2024年7月8日
0.8.2 2024年7月7日
0.8.1 2024年7月7日
0.8.0 2023年11月16日
0.7.2 2023年9月3日

#2114 in 过程宏

Download history 62844/week @ 2024-04-15 59684/week @ 2024-04-22 60840/week @ 2024-04-29 56344/week @ 2024-05-06 68758/week @ 2024-05-13 67723/week @ 2024-05-20 71878/week @ 2024-05-27 84536/week @ 2024-06-03 85740/week @ 2024-06-10 71306/week @ 2024-06-17 72661/week @ 2024-06-24 79335/week @ 2024-07-01 87800/week @ 2024-07-08 89675/week @ 2024-07-15 90132/week @ 2024-07-22 85201/week @ 2024-07-29

354,433 每月下载量
254 个crate中(通过 quote-use)使用

MIT 许可证

18KB
347

quote! 中使用use语句

Crates.io Version CI Docs.rs Documentation

描述

一个简化在 quote! 宏中使用类型的宏。

用法

可以像 quote! 一样使用 quote_use! 宏,但增加了在顶部添加use语句的功能

quote_use!{
    use std::fs::read;
    
    read("src/main.rs")
}

这将扩展为使用 quote! 的等效语句

quote!{
    ::std::fs::read::read("src/main.rs")
}

预定义

这还允许直接使用rust预定义的内容

quote_use!{
    Some("src/main.rs")
}

覆盖预定义

当您想使用自己的类型而不是预定义类型时,可以通过如下方式简单地导入它来达到这个目的

quote_use!{
    use anyhow::Result;
                                                                                                             
    Result
}

不同的预定义

默认情况下,quote_use! 使用 std 预定义(适用于 2021 版本),但可以通过功能进行配置,也可以完全禁用。

其他引号宏

还有来自synquote的其他引号宏的变体

自动命名空间标识符

Span::def_site稳定之前,例如在proc-macro扩展中的let绑定中的标识符可能会与例如常量等冲突。

为了解决这个问题,您可以启用功能namespace_idents,这将使用模式"__{crate_name}_{ident}"将所有标识符替换为自动命名空间化的标识符。

依赖项

~0.3–0.8MB
~19K SLoC