【发布时间】:2021-05-04 13:38:20
【问题描述】:
在 Rust 中使用 Serde crate 时,我尝试将 #[serde(try_from = String)] container attribute 添加到实现 FromStr 的类型中,因此可以从字符串中解析。不幸的是,这对于 Serde 来说似乎还不够,从编译器错误消息中可以明显看出我也必须手动实现 TryFrom<String>。
为什么没有为实现FromStr 的所有类型自动实现TryFrom<String>?为什么字符串的易错转换有一个单独的特征?这两个特征有什么区别?
【问题讨论】:
-
我认为答案是“出于历史原因”的平均值:AFAIK
FromStr更老,TryFrom是后来才添加的。但是,您期望的 trait 自动实现听起来很合乎逻辑,也许有技术原因,这并不容易。 -
您可能会发现
serde_with允许您使用automatically (de)serialize usingFromStrandDisplay并具有许多其他便利功能很有用 -
感谢
serde_with的链接。我会看一下,但是由于我的项目以 WASM 为目标,因此我对其他依赖项相当敏感,以防它们增加输出大小。
标签: string rust type-conversion