Rust 为什么调试打印未按预期格式化枚举?

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时实现的行为,正如您可以看到的:

我需要从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(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!(“[{: