如何使用#[deprecated] 以向后兼容的方式重命名 public 结构?
How to use #[deprecated] for renaming public struct in backwards compatible way?
我看到我可以使用 #[deprecated] 标记,但不知何故它在以下工作流程中不起作用:
- 我将我图书馆中的所有
MyOldStruct
重命名为 MyNewStruct
。
- 向
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 中所示。
我看到我可以使用 #[deprecated] 标记,但不知何故它在以下工作流程中不起作用:
- 我将我图书馆中的所有
MyOldStruct
重命名为MyNewStruct
。 - 向
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 中所示。