#macro #utility #arguments #typing #typed #type #macrox

nightly typed_macros

为宏的参数添加类型,使其处理起来更加容易

7 个稳定版本

1.0.6 2022 年 10 月 14 日
1.0.5 2022 年 10 月 13 日
1.0.3 2022 年 10 月 12 日

#1742Rust 模式

MIT 许可证

9KB
74

类型宏

传统宏不能原生地具有带类型的参数,它们只能接受少量元类型(expridentvis...),使用这个 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 数

感谢所有为该项目打星的人,我的猴子大脑喜欢数字变大。

Stargazers repo roster for @blyxyas/typed_macros

许可证

本软件使用MIT许可证。有关此许可证的更多信息,请参阅LICENSE文件。

无运行时依赖