#attributes #syntax #conditional #macro #token

add-syntax

属性宏,可以预先或附加任意语法。与cfg_attr一起使用很有用。

1个不稳定版本

0.1.0 2022年12月20日

#34 in #conditional


2 个crate中使用

Apache-2.0

7KB

add-syntax

属性宏,可以预先或附加任意语法。与cfg_attr一起使用很有用。

此crate提供两个属性宏,分别是prependappend,它们分别将传递给它们的标记添加到应用属性的项目开始或结束位置。这特别适合与cfg_attr一起使用。

示例

当使用#[may_dangle]时,条件应用unsafe

#[cfg_attr(feature = "dropck_eyepatch", add_syntax::prepend(unsafe))]
impl<#[cfg_attr(feature = "dropck_eyepatch", may_dangle)] T> Drop
    for Foo<T>
{
    fn drop(&mut self) { /* ... */ }
}

如果假设功能dropck_eyepatch已启用,上面的代码相当于

unsafe impl<#[may_dangle] T> Drop for Foo<T> {
    fn drop(&mut self) { /* ... */ }
}

否则,如果功能未启用,则代码相当于

impl<T> Drop for Foo<T> {
    fn drop(&mut self) { /* ... */ }
}

无运行时依赖