0

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

使用 Prost 0.9 版和 rustic 1.56

4

2 回答 2

1

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

于 2021-11-07T21:28:35.753 回答
-1

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

如果你想为一个类型实现一个特征。您需要在库/二进制文件中具有特征或类型。

由于特征在std并且类型在外部板条箱中,因此您可以做的最好的事情是创建一个单元结构来包装类型。然后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);
}

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

于 2021-11-06T15:19:05.993 回答