13个版本 (破坏性)
| 0.10.0 | 2024年4月16日 |
|---|---|
| 0.9.0 | 2024年2月26日 |
| 0.8.0 | 2024年1月16日 |
| 0.7.1 | 2023年12月11日 |
| 0.3.0 | 2023年5月9日 |
#2047 in 过程宏
每月177次下载
在 11 个crate中使用(通过 devela)
30KB
419 行
devela_macros
为 devela 的过程宏。
有关更多信息,请参阅 文档。
状态
此项目目前处于开发实验阶段。
许可证
此项目可根据您的选择以MIT或Apache-2.0许可证双授权。
贡献
欢迎贡献以帮助随着时间的推移改进和精炼此库。如果您发现错误,有新功能的想法,或者只想对现有代码库提出改进建议,请与我们联系。
lib.rs:
条件编译
每种形式的条件编译都接受一个求值结果为 true 或 false 的编译预测器。
这些是 [#[compile]][compile()] 和 [#[compile_attr]][compile_attr()] 属性和 [cif!][cif()] 宏。
它们与 #[cfg] 和 #[cfg_attr] 属性以及 cfg! 宏类似,只是它们使用 编译预测器。
此外,还有一个 [#[compile_doc]][compile_doc()] 宏,可以根据谓词有条件地编译文档块。
恐慌
如果编译宏遇到未识别的谓词,将会产生恐慌。与返回 false 而不报错的配置宏 (cfg!) 不同。
编译谓词
以下编译谓词被支持:
-
一元
- 裸谓词仅当它是
true文字时返回true。 - 裸谓词如果它是
false文字或它是 空的,则返回false。 not():只有当谓词不评估为 不 是true时,返回true。
- 裸谓词仅当它是
-
二元
-
equal():如果两个谓词都评估为 相等,则返回true。 -
xor():如果只有一个谓词 是true,但 不是两个 都,则返回true。 -
eq():如果两个谓词都是 数字文字 且左 == 右,则返回true。 -
ne():如果两个谓词都是 数字文字 且左 != 右,则返回true。 -
ge():如果两个谓词都是 数字文字 且左 >= 右,则返回true。 -
gt():如果两个谓词都是 数字文字 且左 > 右,则返回true。 -
le():如果两个谓词都是 数字文字 且左 <= 右,则返回true。 -
lt():如果两个谓词都是 数字文字 且左 < 右,则返回true。
-
-
非二元
any():如果 任何 谓词 是true,则返回true。all():如果 所有 谓词 都是true,则返回true。none():如果没有给定谓词,则返回true。some():如果有任何给定谓词,则返回true。diff():如果有任何谓词的文本不同,则返回true。same():如果所有谓词的文本都相同,则返回true。xany():如果有任何谓词为true,但并非所有谓词都是,则返回true。xodd():如果有奇数个谓词为true,则返回true。xone():如果只有一个谓词为true,但没有更多,则返回true。
-
指针宽度
pointer_width_eq(width):如果当前指针宽度等于给定的宽度,则返回true。pointer_width_ne(width):如果当前指针宽度不等于给定的宽度,则返回true。pointer_width_ge(width):如果当前指针宽度大于等于给定的宽度,则返回true。pointer_width_gt(width):如果当前指针宽度大于给定的宽度,则返回true。pointer_width_le(width):如果当前指针宽度小于等于给定的宽度,则返回true。pointer_width_lt(width):如果当前指针宽度小于给定的宽度,则返回true。
-
字节序
little_endian():如果当前架构是小端字节序,则返回true。big_endian():如果当前架构是大端字节序,则返回true。
当支持多个谓词时,它们由逗号分隔。