假设我有这个宏定义:
#[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))]
抛出警告目前只有 available on nightly
如何告诉用户逐步停止使用group
?
最佳答案
就像compile_error!()
一样,扩展为对已弃用函数的调用。也许,最好的方法是从宏的支持库中使用已弃用的导出函数:
#[deprecated = "the `group` attribute is deprecated. Use `groups` instead"]
#[doc(hidden)]
pub const fn group() {}
并扩展到类似:
const _: () = ::my_crate::group();
当然,请确保设置正确的跨度,以便错误指向正确的位置。
关于rust - 你能弃用 Rust 中的某个属性吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/77267611/