#identifier #concatenation #macro

nightly interpolate_idents_gnzlbg_fork

可用的宏标识符连接插件

1 个不稳定版本

使用旧的 Rust 2015

0.2.6 2018 年 8 月 15 日

1894Rust 模式

MIT 许可证

10KB
184

interpolate_idents

警告! 此 crate 使用过程宏(如今称为 编译器插件)并且只能与 Rust 的 nightly 发行版 一起使用。

由于 Rust 编译器解析宏的方式,您目前无法使用 concat_idents! 定义结构体、枚举、函数或字段。这可能在将来得到改善,但 interpolate_idents! 粗略地解决了目前缺乏宏系统 今天 的副作用。

#![feature(plugin)]
#![plugin(interpolate_idents)]

macro_rules! make_fn {
    ($x:ident) => ( interpolate_idents! {
        fn [my_ $x _fn]() -> u32 { 1000 }
    } )
}

现在 make_fn!(favorite); 等同于 fn my_favorite_fn() -> u32 { 1000 }

简而言之,用方括号包围多个空格分隔的标识符(或宏标识符变量)以连接标识符。请检查 tests/tests.rs 以获取另一个示例。

此插件是快速拼凑而成的。它可能效率不高,并且可读性很差。

crate 维护

我没有在 nightly 上积极开发,因此我没有太常使用此插件。我明白 libsyntax 是一个难以捉摸的生物,所以如果在最新的 nightly 上 interpolate_idents 无法编译,请提交问题或 PR!

没有运行时依赖