mirror of
https://github.com/clap-rs/clap
synced 2024-12-13 22:32:33 +00:00
fix!: Allow adding new enum variants
Without being a breaking change. This seems minor enough that we can break this during the release candidates. For `ValueHint`, the completion scripts are 99% of who should be `match`ing it. `AppSettings` as undocumented variants that people shouldn't use. BREAKING CHANGE: `clap::{ValueHint, ErrorKind, AppSettings, ArgSettings}` are now `non_exhaustive`.
This commit is contained in:
parent
be223df828
commit
98a1c2e6c9
5 changed files with 7 additions and 0 deletions
|
@ -396,6 +396,9 @@ fn value_completion(arg: &Arg) -> Option<String> {
|
|||
ValueHint::Hostname => "_hosts",
|
||||
ValueHint::Url => "_urls",
|
||||
ValueHint::EmailAddress => "_email_addresses",
|
||||
_ => {
|
||||
return None;
|
||||
}
|
||||
}
|
||||
.to_string(),
|
||||
)
|
||||
|
|
|
@ -23,6 +23,7 @@ impl Default for AppFlags {
|
|||
///
|
||||
/// [`App`]: crate::App
|
||||
#[derive(Debug, PartialEq, Copy, Clone)]
|
||||
#[non_exhaustive]
|
||||
pub enum AppSettings {
|
||||
/// Try not to fail on parse errors, like missing option values.
|
||||
///
|
||||
|
|
|
@ -25,6 +25,7 @@ impl Default for ArgFlags {
|
|||
/// [`Arg::unset_setting`]: crate::Arg::unset_setting()
|
||||
/// [`Arg::is_set`]: crate::Arg::is_set()
|
||||
#[derive(Debug, PartialEq, Copy, Clone)]
|
||||
#[non_exhaustive]
|
||||
pub enum ArgSettings {
|
||||
/// Specifies that an arg must be used
|
||||
Required,
|
||||
|
|
|
@ -25,6 +25,7 @@ use std::str::FromStr;
|
|||
/// [^1]: fish completions currently only support named arguments (e.g. -o or --opt), not
|
||||
/// positional arguments.
|
||||
#[derive(Debug, PartialEq, Copy, Clone)]
|
||||
#[non_exhaustive]
|
||||
pub enum ValueHint {
|
||||
/// Default value if hint is not specified. Follows shell default behavior, which is usually
|
||||
/// auto-completing filenames.
|
||||
|
|
|
@ -24,6 +24,7 @@ pub type Result<T> = StdResult<T, Error>;
|
|||
|
||||
/// Command line argument parser kind of error
|
||||
#[derive(Debug, Copy, Clone, PartialEq)]
|
||||
#[non_exhaustive]
|
||||
pub enum ErrorKind {
|
||||
/// Occurs when an [`Arg`] has a set of possible values,
|
||||
/// and the user provides a value which isn't in that set.
|
||||
|
|
Loading…
Reference in a new issue