add-syntax

Crates.ioadd-syntax
lib.rsadd-syntax
version0.1.0
sourcesrc
created_at2022-12-20 02:48:49.402387
updated_at2022-12-20 02:48:49.402387
descriptionAttribute macros that prepend or append arbitrary syntax. Useful with `cfg_attr`.
homepage
repositoryhttps://github.com/taylordotfish/add-syntax
max_upload_size
id741909
size19,813
taylor.fish (taylordotfish)

documentation

https://docs.rs/add-syntax

README

add-syntax

Attribute macros that prepend or append arbitrary syntax. Useful with cfg_attr.

This crate provides two attribute macros, prepend and append, that add the tokens passed to them to the start or end of the item to which the attribute is applied, respectively. This is particularly useful with cfg_attr.

Example

Conditionally applying unsafe when #[may_dangle] is used:

#[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) { /* ... */ }
}

If the hypothetical feature dropck_eyepatch is enabled, the code above is equivalent to:

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

Otherwise, if the feature is not enabled, the code is equivalent to:

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

cargo fmt