Rust 为什么调试打印未按预期格式化枚举?
我需要从enum打印一个调试值并格式化它。然后,我写了这样的代码:Rust 为什么调试打印未按预期格式化枚举?,rust,Rust,我需要从enum打印一个调试值并格式化它。然后,我写了这样的代码: #[derive(Debug)] enum MyEnum { AB, } fn main() { let value = MyEnum::AB; println!("[{: <3?}]", value); } #[派生(调试)] 髓鞘{ AB, } fn main(){ 让value=MyEnum::AB; println!(“[{:这不是为enum派生Debug时实现的行为,正如您可以看到的:
#[derive(Debug)]
enum MyEnum {
AB,
}
fn main() {
let value = MyEnum::AB;
println!("[{: <3?}]", value);
}
#[派生(调试)]
髓鞘{
AB,
}
fn main(){
让value=MyEnum::AB;
println!(“[{:这不是为enum
派生Debug
时实现的行为,正如您可以看到的:
#[derive(Debug)]
enum MyEnum {
AB(i32),
}
fn main() {
let value = MyEnum::AB(42);
println!("[{:<3?}]", value);
}
我认为您需要自己实现Debug
:
enum MyEnum {
AB,
}
use std::fmt;
impl fmt::Debug for MyEnum {
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
match self {
MyEnum::AB => f.pad("AB"),
}
}
}
fn main() {
let value = MyEnum::AB;
println!("[{:<3?}]", value);
}
在我的例子中,我自己执行Debug
很糟糕,因为我在enum有很多案例,我将寻找另一个解决方案。谢谢你的回答。我刚刚在rust lang上打开了一个问题:@Macabeus最简单的解决方法是使用println!(“[{: