Rust / Prost:如何将调试添加到结构和联合?

Rust / Prost : How do add Debug to structs & unions?

看起来 prost protobuf 生成器只将 derive(Debug) 添加到生成的枚举类型(并且只添加不在 pub mod 块内的枚举)。 None 个生成的结构或联合应用了它。我怎样才能让 prost 将它添加到所有内容中?

使用 Prost 版本 0.9 和 rustic 1.56

prost 没有打开它的选项,所以你必须自己做。

如果你想为一个类型实现一个特征。您需要在 library/binary.

中包含特征或类型

因为 trait 在 std 中并且类型在外部 crate 中,你能做的最好的事情就是创建一个单元结构来包装类型。然后为此实施Debug

use std::fmt;

struct DebugStruct(NonDebugEnum);

impl fmt::Debug for DebugStruct {
    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
        todo!()
    }
}

fn main() {
    let wrapped = DebugStruct(NonDebugEnum::Example);
    println!("{:?}", wrapped);
}

您必须想出如何格式化它的实际逻辑。

Prost 确实在所有东西上都派生了 Debug。但是你需要 prost::Messaeg 在范围内,否则你会收到关于缺少调试特征的错误。