如何使用#[deprecated]向后兼容地重命名Rust公共结构体?
故障原因及解决方案
- 重导出语法方向错误:你写的
pub use MyOldStruct as MyNewStruct逻辑完全颠倒了,该语句表示导入MyOldStruct并重命名为MyNewStruct导出,但你已经把原结构体重命名为MyNewStruct,当前作用域根本不存在MyOldStruct,这行代码本身就存在编译错误,#[deprecated]标注自然无法生效。
正确的写法是将新结构体用旧名称公开导出,示例如下:
pub struct MyNewStruct{}; #[deprecated(note = "MyOldStruct 已废弃,请迁移使用 MyNewStruct")] pub use MyNewStruct as MyOldStruct;
- 若修正语法后
cargo docs仍未展示废弃标注,可先清理编译缓存后重新生成文档,执行命令:cargo clean && cargo doc --open
内容的提问来源于stack exchange,提问作者sanket1729
相关产品推荐
相关产品推荐

