aboutsummaryrefslogtreecommitdiffstats
path: root/src/yaml.rs
diff options
context:
space:
mode:
authorTeddy Wing2022-03-17 23:57:09 +0100
committerTeddy Wing2022-03-17 23:57:09 +0100
commitbd16ac71423ea5abd3d406d8f9fe579f3fec8ee0 (patch)
treed18e85a5496beca8c0d9795b86cce4af40594048 /src/yaml.rs
parentb6549729be4b12c3a88ce70761d00c5d50946fc0 (diff)
downloadyaqlite-bd16ac71423ea5abd3d406d8f9fe579f3fec8ee0.tar.bz2
Yaml: Wrap a `Cow<'_, yaml_rust::Yaml>` instead of `yaml_rust::Yaml`
This allows us to use a borrowed `yaml_rust::Yaml` for `ToSql` and an owned `yaml_rust::Yaml` for `FromSql`.
Diffstat (limited to 'src/yaml.rs')
-rw-r--r--src/yaml.rs4
1 files changed, 3 insertions, 1 deletions
diff --git a/src/yaml.rs b/src/yaml.rs
index 0acaf59..1ad490c 100644
--- a/src/yaml.rs
+++ b/src/yaml.rs
@@ -24,6 +24,8 @@ pub fn extract(
}
}
yaml::Yaml::Hash(ref mut hash) => {
+ use std::borrow::Cow;
+
let keys: Vec<yaml::Yaml> = hash.keys().map(|k| k.clone()).collect();
let columns_as_yaml: Vec<yaml::Yaml> = table_columns.keys()
.map(|c| yaml::Yaml::from_str(c))
@@ -58,7 +60,7 @@ pub fn extract(
)
)?;
- let values = hash.values().map(|v| Yaml(v));
+ let values = hash.values().map(|v| Yaml(Cow::Borrowed(v)));
stmt.insert(rusqlite::params_from_iter(values))?;
}
_ => {}