2 个版本
使用旧的 Rust 2015
0.2.2 | 2018 年 2 月 21 日 |
---|---|
0.2.1 | 2018 年 2 月 21 日 |
1370 在 Rust 模式
每月下载 68 次
67KB
2K SLoC
proc-macro2
对编译器中的 proc_macro
包的一个小封装,旨在多路复用当前稳定接口(截至 2017-07-05)和即将到来的更丰富的接口。
即将推出的支持具有以下功能:
- 关于标记的 Span 信息
- 无需通过字符串进出
- 结构化输入/输出
希望将库移植到 proc_macro2
后,一旦在 nightly 上稳定,将能够轻松移植到真正的 proc_macro
包。
用法
此包默认在编译器的稳定版本上编译。它只使用编译器上游中 proc_macro
包的稳定表面区域。用法通过
[dependencies]
proc-macro2 = "0.2"
之后
extern crate proc_macro;
extern crate proc_macro2;
#[proc_macro_derive(MyDerive)]
pub fn my_derive(input: proc_macro::TokenStream) -> proc_macro::TokenStream {
let input: proc_macro2::TokenStream = input.into();
let output: proc_macro2::TokenStream = {
/* transform input */
};
output.into()
}
如果您愿意,可以在此包中启用 nightly
功能。这将导致它针对 proc_macro
包的 不稳定和仅限 nightly 的功能 进行编译。这反过来又需要一个 nightly 编译器。这应该有助于保留来自编译器本身的 span 信息。
您可以通过以下方式启用此功能:
[dependencies]
proc-macro2 = { version = "0.2", features = ["nightly"] }
不稳定功能
proc-macro2
支持从 proc_macro
导出一些目前高度不稳定的方法,这些方法可能在 proc_macro
稳定的第一次尝试中不会稳定化。默认情况下不会导出这些功能。任何小版本的 proc-macro2
都可能在任何时候对它们进行破坏性更改。
要启用这些功能,必须将 procmacro2_semver_exempt
配置标志传递给 rustc。
RUSTFLAGS='--cfg procmacro2_semver_exempt' cargo build
请注意,这不仅必须为您自己的包执行,还必须为任何依赖于您的包的包执行。这种传染性是故意的,因为它提醒您您已经超出了正常的 semver 保证。
许可证
此项目受以下任一许可证的许可:
- Apache 许可证 2.0 版(LICENSE-APACHE 或 http://www.apache.org/licenses/LICENSE-2.0)
- 麻省理工学院许可证(LICENSE-MIT 或 http://opensource.org/licenses/MIT)
由您选择。
贡献
除非您明确声明,否则您提交给 Serde 的任何有意贡献,根据 Apache-2.0 许可证定义,应按上述方式双重许可,不附加任何额外条款或条件。
依赖项
~3MB
~55K SLoC