119625d8cSopenharmony_ci/// Command line argument parser kind of error 219625d8cSopenharmony_ci#[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)] 319625d8cSopenharmony_ci#[non_exhaustive] 419625d8cSopenharmony_cipub enum ErrorKind { 519625d8cSopenharmony_ci /// Occurs when an [`Arg`][crate::Arg] has a set of possible values, 619625d8cSopenharmony_ci /// and the user provides a value which isn't in that set. 719625d8cSopenharmony_ci /// 819625d8cSopenharmony_ci /// # Examples 919625d8cSopenharmony_ci /// 1019625d8cSopenharmony_ci /// ```rust 1119625d8cSopenharmony_ci /// # use clap::{Command, Arg, error::ErrorKind}; 1219625d8cSopenharmony_ci /// let result = Command::new("prog") 1319625d8cSopenharmony_ci /// .arg(Arg::new("speed") 1419625d8cSopenharmony_ci /// .value_parser(["fast", "slow"])) 1519625d8cSopenharmony_ci /// .try_get_matches_from(vec!["prog", "other"]); 1619625d8cSopenharmony_ci /// assert!(result.is_err()); 1719625d8cSopenharmony_ci /// assert_eq!(result.unwrap_err().kind(), ErrorKind::InvalidValue); 1819625d8cSopenharmony_ci /// ``` 1919625d8cSopenharmony_ci InvalidValue, 2019625d8cSopenharmony_ci 2119625d8cSopenharmony_ci /// Occurs when a user provides a flag, option, argument or subcommand which isn't defined. 2219625d8cSopenharmony_ci /// 2319625d8cSopenharmony_ci /// # Examples 2419625d8cSopenharmony_ci /// 2519625d8cSopenharmony_ci /// ```rust 2619625d8cSopenharmony_ci /// # use clap::{Command, arg, error::ErrorKind}; 2719625d8cSopenharmony_ci /// let result = Command::new("prog") 2819625d8cSopenharmony_ci /// .arg(arg!(--flag "some flag")) 2919625d8cSopenharmony_ci /// .try_get_matches_from(vec!["prog", "--other"]); 3019625d8cSopenharmony_ci /// assert!(result.is_err()); 3119625d8cSopenharmony_ci /// assert_eq!(result.unwrap_err().kind(), ErrorKind::UnknownArgument); 3219625d8cSopenharmony_ci /// ``` 3319625d8cSopenharmony_ci UnknownArgument, 3419625d8cSopenharmony_ci 3519625d8cSopenharmony_ci /// Occurs when the user provides an unrecognized [`Subcommand`] which meets the threshold for 3619625d8cSopenharmony_ci /// being similar enough to an existing subcommand. 3719625d8cSopenharmony_ci /// If it doesn't meet the threshold, or the 'suggestions' feature is disabled, 3819625d8cSopenharmony_ci /// the more general [`UnknownArgument`] error is returned. 3919625d8cSopenharmony_ci /// 4019625d8cSopenharmony_ci /// # Examples 4119625d8cSopenharmony_ci /// 4219625d8cSopenharmony_ci #[cfg_attr(not(feature = "suggestions"), doc = " ```no_run")] 4319625d8cSopenharmony_ci #[cfg_attr(feature = "suggestions", doc = " ```")] 4419625d8cSopenharmony_ci /// # use clap::{Command, Arg, error::ErrorKind, }; 4519625d8cSopenharmony_ci /// let result = Command::new("prog") 4619625d8cSopenharmony_ci /// .subcommand(Command::new("config") 4719625d8cSopenharmony_ci /// .about("Used for configuration") 4819625d8cSopenharmony_ci /// .arg(Arg::new("config_file") 4919625d8cSopenharmony_ci /// .help("The configuration file to use"))) 5019625d8cSopenharmony_ci /// .try_get_matches_from(vec!["prog", "confi"]); 5119625d8cSopenharmony_ci /// assert!(result.is_err()); 5219625d8cSopenharmony_ci /// assert_eq!(result.unwrap_err().kind(), ErrorKind::InvalidSubcommand); 5319625d8cSopenharmony_ci /// ``` 5419625d8cSopenharmony_ci /// 5519625d8cSopenharmony_ci /// [`Subcommand`]: crate::Subcommand 5619625d8cSopenharmony_ci /// [`UnknownArgument`]: ErrorKind::UnknownArgument 5719625d8cSopenharmony_ci InvalidSubcommand, 5819625d8cSopenharmony_ci 5919625d8cSopenharmony_ci /// Occurs when the user doesn't use equals for an option that requires equal 6019625d8cSopenharmony_ci /// sign to provide values. 6119625d8cSopenharmony_ci /// 6219625d8cSopenharmony_ci /// ```rust 6319625d8cSopenharmony_ci /// # use clap::{Command, Arg, error::ErrorKind, ArgAction}; 6419625d8cSopenharmony_ci /// let res = Command::new("prog") 6519625d8cSopenharmony_ci /// .arg(Arg::new("color") 6619625d8cSopenharmony_ci /// .action(ArgAction::Set) 6719625d8cSopenharmony_ci /// .require_equals(true) 6819625d8cSopenharmony_ci /// .long("color")) 6919625d8cSopenharmony_ci /// .try_get_matches_from(vec!["prog", "--color", "red"]); 7019625d8cSopenharmony_ci /// assert!(res.is_err()); 7119625d8cSopenharmony_ci /// assert_eq!(res.unwrap_err().kind(), ErrorKind::NoEquals); 7219625d8cSopenharmony_ci /// ``` 7319625d8cSopenharmony_ci NoEquals, 7419625d8cSopenharmony_ci 7519625d8cSopenharmony_ci /// Occurs when the user provides a value for an argument with a custom validation and the 7619625d8cSopenharmony_ci /// value fails that validation. 7719625d8cSopenharmony_ci /// 7819625d8cSopenharmony_ci /// # Examples 7919625d8cSopenharmony_ci /// 8019625d8cSopenharmony_ci /// ```rust 8119625d8cSopenharmony_ci /// # use clap::{Command, Arg, error::ErrorKind, value_parser}; 8219625d8cSopenharmony_ci /// fn is_numeric(val: &str) -> Result<(), String> { 8319625d8cSopenharmony_ci /// match val.parse::<i64>() { 8419625d8cSopenharmony_ci /// Ok(..) => Ok(()), 8519625d8cSopenharmony_ci /// Err(..) => Err(String::from("value wasn't a number!")), 8619625d8cSopenharmony_ci /// } 8719625d8cSopenharmony_ci /// } 8819625d8cSopenharmony_ci /// 8919625d8cSopenharmony_ci /// let result = Command::new("prog") 9019625d8cSopenharmony_ci /// .arg(Arg::new("num") 9119625d8cSopenharmony_ci /// .value_parser(value_parser!(u8))) 9219625d8cSopenharmony_ci /// .try_get_matches_from(vec!["prog", "NotANumber"]); 9319625d8cSopenharmony_ci /// assert!(result.is_err()); 9419625d8cSopenharmony_ci /// assert_eq!(result.unwrap_err().kind(), ErrorKind::ValueValidation); 9519625d8cSopenharmony_ci /// ``` 9619625d8cSopenharmony_ci ValueValidation, 9719625d8cSopenharmony_ci 9819625d8cSopenharmony_ci /// Occurs when a user provides more values for an argument than were defined by setting 9919625d8cSopenharmony_ci /// [`Arg::num_args`]. 10019625d8cSopenharmony_ci /// 10119625d8cSopenharmony_ci /// # Examples 10219625d8cSopenharmony_ci /// 10319625d8cSopenharmony_ci /// ```rust 10419625d8cSopenharmony_ci /// # use clap::{Command, Arg, error::ErrorKind}; 10519625d8cSopenharmony_ci /// let result = Command::new("prog") 10619625d8cSopenharmony_ci /// .arg(Arg::new("arg") 10719625d8cSopenharmony_ci /// .num_args(1..=2)) 10819625d8cSopenharmony_ci /// .try_get_matches_from(vec!["prog", "too", "many", "values"]); 10919625d8cSopenharmony_ci /// assert!(result.is_err()); 11019625d8cSopenharmony_ci /// assert_eq!(result.unwrap_err().kind(), ErrorKind::TooManyValues); 11119625d8cSopenharmony_ci /// ``` 11219625d8cSopenharmony_ci /// [`Arg::num_args`]: crate::Arg::num_args() 11319625d8cSopenharmony_ci TooManyValues, 11419625d8cSopenharmony_ci 11519625d8cSopenharmony_ci /// Occurs when the user provides fewer values for an argument than were defined by setting 11619625d8cSopenharmony_ci /// [`Arg::num_args`]. 11719625d8cSopenharmony_ci /// 11819625d8cSopenharmony_ci /// # Examples 11919625d8cSopenharmony_ci /// 12019625d8cSopenharmony_ci /// ```rust 12119625d8cSopenharmony_ci /// # use clap::{Command, Arg, error::ErrorKind}; 12219625d8cSopenharmony_ci /// let result = Command::new("prog") 12319625d8cSopenharmony_ci /// .arg(Arg::new("some_opt") 12419625d8cSopenharmony_ci /// .long("opt") 12519625d8cSopenharmony_ci /// .num_args(3..)) 12619625d8cSopenharmony_ci /// .try_get_matches_from(vec!["prog", "--opt", "too", "few"]); 12719625d8cSopenharmony_ci /// assert!(result.is_err()); 12819625d8cSopenharmony_ci /// assert_eq!(result.unwrap_err().kind(), ErrorKind::TooFewValues); 12919625d8cSopenharmony_ci /// ``` 13019625d8cSopenharmony_ci /// [`Arg::num_args`]: crate::Arg::num_args() 13119625d8cSopenharmony_ci TooFewValues, 13219625d8cSopenharmony_ci 13319625d8cSopenharmony_ci /// Occurs when the user provides a different number of values for an argument than what's 13419625d8cSopenharmony_ci /// been defined by setting [`Arg::num_args`] or than was implicitly set by 13519625d8cSopenharmony_ci /// [`Arg::value_names`]. 13619625d8cSopenharmony_ci /// 13719625d8cSopenharmony_ci /// # Examples 13819625d8cSopenharmony_ci /// 13919625d8cSopenharmony_ci /// ```rust 14019625d8cSopenharmony_ci /// # use clap::{Command, Arg, error::ErrorKind, ArgAction}; 14119625d8cSopenharmony_ci /// let result = Command::new("prog") 14219625d8cSopenharmony_ci /// .arg(Arg::new("some_opt") 14319625d8cSopenharmony_ci /// .long("opt") 14419625d8cSopenharmony_ci /// .action(ArgAction::Set) 14519625d8cSopenharmony_ci /// .num_args(2)) 14619625d8cSopenharmony_ci /// .try_get_matches_from(vec!["prog", "--opt", "wrong"]); 14719625d8cSopenharmony_ci /// assert!(result.is_err()); 14819625d8cSopenharmony_ci /// assert_eq!(result.unwrap_err().kind(), ErrorKind::WrongNumberOfValues); 14919625d8cSopenharmony_ci /// ``` 15019625d8cSopenharmony_ci /// 15119625d8cSopenharmony_ci /// [`Arg::num_args`]: crate::Arg::num_args() 15219625d8cSopenharmony_ci /// [`Arg::value_names`]: crate::Arg::value_names() 15319625d8cSopenharmony_ci WrongNumberOfValues, 15419625d8cSopenharmony_ci 15519625d8cSopenharmony_ci /// Occurs when the user provides two values which conflict with each other and can't be used 15619625d8cSopenharmony_ci /// together. 15719625d8cSopenharmony_ci /// 15819625d8cSopenharmony_ci /// # Examples 15919625d8cSopenharmony_ci /// 16019625d8cSopenharmony_ci /// ```rust 16119625d8cSopenharmony_ci /// # use clap::{Command, Arg, error::ErrorKind, ArgAction}; 16219625d8cSopenharmony_ci /// let result = Command::new("prog") 16319625d8cSopenharmony_ci /// .arg(Arg::new("debug") 16419625d8cSopenharmony_ci /// .long("debug") 16519625d8cSopenharmony_ci /// .action(ArgAction::SetTrue) 16619625d8cSopenharmony_ci /// .conflicts_with("color")) 16719625d8cSopenharmony_ci /// .arg(Arg::new("color") 16819625d8cSopenharmony_ci /// .long("color") 16919625d8cSopenharmony_ci /// .action(ArgAction::SetTrue)) 17019625d8cSopenharmony_ci /// .try_get_matches_from(vec!["prog", "--debug", "--color"]); 17119625d8cSopenharmony_ci /// assert!(result.is_err()); 17219625d8cSopenharmony_ci /// assert_eq!(result.unwrap_err().kind(), ErrorKind::ArgumentConflict); 17319625d8cSopenharmony_ci /// ``` 17419625d8cSopenharmony_ci ArgumentConflict, 17519625d8cSopenharmony_ci 17619625d8cSopenharmony_ci /// Occurs when the user does not provide one or more required arguments. 17719625d8cSopenharmony_ci /// 17819625d8cSopenharmony_ci /// # Examples 17919625d8cSopenharmony_ci /// 18019625d8cSopenharmony_ci /// ```rust 18119625d8cSopenharmony_ci /// # use clap::{Command, Arg, error::ErrorKind}; 18219625d8cSopenharmony_ci /// let result = Command::new("prog") 18319625d8cSopenharmony_ci /// .arg(Arg::new("debug") 18419625d8cSopenharmony_ci /// .required(true)) 18519625d8cSopenharmony_ci /// .try_get_matches_from(vec!["prog"]); 18619625d8cSopenharmony_ci /// assert!(result.is_err()); 18719625d8cSopenharmony_ci /// assert_eq!(result.unwrap_err().kind(), ErrorKind::MissingRequiredArgument); 18819625d8cSopenharmony_ci /// ``` 18919625d8cSopenharmony_ci MissingRequiredArgument, 19019625d8cSopenharmony_ci 19119625d8cSopenharmony_ci /// Occurs when a subcommand is required (as defined by [`Command::subcommand_required`]), 19219625d8cSopenharmony_ci /// but the user does not provide one. 19319625d8cSopenharmony_ci /// 19419625d8cSopenharmony_ci /// # Examples 19519625d8cSopenharmony_ci /// 19619625d8cSopenharmony_ci /// ```rust 19719625d8cSopenharmony_ci /// # use clap::{Command, error::ErrorKind}; 19819625d8cSopenharmony_ci /// let err = Command::new("prog") 19919625d8cSopenharmony_ci /// .subcommand_required(true) 20019625d8cSopenharmony_ci /// .subcommand(Command::new("test")) 20119625d8cSopenharmony_ci /// .try_get_matches_from(vec![ 20219625d8cSopenharmony_ci /// "myprog", 20319625d8cSopenharmony_ci /// ]); 20419625d8cSopenharmony_ci /// assert!(err.is_err()); 20519625d8cSopenharmony_ci /// assert_eq!(err.unwrap_err().kind(), ErrorKind::MissingSubcommand); 20619625d8cSopenharmony_ci /// # ; 20719625d8cSopenharmony_ci /// ``` 20819625d8cSopenharmony_ci /// 20919625d8cSopenharmony_ci /// [`Command::subcommand_required`]: crate::Command::subcommand_required 21019625d8cSopenharmony_ci MissingSubcommand, 21119625d8cSopenharmony_ci 21219625d8cSopenharmony_ci /// Occurs when the user provides a value containing invalid UTF-8. 21319625d8cSopenharmony_ci /// 21419625d8cSopenharmony_ci /// To allow arbitrary data 21519625d8cSopenharmony_ci /// - Set [`Arg::value_parser(value_parser!(OsString))`] for argument values 21619625d8cSopenharmony_ci /// - Set [`Command::external_subcommand_value_parser`] for external-subcommand 21719625d8cSopenharmony_ci /// values 21819625d8cSopenharmony_ci /// 21919625d8cSopenharmony_ci /// # Platform Specific 22019625d8cSopenharmony_ci /// 22119625d8cSopenharmony_ci /// Non-Windows platforms only (such as Linux, Unix, OSX, etc.) 22219625d8cSopenharmony_ci /// 22319625d8cSopenharmony_ci /// # Examples 22419625d8cSopenharmony_ci /// 22519625d8cSopenharmony_ci #[cfg_attr(not(unix), doc = " ```ignore")] 22619625d8cSopenharmony_ci #[cfg_attr(unix, doc = " ```")] 22719625d8cSopenharmony_ci /// # use clap::{Command, Arg, error::ErrorKind, ArgAction}; 22819625d8cSopenharmony_ci /// # use std::os::unix::ffi::OsStringExt; 22919625d8cSopenharmony_ci /// # use std::ffi::OsString; 23019625d8cSopenharmony_ci /// let result = Command::new("prog") 23119625d8cSopenharmony_ci /// .arg(Arg::new("utf8") 23219625d8cSopenharmony_ci /// .short('u') 23319625d8cSopenharmony_ci /// .action(ArgAction::Set)) 23419625d8cSopenharmony_ci /// .try_get_matches_from(vec![OsString::from("myprog"), 23519625d8cSopenharmony_ci /// OsString::from("-u"), 23619625d8cSopenharmony_ci /// OsString::from_vec(vec![0xE9])]); 23719625d8cSopenharmony_ci /// assert!(result.is_err()); 23819625d8cSopenharmony_ci /// assert_eq!(result.unwrap_err().kind(), ErrorKind::InvalidUtf8); 23919625d8cSopenharmony_ci /// ``` 24019625d8cSopenharmony_ci /// 24119625d8cSopenharmony_ci /// [`Arg::allow_invalid_utf8`]: crate::Arg::allow_invalid_utf8 24219625d8cSopenharmony_ci /// [`Command::external_subcommand_value_parser`]: crate::Command::external_subcommand_value_parser 24319625d8cSopenharmony_ci InvalidUtf8, 24419625d8cSopenharmony_ci 24519625d8cSopenharmony_ci /// Not a true "error" as it means `--help` or similar was used. 24619625d8cSopenharmony_ci /// The help message will be sent to `stdout`. 24719625d8cSopenharmony_ci /// 24819625d8cSopenharmony_ci /// **Note**: If the help is displayed due to an error (such as missing subcommands) it will 24919625d8cSopenharmony_ci /// be sent to `stderr` instead of `stdout`. 25019625d8cSopenharmony_ci /// 25119625d8cSopenharmony_ci /// # Examples 25219625d8cSopenharmony_ci /// 25319625d8cSopenharmony_ci #[cfg_attr(not(feature = "help"), doc = " ```ignore")] 25419625d8cSopenharmony_ci #[cfg_attr(feature = "help", doc = " ```")] 25519625d8cSopenharmony_ci /// # use clap::{Command, Arg, error::ErrorKind}; 25619625d8cSopenharmony_ci /// let result = Command::new("prog") 25719625d8cSopenharmony_ci /// .try_get_matches_from(vec!["prog", "--help"]); 25819625d8cSopenharmony_ci /// assert!(result.is_err()); 25919625d8cSopenharmony_ci /// assert_eq!(result.unwrap_err().kind(), ErrorKind::DisplayHelp); 26019625d8cSopenharmony_ci /// ``` 26119625d8cSopenharmony_ci DisplayHelp, 26219625d8cSopenharmony_ci 26319625d8cSopenharmony_ci /// Occurs when either an argument or a [`Subcommand`] is required, as defined by 26419625d8cSopenharmony_ci /// [`Command::arg_required_else_help`] , but the user did not provide 26519625d8cSopenharmony_ci /// one. 26619625d8cSopenharmony_ci /// 26719625d8cSopenharmony_ci /// # Examples 26819625d8cSopenharmony_ci /// 26919625d8cSopenharmony_ci /// ```rust 27019625d8cSopenharmony_ci /// # use clap::{Command, Arg, error::ErrorKind, }; 27119625d8cSopenharmony_ci /// let result = Command::new("prog") 27219625d8cSopenharmony_ci /// .arg_required_else_help(true) 27319625d8cSopenharmony_ci /// .subcommand(Command::new("config") 27419625d8cSopenharmony_ci /// .about("Used for configuration") 27519625d8cSopenharmony_ci /// .arg(Arg::new("config_file") 27619625d8cSopenharmony_ci /// .help("The configuration file to use"))) 27719625d8cSopenharmony_ci /// .try_get_matches_from(vec!["prog"]); 27819625d8cSopenharmony_ci /// assert!(result.is_err()); 27919625d8cSopenharmony_ci /// assert_eq!(result.unwrap_err().kind(), ErrorKind::DisplayHelpOnMissingArgumentOrSubcommand); 28019625d8cSopenharmony_ci /// ``` 28119625d8cSopenharmony_ci /// 28219625d8cSopenharmony_ci /// [`Subcommand`]: crate::Subcommand 28319625d8cSopenharmony_ci /// [`Command::arg_required_else_help`]: crate::Command::arg_required_else_help 28419625d8cSopenharmony_ci DisplayHelpOnMissingArgumentOrSubcommand, 28519625d8cSopenharmony_ci 28619625d8cSopenharmony_ci /// Not a true "error" as it means `--version` or similar was used. 28719625d8cSopenharmony_ci /// The message will be sent to `stdout`. 28819625d8cSopenharmony_ci /// 28919625d8cSopenharmony_ci /// # Examples 29019625d8cSopenharmony_ci /// 29119625d8cSopenharmony_ci /// ```rust 29219625d8cSopenharmony_ci /// # use clap::{Command, Arg, error::ErrorKind}; 29319625d8cSopenharmony_ci /// let result = Command::new("prog") 29419625d8cSopenharmony_ci /// .version("3.0") 29519625d8cSopenharmony_ci /// .try_get_matches_from(vec!["prog", "--version"]); 29619625d8cSopenharmony_ci /// assert!(result.is_err()); 29719625d8cSopenharmony_ci /// assert_eq!(result.unwrap_err().kind(), ErrorKind::DisplayVersion); 29819625d8cSopenharmony_ci /// ``` 29919625d8cSopenharmony_ci DisplayVersion, 30019625d8cSopenharmony_ci 30119625d8cSopenharmony_ci /// Represents an [I/O error]. 30219625d8cSopenharmony_ci /// Can occur when writing to `stderr` or `stdout` or reading a configuration file. 30319625d8cSopenharmony_ci /// 30419625d8cSopenharmony_ci /// [I/O error]: std::io::Error 30519625d8cSopenharmony_ci Io, 30619625d8cSopenharmony_ci 30719625d8cSopenharmony_ci /// Represents a [Format error] (which is a part of [`Display`]). 30819625d8cSopenharmony_ci /// Typically caused by writing to `stderr` or `stdout`. 30919625d8cSopenharmony_ci /// 31019625d8cSopenharmony_ci /// [`Display`]: std::fmt::Display 31119625d8cSopenharmony_ci /// [Format error]: std::fmt::Error 31219625d8cSopenharmony_ci Format, 31319625d8cSopenharmony_ci} 31419625d8cSopenharmony_ci 31519625d8cSopenharmony_ciimpl ErrorKind { 31619625d8cSopenharmony_ci /// End-user description of the error case, where relevant 31719625d8cSopenharmony_ci pub fn as_str(self) -> Option<&'static str> { 31819625d8cSopenharmony_ci match self { 31919625d8cSopenharmony_ci Self::InvalidValue => Some("one of the values isn't valid for an argument"), 32019625d8cSopenharmony_ci Self::UnknownArgument => Some("unexpected argument found"), 32119625d8cSopenharmony_ci Self::InvalidSubcommand => Some("unrecognized subcommand"), 32219625d8cSopenharmony_ci Self::NoEquals => Some("equal is needed when assigning values to one of the arguments"), 32319625d8cSopenharmony_ci Self::ValueValidation => Some("invalid value for one of the arguments"), 32419625d8cSopenharmony_ci Self::TooManyValues => Some("unexpected value for an argument found"), 32519625d8cSopenharmony_ci Self::TooFewValues => Some("more values required for an argument"), 32619625d8cSopenharmony_ci Self::WrongNumberOfValues => Some("too many or too few values for an argument"), 32719625d8cSopenharmony_ci Self::ArgumentConflict => { 32819625d8cSopenharmony_ci Some("an argument cannot be used with one or more of the other specified arguments") 32919625d8cSopenharmony_ci } 33019625d8cSopenharmony_ci Self::MissingRequiredArgument => { 33119625d8cSopenharmony_ci Some("one or more required arguments were not provided") 33219625d8cSopenharmony_ci } 33319625d8cSopenharmony_ci Self::MissingSubcommand => Some("a subcommand is required but one was not provided"), 33419625d8cSopenharmony_ci Self::InvalidUtf8 => Some("invalid UTF-8 was detected in one or more arguments"), 33519625d8cSopenharmony_ci Self::DisplayHelp => None, 33619625d8cSopenharmony_ci Self::DisplayHelpOnMissingArgumentOrSubcommand => None, 33719625d8cSopenharmony_ci Self::DisplayVersion => None, 33819625d8cSopenharmony_ci Self::Io => None, 33919625d8cSopenharmony_ci Self::Format => None, 34019625d8cSopenharmony_ci } 34119625d8cSopenharmony_ci } 34219625d8cSopenharmony_ci} 34319625d8cSopenharmony_ci 34419625d8cSopenharmony_ciimpl std::fmt::Display for ErrorKind { 34519625d8cSopenharmony_ci fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { 34619625d8cSopenharmony_ci self.as_str().unwrap_or_default().fmt(f) 34719625d8cSopenharmony_ci } 34819625d8cSopenharmony_ci} 349