pub type Error = Error;
Expand description
Command Line Argument Parser Error
See Command::error
to create an error.
Aliased Type§
struct Error { /* private fields */ }
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
Implementations
Source§impl<F> Error<F>where
F: ErrorFormatter,
impl<F> Error<F>where
F: ErrorFormatter,
Sourcepub fn raw(kind: ErrorKind, message: impl Display) -> Error<F>
pub fn raw(kind: ErrorKind, message: impl Display) -> Error<F>
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) -> Error<F>
pub fn format(self, cmd: &mut Command) -> Error<F>
Format the existing message with the Command’s context
Sourcepub fn new(kind: ErrorKind) -> Error<F>
pub fn new(kind: ErrorKind) -> Error<F>
Create an error with a pre-defined message
See also
§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) -> Error<F>
pub fn with_cmd(self, cmd: &Command) -> Error<F>
Apply Command
’s formatting to the error
Generally, this is used with Error::new
Sourcepub fn apply<EF>(self) -> Error<EF>where
EF: ErrorFormatter,
pub fn apply<EF>(self) -> Error<EF>where
EF: ErrorFormatter,
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 context(&self) -> impl Iterator<Item = (ContextKind, &ContextValue)>
pub fn context(&self) -> impl Iterator<Item = (ContextKind, &ContextValue)>
Additional information to further qualify the error
Sourcepub fn get(&self, kind: ContextKind) -> Option<&ContextValue>
pub fn get(&self, kind: ContextKind) -> Option<&ContextValue>
Lookup a piece of context
Sourcepub fn insert(
&mut self,
kind: ContextKind,
value: ContextValue,
) -> Option<ContextValue>
pub fn insert( &mut self, kind: ContextKind, value: ContextValue, ) -> Option<ContextValue>
Insert a piece of context
If this ContextKind
is already present, its value is replaced and the old value is returned.
Sourcepub fn remove(&mut self, kind: ContextKind) -> Option<ContextValue>
pub fn remove(&mut self, kind: ContextKind) -> Option<ContextValue>
Remove a piece of context, return the old value if any
The context is currently implemented in a vector, so remove
takes
linear time.
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<(), Error>
pub fn print(&self) -> Result<(), Error>
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
},
};