Refactoring: Use function chaining rather than matching
This commit is contained in:
parent
5db3d0c278
commit
c92e459e3a
4 changed files with 10 additions and 36 deletions
|
@ -52,12 +52,7 @@ impl<P: Predicate> Filter<Entry> for FieldPredicate<P> {
|
||||||
fn filter(&self, e: &Entry) -> bool {
|
fn filter(&self, e: &Entry) -> bool {
|
||||||
e.get_header()
|
e.get_header()
|
||||||
.read(&self.header_field_path[..])
|
.read(&self.header_field_path[..])
|
||||||
.map(|val| {
|
.map(|val| val.map(|v| (*self.predicate).evaluate(v)).unwrap_or(false))
|
||||||
match val {
|
|
||||||
None => false,
|
|
||||||
Some(v) => (*self.predicate).evaluate(v),
|
|
||||||
}
|
|
||||||
})
|
|
||||||
.unwrap_or(false)
|
.unwrap_or(false)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -18,7 +18,6 @@
|
||||||
//
|
//
|
||||||
|
|
||||||
use semver::Version;
|
use semver::Version;
|
||||||
use toml::Value;
|
|
||||||
|
|
||||||
use libimagstore::store::Entry;
|
use libimagstore::store::Entry;
|
||||||
|
|
||||||
|
@ -44,15 +43,9 @@ impl Filter<Entry> for VersionEq {
|
||||||
.read("imag.version")
|
.read("imag.version")
|
||||||
.map(|val| {
|
.map(|val| {
|
||||||
val.map_or(false, |v| {
|
val.map_or(false, |v| {
|
||||||
match *v {
|
v.as_str()
|
||||||
Value::String(ref s) => {
|
.map(|s| Version::parse(s).map(|v| v == self.version).unwrap_or(false))
|
||||||
match Version::parse(&s[..]) {
|
.unwrap_or(false)
|
||||||
Ok(v) => v == self.version,
|
|
||||||
_ => false
|
|
||||||
}
|
|
||||||
},
|
|
||||||
_ => false,
|
|
||||||
}
|
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
.unwrap_or(false)
|
.unwrap_or(false)
|
||||||
|
|
|
@ -18,7 +18,6 @@
|
||||||
//
|
//
|
||||||
|
|
||||||
use semver::Version;
|
use semver::Version;
|
||||||
use toml::Value;
|
|
||||||
|
|
||||||
use libimagstore::store::Entry;
|
use libimagstore::store::Entry;
|
||||||
|
|
||||||
|
@ -44,15 +43,9 @@ impl Filter<Entry> for VersionGt {
|
||||||
.read("imag.version")
|
.read("imag.version")
|
||||||
.map(|val| {
|
.map(|val| {
|
||||||
val.map_or(false, |v| {
|
val.map_or(false, |v| {
|
||||||
match *v {
|
v.as_str()
|
||||||
Value::String(ref s) => {
|
.map(|s| Version::parse(s).map(|v| v > self.version).unwrap_or(false))
|
||||||
match Version::parse(&s[..]) {
|
.unwrap_or(false)
|
||||||
Ok(v) => v > self.version,
|
|
||||||
_ => false
|
|
||||||
}
|
|
||||||
},
|
|
||||||
_ => false,
|
|
||||||
}
|
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
.unwrap_or(false)
|
.unwrap_or(false)
|
||||||
|
|
|
@ -18,7 +18,6 @@
|
||||||
//
|
//
|
||||||
|
|
||||||
use semver::Version;
|
use semver::Version;
|
||||||
use toml::Value;
|
|
||||||
|
|
||||||
use libimagstore::store::Entry;
|
use libimagstore::store::Entry;
|
||||||
|
|
||||||
|
@ -44,15 +43,9 @@ impl Filter<Entry> for VersionLt {
|
||||||
.read("imag.version")
|
.read("imag.version")
|
||||||
.map(|val| {
|
.map(|val| {
|
||||||
val.map_or(false, |v| {
|
val.map_or(false, |v| {
|
||||||
match *v {
|
v.as_str()
|
||||||
Value::String(ref s) => {
|
.map(|s| Version::parse(s).map(|v| v < self.version).unwrap_or(false))
|
||||||
match Version::parse(&s[..]) {
|
.unwrap_or(false)
|
||||||
Ok(v) => v < self.version,
|
|
||||||
_ => false
|
|
||||||
}
|
|
||||||
},
|
|
||||||
_ => false,
|
|
||||||
}
|
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
.unwrap_or(false)
|
.unwrap_or(false)
|
||||||
|
|
Loading…
Reference in a new issue