jargon_args/error.rs
1use crate::Key;
2use std::fmt::{Display, Formatter};
3
4/// # Error
5///
6/// This Enum currently contains two variants, MissingArgs and Other.
7///
8/// ## MissingArgs(Key)
9///
10/// This variant is used internally by Jargon to warn when a required argument
11/// (from the `res_*` functions) does not exist.
12///
13/// ## Other(String)
14///
15/// This variant is used internally by Jargon when converting other types of errors to itself.
16/// *STD ERROR TYPES ARE NOT YET IMPLEMENTED IN TRAITS*
17#[derive(Debug, Eq, PartialEq)]
18pub enum Error {
19 /// # MissingArgs(Key)
20 ///
21 /// This variant is used internally by Jargon to warn when a required argument
22 /// (from the `res_*` functions) does not exist.
23 MissingArg(Key),
24
25 /// # Other(String)
26 ///
27 /// This variant is used internally by Jargon when converting other types of errors to itself.
28 /// *STD ERROR TYPES ARE NOT YET IMPLEMENTED IN TRAITS*
29 Other(String),
30}
31
32impl std::error::Error for Error {}
33
34impl Display for Error {
35 fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
36 write!(
37 f,
38 "{}",
39 match self {
40 Error::MissingArg(k) => format!("Missing argument: '{}'", k),
41 Error::Other(e) => e.to_string(),
42 }
43 )
44 }
45}