私は列挙型を持っています:
enum Operation {
Add,
Subtract,
}
impl Operation {
fn from(s: &str) -> Result<Self, &str> {
match s {
"+" => Ok(Self::Add),
"-" => Ok(Self::Subtract),
_ => Err("Invalid operation"),
}
}
}
コンパイル時に、列挙型のすべてのバリアントがfrom
関数内で処理されるようにしたいと思います。
なぜこれが必要なのですか?たとえば、Product
操作を追加して、from
関数でこのケースを処理するのを忘れる場合があります。
enum Operation {
// ...
Product,
}
impl Operation {
fn from(s: &str) -> Result<Self, &str> {
// No changes, I forgot to add a match arm for `Product`.
match s {
"+" => Ok(Self::Add),
"-" => Ok(Self::Subtract),
_ => Err("Invalid operation"),
}
}
}
一致式が列挙型のすべてのバリアントを返すことを保証することは可能ですか?そうでない場合、この動作を模倣する最良の方法は何ですか?