]> git.proxmox.com Git - rustc.git/blob - vendor/clap-2.34.0/src/args/any_arg.rs
New upstream version 1.63.0+dfsg1
[rustc.git] / vendor / clap-2.34.0 / src / args / any_arg.rs
1 // Std
2 use std::{
3 ffi::{OsStr, OsString},
4 fmt as std_fmt,
5 rc::Rc,
6 };
7
8 // Internal
9 use crate::{
10 args::settings::ArgSettings,
11 map::{self, VecMap},
12 INTERNAL_ERROR_MSG,
13 };
14
15 #[doc(hidden)]
16 pub trait AnyArg<'n, 'e>: std_fmt::Display {
17 fn name(&self) -> &'n str;
18 fn overrides(&self) -> Option<&[&'e str]>;
19 fn aliases(&self) -> Option<Vec<&'e str>>;
20 fn requires(&self) -> Option<&[(Option<&'e str>, &'n str)]>;
21 fn blacklist(&self) -> Option<&[&'e str]>;
22 fn required_unless(&self) -> Option<&[&'e str]>;
23 fn is_set(&self, setting: ArgSettings) -> bool;
24 fn set(&mut self, setting: ArgSettings);
25 fn has_switch(&self) -> bool;
26 fn max_vals(&self) -> Option<u64>;
27 fn min_vals(&self) -> Option<u64>;
28 fn num_vals(&self) -> Option<u64>;
29 fn possible_vals(&self) -> Option<&[&'e str]>;
30 #[cfg_attr(feature = "cargo-clippy", allow(clippy::type_complexity))]
31 fn validator(&self) -> Option<&Rc<Fn(String) -> Result<(), String>>>;
32 #[cfg_attr(feature = "cargo-clippy", allow(clippy::type_complexity))]
33 fn validator_os(&self) -> Option<&Rc<Fn(&OsStr) -> Result<(), OsString>>>;
34 fn short(&self) -> Option<char>;
35 fn long(&self) -> Option<&'e str>;
36 fn val_delim(&self) -> Option<char>;
37 fn takes_value(&self) -> bool;
38 fn val_names(&self) -> Option<&VecMap<&'e str>>;
39 fn help(&self) -> Option<&'e str>;
40 fn long_help(&self) -> Option<&'e str>;
41 fn default_val(&self) -> Option<&'e OsStr>;
42 fn default_vals_ifs(&self) -> Option<map::Values<(&'n str, Option<&'e OsStr>, &'e OsStr)>>;
43 fn env<'s>(&'s self) -> Option<(&'n OsStr, Option<&'s OsString>)>;
44 fn longest_filter(&self) -> bool;
45 fn val_terminator(&self) -> Option<&'e str>;
46 }
47
48 pub trait DispOrder {
49 fn disp_ord(&self) -> usize;
50 }
51
52 impl<'n, 'e, 'z, T: ?Sized> AnyArg<'n, 'e> for &'z T
53 where
54 T: AnyArg<'n, 'e> + 'z,
55 {
56 fn name(&self) -> &'n str {
57 (*self).name()
58 }
59 fn overrides(&self) -> Option<&[&'e str]> {
60 (*self).overrides()
61 }
62 fn aliases(&self) -> Option<Vec<&'e str>> {
63 (*self).aliases()
64 }
65 fn requires(&self) -> Option<&[(Option<&'e str>, &'n str)]> {
66 (*self).requires()
67 }
68 fn blacklist(&self) -> Option<&[&'e str]> {
69 (*self).blacklist()
70 }
71 fn required_unless(&self) -> Option<&[&'e str]> {
72 (*self).required_unless()
73 }
74 fn is_set(&self, a: ArgSettings) -> bool {
75 (*self).is_set(a)
76 }
77 fn set(&mut self, _: ArgSettings) {
78 panic!("{}", INTERNAL_ERROR_MSG)
79 }
80 fn has_switch(&self) -> bool {
81 (*self).has_switch()
82 }
83 fn max_vals(&self) -> Option<u64> {
84 (*self).max_vals()
85 }
86 fn min_vals(&self) -> Option<u64> {
87 (*self).min_vals()
88 }
89 fn num_vals(&self) -> Option<u64> {
90 (*self).num_vals()
91 }
92 fn possible_vals(&self) -> Option<&[&'e str]> {
93 (*self).possible_vals()
94 }
95 #[cfg_attr(feature = "cargo-clippy", allow(clippy::type_complexity))]
96 fn validator(&self) -> Option<&Rc<Fn(String) -> Result<(), String>>> {
97 (*self).validator()
98 }
99 #[cfg_attr(feature = "cargo-clippy", allow(clippy::type_complexity))]
100 fn validator_os(&self) -> Option<&Rc<Fn(&OsStr) -> Result<(), OsString>>> {
101 (*self).validator_os()
102 }
103 fn short(&self) -> Option<char> {
104 (*self).short()
105 }
106 fn long(&self) -> Option<&'e str> {
107 (*self).long()
108 }
109 fn val_delim(&self) -> Option<char> {
110 (*self).val_delim()
111 }
112 fn takes_value(&self) -> bool {
113 (*self).takes_value()
114 }
115 fn val_names(&self) -> Option<&VecMap<&'e str>> {
116 (*self).val_names()
117 }
118 fn help(&self) -> Option<&'e str> {
119 (*self).help()
120 }
121 fn long_help(&self) -> Option<&'e str> {
122 (*self).long_help()
123 }
124 fn default_val(&self) -> Option<&'e OsStr> {
125 (*self).default_val()
126 }
127 fn default_vals_ifs(&self) -> Option<map::Values<(&'n str, Option<&'e OsStr>, &'e OsStr)>> {
128 (*self).default_vals_ifs()
129 }
130 fn env<'s>(&'s self) -> Option<(&'n OsStr, Option<&'s OsString>)> {
131 (*self).env()
132 }
133 fn longest_filter(&self) -> bool {
134 (*self).longest_filter()
135 }
136 fn val_terminator(&self) -> Option<&'e str> {
137 (*self).val_terminator()
138 }
139 }