use chrono::NaiveDate; use thiserror::Error; #[derive(Error, Debug)] pub enum ParseDateError { #[error("bad argumens provided for parsing the date attribute")] BadArgumentsProvided, } fn parse_date(year: i32, month:u32, day: u32) -> anyhow::Result { let date = match NaiveDate::from_ymd_opt(year, month, day) { Some(d) => d, None => return Err(ParseDateError::BadArgumentsProvided.into()), }; Ok(date) } #[test] pub fn test_thiserror() { println!("Hello, world!"); let date = match parse_date(2024, 13, 11) { Ok(n) => n, Err(e) => { println!("Bad result: {:?}", e); return; } }; println!("{}", date); }