pub struct Error<F: ErrorFormatter = DefaultFormatter> { /* private fields */ }
Expand description
Command Line Argument Parser Error
See Command::error
to create an error.
Implementations§
Source§impl<F: ErrorFormatter> Error<F>
impl<F: ErrorFormatter> Error<F>
Sourcepub fn raw(kind: ErrorKind, message: impl Display) -> Self
pub fn raw(kind: ErrorKind, message: impl Display) -> Self
Create an unformatted error
This is for you need to pass the error up to
a place that has access to the Command
at which point you can call Error::format
.
Prefer Command::error
for generating errors.
Sourcepub fn format(self, cmd: &mut Command) -> Self
pub fn format(self, cmd: &mut Command) -> Self
Format the existing message with the Command’s context
Sourcepub fn new(kind: ErrorKind) -> Self
pub fn new(kind: ErrorKind) -> Self
Create an error with a pre-defined message
See also
- [
Error::insert
] Error::with_cmd
§Example
let cmd = clap::Command::new("prog");
let mut err = clap::Error::new(ErrorKind::ValueValidation)
.with_cmd(&cmd);
err.insert(ContextKind::InvalidArg, ContextValue::String("--foo".to_owned()));
err.insert(ContextKind::InvalidValue, ContextValue::String("bar".to_owned()));
err.print();
Sourcepub fn with_cmd(self, cmd: &Command) -> Self
pub fn with_cmd(self, cmd: &Command) -> Self
Apply Command
’s formatting to the error
Generally, this is used with Error::new
Sourcepub fn apply<EF: ErrorFormatter>(self) -> Error<EF>
pub fn apply<EF: ErrorFormatter>(self) -> Error<EF>
Apply an alternative formatter to the error
§Example
let cmd = Command::new("foo")
.arg(Arg::new("input").required(true));
let matches = cmd
.try_get_matches_from(["foo", "input.txt"])
.map_err(|e| e.apply::<KindFormatter>())
.unwrap_or_else(|e| e.exit());
Sourcepub fn use_stderr(&self) -> bool
pub fn use_stderr(&self) -> bool
Should the message be written to stdout
or not?
Sourcepub fn exit_code(&self) -> i32
pub fn exit_code(&self) -> i32
Returns the exit code that .exit
will exit the process with.
When the error’s kind would print to stderr
this returns 2
,
else it returns 0
.
Sourcepub fn exit(&self) -> !
pub fn exit(&self) -> !
Prints the error and exits.
Depending on the error kind, this either prints to stderr
and exits with a status of 2
or prints to stdout
and exits with a status of 0
.
Sourcepub fn print(&self) -> Result<()>
pub fn print(&self) -> Result<()>
Prints formatted and colored error to stdout
or stderr
according to its error kind
§Example
use clap::Command;
match Command::new("Command").try_get_matches() {
Ok(matches) => {
// do_something
},
Err(err) => {
err.print().expect("Error writing Error");
// do_something
},
};
Trait Implementations§
Source§impl<F: ErrorFormatter> Debug for Error<F>
impl<F: ErrorFormatter> Debug for Error<F>
Source§impl<F: ErrorFormatter> Display for Error<F>
impl<F: ErrorFormatter> Display for Error<F>
Source§impl<F: ErrorFormatter> Error for Error<F>
impl<F: ErrorFormatter> Error for Error<F>
Source§fn source(&self) -> Option<&(dyn Error + 'static)>
fn source(&self) -> Option<&(dyn Error + 'static)>
1.0.0 · Source§fn description(&self) -> &str
fn description(&self) -> &str
Auto Trait Implementations§
impl<F> Freeze for Error<F>
impl<F = KindFormatter> !RefUnwindSafe for Error<F>
impl<F> Send for Error<F>where
F: Send,
impl<F> Sync for Error<F>where
F: Sync,
impl<F> Unpin for Error<F>where
F: Unpin,
impl<F = KindFormatter> !UnwindSafe for Error<F>
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Layout§
Note: Most layout information is completely unstable and may even differ between compilations. The only exception is types with certain repr(...)
attributes. Please see the Rust Reference's “Type Layout” chapter for details on type layout guarantees.
Size: 8 bytes