你能弃用 Rust 中的某个属性吗?

问题描述 投票:0回答:1

假设我有这个宏定义:

#[proc_macro_derive(Builder, attributes(builder, group, groups))]
#[proc_macro_error]
pub fn derive_builder(input: proc_macro::TokenStream) -> proc_macro::TokenStream {
    // -- snip --
}

我想弃用

group
,并让用户使用
groups
来代替。你不能简单地这样做:

#[proc_macro_derive(Builder, attributes(builder, #[deprecated] group, groups))]

抛出警告目前仅每晚可用

如何告诉用户逐步停止使用

group

rust attributes deprecated deprecation-warning rust-proc-macros
1个回答
0
投票

就像

compile_error!()
一样,扩展为对已弃用函数的调用。也许,最好的方法是从宏的支持库中使用已弃用的导出函数:

#[deprecated = "the `group` attribute is deprecated. Use `groups` instead"]
#[doc(hidden)]
pub const fn group() {}

并扩展到类似:

const _: () = ::my_crate::group();

当然,请确保设置正确的跨度,以便错误指向正确的位置。

© www.soinside.com 2019 - 2024. All rights reserved.