<分区>
所以我看到有理由禁止孤儿特征实现,因为考虑到向前兼容性(以防止在库中添加进一步的特征实现破坏使用类型特征的地方)并且它可能使编译更多难的。但我想知道 Rust 社区会认为哪种解决方法是最理想的解决方法:
(以防万一这还不够背景:我正在尝试将 rusqlite 与 chrono 的 DateTime
一起使用。所以我想为 FromSql
实现 rusqlite 的 ToSql
和 DateTime<UTC>
特征。但这显然不像我想象的那么容易——我目前才刚刚开始使用 Rust。)
- 派生 rusqlite 并实现特征。 (我觉得这不是最好的方法,因为也许只有我需要这个特性实现,所以我可能最终不得不让我自己的 fork 保持最新。而且我不是能够实现这些特征是因为有一些我还不能完全理解的复杂的泛型。)
- 实现我自己的
DateTime
struct(可能是最好的解决方法,但我觉得这只是一些不必要的工作复制)。 - 以某种方式“复制”
DateTime<UTC>
trait 并给它一个别名并实现FromSql
和ToSql
我的别名类型的特征(但是我认为这也不是微不足道的,当我尝试它时我无法让它工作,因为它仍然被视为外部类型)。
我希望有人能向我解释如何最好地解决这个问题,从我纯粹的 OOP 经验我希望能够继承 DateTime
并实现接口(interface),但是(出于正当理由)这不是在 Rust 中完成的方式......