refactor: implements PartialEq for some of the base structs

This commit is contained in:
Kevin K 2017-03-11 12:38:24 -05:00
parent c53e273c7c
commit 96884aa1b2
No known key found for this signature in database
GPG key ID: 17218E4B3692F01A
7 changed files with 38 additions and 8 deletions

View file

@ -1168,13 +1168,12 @@ impl<'a, 'b> Parser<'a, 'b>
args.extend(self.arg_names_in_group(n));
g_vec.push(*n);
} else {
if !args.contains(n) {
args.push(*n);
}
}
}
// TODO: faster way to sort/dedup?
args.sort();
args.dedup();
args.iter().map(|s| *s).collect()
}

View file

@ -421,13 +421,14 @@ pub fn get_required_usage_from<'a, 'b>(p: &Parser<'a, 'b>,
});
ret_val.push_back(arg);
}
let mut g_vec = vec![];
let mut g_vec: Vec<String> = vec![];
for g in desc_reqs.iter().filter(|n| p.groups.iter().any(|g| &&g.name == n)) {
let g_string = p.args_in_group(g).join("|");
g_vec.push(format!("<{}>", &g_string[..g_string.len()]));
let elem = format!("<{}>", &g_string[..g_string.len()]);
if !g_vec.contains(&elem) {
g_vec.push(elem);
}
}
g_vec.sort();
g_vec.dedup();
for g in g_vec {
ret_val.push_back(g);
}

View file

@ -3327,3 +3327,9 @@ impl<'a, 'b, 'z> From<&'z Arg<'a, 'b>> for Arg<'a, 'b> {
}
}
}
impl<'n, 'e> PartialEq for Arg<'n, 'e> {
fn eq(&self, other: &Arg<'n, 'e>) -> bool {
self.b == other.b
}
}

View file

@ -26,3 +26,9 @@ impl<'n, 'e> Base<'n, 'e> {
impl<'n, 'e, 'z> From<&'z Arg<'n, 'e>> for Base<'n, 'e> {
fn from(a: &'z Arg<'n, 'e>) -> Self { a.b.clone() }
}
impl<'n, 'e> PartialEq for Base<'n, 'e> {
fn eq(&self, other: &Base<'n, 'e>) -> bool {
self.name == other.name
}
}

View file

@ -105,6 +105,12 @@ impl<'n, 'e> DispOrder for FlagBuilder<'n, 'e> {
fn disp_ord(&self) -> usize { self.s.disp_ord }
}
impl<'n, 'e> PartialEq for FlagBuilder<'n, 'e> {
fn eq(&self, other: &FlagBuilder<'n, 'e>) -> bool {
self.b == other.b
}
}
#[cfg(test)]
mod test {
use args::settings::ArgSettings;

View file

@ -149,6 +149,12 @@ impl<'n, 'e> DispOrder for OptBuilder<'n, 'e> {
fn disp_ord(&self) -> usize { self.s.disp_ord }
}
impl<'n, 'e> PartialEq for OptBuilder<'n, 'e> {
fn eq(&self, other: &OptBuilder<'n, 'e>) -> bool {
self.b == other.b
}
}
#[cfg(test)]
mod test {
use args::settings::ArgSettings;

View file

@ -138,6 +138,12 @@ impl<'n, 'e> DispOrder for PosBuilder<'n, 'e> {
fn disp_ord(&self) -> usize { self.index as usize }
}
impl<'n, 'e> PartialEq for PosBuilder<'n, 'e> {
fn eq(&self, other: &PosBuilder<'n, 'e>) -> bool {
self.b == other.b
}
}
#[cfg(test)]
mod test {
use args::settings::ArgSettings;