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
。
当支持多个谓词时,它们由逗号分隔。