7 个稳定版本
1.0.6 | 2022 年 10 月 14 日 |
---|---|
1.0.5 | 2022 年 10 月 13 日 |
1.0.3 | 2022 年 10 月 12 日 |
#1742 在 Rust 模式
9KB
74 行
类型宏
传统宏不能原生地具有带类型的参数,它们只能接受少量元类型(expr
、ident
、vis
...),使用这个 crate 您可以明确指定宏要接受的参数类型。
用法
将以下依赖项添加到您的 Cargo.toml 文件中
[dependencies]
typed_macros = "1.0.6"
有关如何使用它的详细信息,请参阅文档。
示例
#![feature(macro_metavar_expr)]
use typed_macros::macrox;
macrox! {
/// You can even use attributes!
#[macro_export]
macro foo(bar: String) {
// Do something with bar...
}
}
fn main() {
foo!(String::from("Some string")); // <- This won't throw an error.
foo!(9u32); // <- This will throw an error.
}
主宏是 macrox
,它接受类似下面的输入:macro name(arg1: type1, arg2: type2) { /* 代码 */ }
请参阅文档以获取此宏的更深入的方法。(包括多分支宏!)
测试
您可以在根目录下运行 cargo test
,但您只会看到一个错误(一个预期的错误),因为宏 this_should_warn
请求 u32
类型,并且测试尝试使用一个 String
。
贡献
欢迎以代码、文档、想法等形式进行贡献。由于项目非常简单,因此没有贡献指南。如果您是第一次为开源项目做出贡献,那么此指南可能有助于您。
Star 数
感谢所有为该项目打星的人,我的猴子大脑喜欢数字变大。
许可证
本软件使用MIT许可证。有关此许可证的更多信息,请参阅LICENSE
文件。