【问题标题】:How to use #[deprecated] for renaming public struct in backwards compatible way?如何使用#[deprecated] 以向后兼容的方式重命名公共结构?
【发布时间】:2021-12-27 01:31:00
【问题描述】:

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

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

#[deprecated]
pub use MyOldStruct as MyNewStruct;

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

【问题讨论】:

    标签: rust semantic-versioning


    【解决方案1】:

    使用类型别名:

    #[deprecated]
    pub type MyOldStruct = MyNewStruct;
    

    看到它在playground 上发出警告。


    我会注意到,使用类型别名来重命名和弃用东西并不适用于所有事情:别名元组结构不能使用新名称构造一个值,如docs 所示,而这种方法显然不' 不适用于特征,因为它们不是类型,而且我们还没有 trait aliases

    【讨论】:

      猜你喜欢
      • 2020-06-04
      • 2022-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-10
      • 1970-01-01
      • 2013-07-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多