summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMatthias Beyer <mail@beyermatthias.de>2021-04-03 17:18:47 +0200
committerGitHub <noreply@github.com>2021-04-03 17:18:47 +0200
commitd548ffe24fd4e53a1c441de71fcd8058790e6e41 (patch)
tree46fb993755298ad665c1b341882e83ef7a43952c
parent41a87ada6d8d0b3674964621c89bffd7338dd89d (diff)
parent6e17b500e26288a245434c3e05de37f7dff08605 (diff)
Merge pull request #193 from matthiasbeyer/misc
Misc changes
-rw-r--r--src/source.rs15
-rw-r--r--src/value.rs30
2 files changed, 16 insertions, 29 deletions
diff --git a/src/source.rs b/src/source.rs
index 4d1ba53..8fb4ae3 100644
--- a/src/source.rs
+++ b/src/source.rs
@@ -14,22 +14,15 @@ pub trait Source: Debug {
fn collect(&self) -> Result<HashMap<String, Value>>;
fn collect_to(&self, cache: &mut Value) -> Result<()> {
- let props = match self.collect() {
- Ok(props) => props,
- Err(error) => {
- return Err(error);
- }
- };
-
- for (key, val) in &props {
- match path::Expression::from_str(key) {
+ self.collect()?
+ .iter()
+ .for_each(|(key, val)| match path::Expression::from_str(key) {
// Set using the path
Ok(expr) => expr.set(cache, val.clone()),
// Set diretly anyway
_ => path::Expression::Identifier(key.clone()).set(cache, val.clone()),
- }
- }
+ });
Ok(())
}
diff --git a/src/value.rs b/src/value.rs
index 602b40a..39d66bf 100644
--- a/src/value.rs
+++ b/src/value.rs
@@ -72,13 +72,8 @@ where
T: Into<Value>,
{
fn from(values: HashMap<String, T>) -> Self {
- let mut r = HashMap::new();
-
- for (k, v) in values {
- r.insert(k.clone(), v.into());
- }
-
- ValueKind::Table(r)
+ let t = values.into_iter().map(|(k, v)| (k, v.into())).collect();
+ ValueKind::Table(t)
}
}
@@ -87,13 +82,7 @@ where
T: Into<Value>,
{
fn from(values: Vec<T>) -> Self {
- let mut l = Vec::new();
-
- for v in values {
- l.push(v.into());
- }
-
- ValueKind::Array(l)
+ ValueKind::Array(values.into_iter().map(T::into).collect())
}
}
@@ -105,10 +94,15 @@ impl Display for ValueKind {
ValueKind::Integer(value) => write!(f, "{}", value),
ValueKind::Float(value) => write!(f, "{}", value),
ValueKind::Nil => write!(f, "nil"),
-
- // TODO: Figure out a nice Display for these
- ValueKind::Table(ref table) => write!(f, "{:?}", table),
- ValueKind::Array(ref array) => write!(f, "{:?}", array),
+ ValueKind::Table(ref table) => write!(f, "{{ {} }}", {
+ table
+ .iter()
+ .map(|(k, v)| format!("{} => {}, ", k, v))
+ .collect::<String>()
+ }),
+ ValueKind::Array(ref array) => write!(f, "{:?}", {
+ array.iter().map(|e| format!("{}, ", e)).collect::<String>()
+ }),
}
}
}