Поскольку тип возвращаемого значения fmt
равен fmt::Result
, вам просто нужно указать пустое значение Ok(())
, чтобы все возможные возвращаемые значения match
имели одинаковый тип (и код для компиляции). :
impl fmt::Display for SomeEnum {
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
use SomeEnum::*;
match *self {
A => write!(f, "A"),
B => write!(f, "B"),
C => Ok(()),
}
}
}
Альтернативой может быть использование C => unreachable!()
, но это хорошая идея, только если вы уверены, что значение никогда не нужно будет Display
ed (иначе это вызовет панику).