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

Kai*_*idt 3 rust

我正在使用一个使用serde-json的Rust程序,我非常喜欢#[derive(Serialize, Deserialize)]它为自定义结构和枚举使用的宏.使用我自己的类型,宏可以正常工作.但是,我希望能够从我正在使用的其他库中调用类型的宏.

我会自己实现这些类型的特性SerializeDeserialize特征,但是代码Deserialize特别复杂,为我在结构中使用的每个库类型写入都会很痛苦.

She*_*ter 9

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

不,那里没有.

也可以看看:


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

许多板条箱提供了一个功能标志来启用可选功能,因此您可能希望查看您的箱子是否有一个用于Serde.如果没有,您可以将其提交给图书馆.