当我在Rust中使用Serde库时,我尝试为一个实现了
FromStr
的类型添加一个#[serde(try_from = String)]
容器属性,以便从字符串中解析。不幸的是,这对于Serde来说似乎还不够,从编译器错误消息中可以明显看出,我还必须手动实现TryFrom<String>
。
为什么不会自动为所有实现FromStr
的类型实现TryFrom<String>
?为什么会有一个单独的trait用于从字符串进行可失败转换?这两个trait之间有什么区别?
FromStr
要早得多,而TryFrom
则是后来才添加的。然而,你期望的特质自动实现听起来很合理,也许有技术上的原因,不能轻易地实现它。 - Zólyomi Istvánserde_with
很有用,它允许你使用FromStr
和Display
自动(反)序列化,并且还有许多其他方便的功能。 - trentserde_with
的链接。我会看一下,但由于我的项目是针对 WASM 的,所以我对额外的依赖非常敏感,以免增加输出文件大小。 - blerontin