如何使用#[deprecated] 以向后兼容的方式重命名 public 结构?

How to use #[deprecated] for renaming public struct in backwards compatible way?

我看到我可以使用 #[deprecated] 标记,但不知何故它在以下工作流程中不起作用:

  1. 我将我图书馆中的所有 MyOldStruct 重命名为 MyNewStruct
  2. pub use MyNewStruct as MyOldStruct 添加了 #deprecated 注释。
pub struct MyNewStruct{};

#[deprecated]
pub use MyOldStruct as MyNewStruct;

知道这里可能出了什么问题吗?我正在查看它是否在货运文档中显示为已弃用。

使用类型别名:

#[deprecated]
pub type MyOldStruct = MyNewStruct;

看到它在 playground 上发出警告。


我会注意到,使用类型别名来重命名和弃用事物并不适用于所有情况:别名的元组结构不能使用新名称构造一个值,如 docs, and this method obviously doesn't work for traits since they aren't types and we don't have trait aliases 中所示。