カスタムエラー型の定義

2020-08-19#rust

use std::{error, fmt};
 
#[derive(Debug)]
pub enum MyError {
  InvalidFormat,
}
 
impl fmt::Display for MyError {
  fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
    match self {
      Self::InvalidFormat => write!(f, "invalid format"),
    }
  }
}
 
impl error::Error for MyError {}
 
fn main() {
  let error: Box<dyn error::Error> = Box::new(MyError::InvalidFormat);
  eprintln!("error: {}", error);
}