我正在使用Rust创建一个错误代码枚举。
pub enum ErrorCode {
InvalidUsername,
InvalidPassword,
}
我希望这个枚举类型能够在使用actix_web时用于JSON响应,因此我需要将枚举类型转换为字符串。
为此,我尝试在ErrorCode
枚举类型上实现fmt::Display
:
#[derive(Debug)]
pub enum ErrorCode {
InvalidUsername,
InvalidPassword,
}
impl fmt::Display for ErrorCode {
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
write!(f, "{}", *self)
}
}
但每当我尝试在 ErrorCode
上运行 .to_string()
时,程序都会崩溃并进入无限循环。
thread 'actix-rt:worker:0' has overflowed its stack
fatal runtime error: stack overflow
[1] 85991 abort ./target/debug/app
我希望将枚举转换为字符串,并能够在 impl fmt :: Display
中对该字符串进行更改,这样我就可以将其转换为 snake_case 等格式。
Display
,例如AsRefStr。 - EvilTak