无法将 SystemTime 转换为 Prost 0.10/Protobuf 时间戳类型

Can't Convert SystemTime to Prost 0.10/Protobuf Timestamp Type

有人能告诉我 tonic 和 prost 中的类型发生了什么事吗?就在一两个月前,我的团队有一个工作构建,它使用了一个包含时间戳的 protobuf 定义。我们正在使用众所周知的类型用 tonic_build 编译它们。类型从 prost 0.7 移动到 0.10 时发生了一些变化,现在我收到此错误。

timestamp: Some(timestamp.into()),
                          ^^^^ the trait `From<SystemTime>` is not implemented for `protobuf::Timestamp`

所以我用了几行代码将类型转换为我认为来自 protobuf 板条箱的正确类型,然后得到了这个。

timestamp: Some(timestamp.into()),
                          ^^^^ the trait `From<protobuf::well_known_types::Timestamp>` is not implemented for `protobuf::Timestamp`

我尝试从 protobuf crate 导入 Timestamp,但根目录中不存在该类型,它显然与 protobuf::well_known_types::Timestamp 不同,我找不到该类型来自哪个 crate 或版本.

最后,如果我允许 tonic_build 使用 prost_types,我会收到此错误。

timestamp: Some(timestamp.into()),
                          ^^^^ the trait `From<protobuf::well_known_types::Timestamp>` is not implemented for `prost_types::Timestamp`

我可以导入那个类型,但是它的文档很混乱,所以我还没有弄清楚如何将原始的 SystemTime 转换成 prost_type::Timestamp。

简而言之,我一直在寻找,但找不到正确的时间戳类型。我在某处读到,拥有这些板条箱的正确版本以便它们正确排列很重要。谁能帮我弄清楚如何找到正确的类型和板条箱版本?

非常感谢。

转换功能已移至 prost-types crate。

有关参考,请参阅 https://docs.rs/prost-types/0.10.1/prost_types/struct.Timestamp.html#impl-From%3CSystemTime%3E and https://github.com/tokio-rs/prost/tree/master/prost-types

timestamp: Some(prost_types::Timestamp::from(timestamp))