1 个不稳定版本
使用旧的 Rust 2015
0.2.6 | 2018 年 8 月 15 日 |
---|
1894 在 Rust 模式
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!