diff options
author | Teddy Wing | 2022-03-17 23:57:09 +0100 |
---|---|---|
committer | Teddy Wing | 2022-03-17 23:57:09 +0100 |
commit | bd16ac71423ea5abd3d406d8f9fe579f3fec8ee0 (patch) | |
tree | d18e85a5496beca8c0d9795b86cce4af40594048 /src/yaml.rs | |
parent | b6549729be4b12c3a88ce70761d00c5d50946fc0 (diff) | |
download | yaqlite-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.rs | 4 |
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))?; } _ => {} |