我需要从枚举中打印值并将其格式化。然后,我编写了如下代码:
#[derive(Debug)]
enum MyEnum {
AB,
}
fn main() {
let value = MyEnum::AB;
println!("[{: <3?}]", value);
}
但是,结果是[AB]
,而我希望结果是[AB ]
。为什么?如何在调试打印中添加填充?
答案 0 :(得分:6)
这不是为Debug
导出enum
时实现的行为,如您所见:
#[derive(Debug)]
enum MyEnum {
AB(i32),
}
fn main() {
let value = MyEnum::AB(42);
println!("[{:<3?}]", value);
}
输出:
[AB(42 )]
我认为您需要自己实现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);
}
输出:
[AB ]