#macro #proc-macro #unhygienic #hygienic

macro unhygienic2

一个简单的宏,用于消除宏的 hygiene 特性。

1 个不稳定版本

0.1.0 2022年9月4日

#1544#proc-macro


2 个crate中使用(通过impl_serialize

MIT 许可协议

4KB

Unhygienic2

一个简单的宏,用于消除宏的 hygiene 特性。它将输入字符串化,然后在调用者的上下文中重新解析。

基于 unhygienicproc_macro_hack 开发的第一个版本。由于Rust 1.45版本已提供原生的 #[proc_macro] 支持,因此不再需要 proc_macro_hack。

示例

use unhygienic2::unhygienic;

macro_rules! declare {
    ($exp:expr) => {
        unhygienic! {
            fn func() -> i32 {
                let a = 5;

                $exp
            }
        }
    }
}

declare!({ a + 1 });

fn main() {
    assert_eq!(func(), 6);
}

lib.rs:

一个简单的宏,用于消除宏的 hygiene 特性。它将输入字符串化,然后在调用者的上下文中重新解析。第一个版本基于 unhygienicproc_macro_hack 开发的。由于Rust 1.45版本已提供原生的 #[proc_macro] 支持,因此不再需要 proc_macro_hack。

示例

use unhygienic2::unhygienic;

macro_rules! declare {
    ($exp:expr) => {
        unhygienic! {
            fn func() -> i32 {
                let a = 5;

                $exp
            }
        }
    }
}

declare!({ a + 1 });

fn main() {
    assert_eq!(func(), 6);
}

无运行时依赖