#proc-macro #assertions #assert #input #checking #generate #documentation

proc-macro-assertions

轻松在proc宏输入上创建断言

13个版本

0.1.5 2023年10月11日
0.1.4 2023年10月11日
0.0.7 2023年10月10日
0.0.4 2023年9月17日
0.0.2 2023年8月5日

207过程宏 中排名

Download history 45/week @ 2024-03-09 69/week @ 2024-03-16 16/week @ 2024-03-23 25/week @ 2024-03-30 17/week @ 2024-04-06 91/week @ 2024-04-13 131/week @ 2024-04-20 9/week @ 2024-04-27 54/week @ 2024-05-04 376/week @ 2024-05-11 107/week @ 2024-05-18 62/week @ 2024-05-25 73/week @ 2024-06-01 3/week @ 2024-06-08 5/week @ 2024-06-15 75/week @ 2024-06-22

157 每月下载量

MIT/Apache

91KB
2.5K SLoC

此crate使检查proc宏输入的某些条件变得容易。它通过生成永远不会实际执行的const代码来实现,但其类型检查确保条件得到满足。

有关更多信息,请参阅Static Assertions crate。(免责声明:我与该crate的作者没有任何关联)

此crate的核心类型是Assertion Store,它包含所有生成的断言,然后将其转换为标记。

对于包含的断言类型,建议使用assert_into! 宏。

此crate中各个项目的文档相当不错,一旦我有时间绘制出工作原理的功能概述,将提供一次。所以现在只需查看各个类型。

示例

pub use proc_macro_assertions::prelude::*;

let type_to_test: syn::Type = syn::parse_quote!(String);
let store = DefaultStore::new();
assert_into!(store | &type_to_test impl std::default::Default);
assert_into!(store | &type_to_test == String);
let tokens = quote::quote!{ #store };

依赖关系

~0.4–0.9MB
~20K SLoC