有没有办法让我在不编辑实际库的源代码的情况下在库中的结构或枚举上使用 #[derive]?



我正在开发一个使用 serde-json 的 Rust 程序,我真的很喜欢它提供的用于自定义结构和枚举的#[derive(Serialize, Deserialize)]宏。宏适用于我自己的类型。但是,我希望能够对我正在使用的其他库中的类型调用宏。

我会自己在这些类型上实现SerializeDeserialize特征,但Deserialize的代码特别复杂,对于我在结构中使用的每个库类型进行编写会很痛苦。

有没有办法让我在不编辑实际库的源代码的情况下对库中的结构或枚举使用 #[derive]

不,没有。

另请参阅:

  • 如何为我不拥有的类型实现我不拥有的特征?

对于 Serde 的特定情况,您可以使用"远程派生",但您必须提供类型的重复定义,本质上重写原始结构。

许多板条箱都提供功能标志来启用可选功能,因此您可能需要查看您的板条箱是否有用于 Serde 的功能标志。如果没有,您可以将其提交给图书馆。

最新更新