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
在范围内,否则你会收到关于缺少调试特征的错误。
看起来 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
在范围内,否则你会收到关于缺少调试特征的错误。