2个版本

0.1.1 2023年8月5日
0.1.0 2019年1月19日

#253 in 过程宏

Download history • Rust 包仓库 4821/week @ 2024-04-22 • Rust 包仓库 6261/week @ 2024-04-29 • Rust 包仓库 4072/week @ 2024-05-06 • Rust 包仓库 5194/week @ 2024-05-13 • Rust 包仓库 6553/week @ 2024-05-20 • Rust 包仓库 5190/week @ 2024-05-27 • Rust 包仓库 5946/week @ 2024-06-03 • Rust 包仓库 5415/week @ 2024-06-10 • Rust 包仓库 5916/week @ 2024-06-17 • Rust 包仓库 5048/week @ 2024-06-24 • Rust 包仓库 4494/week @ 2024-07-01 • Rust 包仓库 6990/week @ 2024-07-08 • Rust 包仓库 7250/week @ 2024-07-15 • Rust 包仓库 6642/week @ 2024-07-22 • Rust 包仓库 6976/week @ 2024-07-29 • Rust 包仓库 5553/week @ 2024-08-05 • Rust 包仓库

26,846 每月下载量
70 个crate中(直接使用9个) 使用

MIT/Apache

8KB

Crates.io Rust Documentation

gensym

使用过程宏和UUID创建宏的唯一标识符

示例


macro_rules! gen_fn {
    ($a:ty, $b:ty) => {
        gensym::gensym!{ _gen_fn!{ $a, $b } }
    };
}

macro_rules! _gen_fn {
    ($gensym:ident, $a:ty, $b:ty) => {
        fn $gensym(a: $a, b: $b) {
            unimplemented!()
        }
    };
}

mod test {
    gen_fn!{ u64, u64 }
    gen_fn!{ u64, u64 }
}

lib.rs:

使用过程宏和UUID创建宏的唯一标识符

示例


macro_rules! gen_fn {
    ($a:ty, $b:ty) => {
        gensym::gensym!{ _gen_fn!{ $a, $b } }
    };
}

macro_rules! _gen_fn {
    ($gensym:ident, $a:ty, $b:ty) => {
        fn $gensym(a: $a, b: $b) {
            unimplemented!()
        }
    };
}

mod test {
    gen_fn!{ u64, u64 }
    gen_fn!{ u64, u64 }
}

使用Span::call_site生成一个唯一标识符,并将其作为宏调用的第一个参数插入,后面跟着一个逗号。

依赖项

~0.5–1MB
~21K SLoC