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 过程宏

Download history 289/week @ 2024-04-14 101/week @ 2024-04-21 28/week @ 2024-04-28 109/week @ 2024-05-05 6/week @ 2024-05-12 5/week @ 2024-05-19 15/week @ 2024-05-26 11/week @ 2024-06-02 5/week @ 2024-06-09 10/week @ 2024-06-16 12/week @ 2024-06-23 6/week @ 2024-06-30 4/week @ 2024-07-07 13/week @ 2024-07-14 2/week @ 2024-07-21 158/week @ 2024-07-28

每月177次下载
11 个crate中使用(通过 devela

MIT/Apache

30KB
419

devela_macros

Crate API MSRV: 1.72.1

devela 的过程宏。

有关更多信息,请参阅 文档

状态

此项目目前处于开发实验阶段。

许可证

此项目可根据您的选择以MIT或Apache-2.0许可证双授权。

贡献

欢迎贡献以帮助随着时间的推移改进和精炼此库。如果您发现错误,有新功能的想法,或者只想对现有代码库提出改进建议,请与我们联系。


lib.rs:

条件编译

每种形式的条件编译都接受一个求值结果为 truefalse 的编译预测器。

这些是 [#[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

当支持多个谓词时,它们由逗号分隔。

没有运行时依赖

特性