我有一个枚举:
pub enum BoxColour {
Red,
Blue,
}
我不仅想要将这个值转换为字符串,还希望将该值转换为小写字母。
以下代码可以实现:
impl Display for BoxColour {
fn fmt(&self, fmt: &mut fmt::Formatter) -> fmt::Result {
fmt.write_str(match self {
BoxColour::Red => "red",
BoxColour::Blue => "blue",
})?;
Ok(())
}
}
当颜色列表增长时,必须更新此列表。
如果我使用
write! 宏,则似乎不可能操纵结果,因为 write!返回的是()的实例,而不是 String :
impl Display for BoxColour {
fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
write!(formatter, "{:?}", self)
}
}
这表明它是通过副作用起作用的,也许我们可以在内存中修改相同位置的值,但即使可能,这可能不是一个好主意...
()
的实例,它返回一个fmt::Result
,正如fmt
的返回类型所示。 - Shepmasterfmt :: Result
µÿ»Result <(), fmt :: Error>
þÜäþ▒╗Õ×ïÒÇé - smitopResult
的成功路径是()
而不是String
或其他我可能知道如何处理的东西。我看到了strum
,但也无法让它工作,但这是另一天的问题。 - Brian Kessler