From d78addd46aa7633346c47dd310c972ef0e9029fa Mon Sep 17 00:00:00 2001 From: Teddy Wing Date: Sat, 19 Mar 2022 00:37:32 +0100 Subject: select(): Build a `yaml_rust::yaml::Hash` for each row Instead of my earlier `std::collections::HashMap`, build the type we want to return directly in the row closure. Required copying some data like the column names, but I don't see a way around that. I suppose we could make `yaml_rust::Yaml`s from the column headers in the row closure too instead of copying an existing column header that we otherwise never use. This nearly passes the test I have for this function, but it includes the `id` column in the `Yaml` hash. The primary key column will need to be removed. --- src/yaml/sql.rs | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'src/yaml') diff --git a/src/yaml/sql.rs b/src/yaml/sql.rs index 49d83f7..ef72aae 100644 --- a/src/yaml/sql.rs +++ b/src/yaml/sql.rs @@ -16,6 +16,12 @@ pub(crate) struct Yaml<'a>(pub Cow<'a, yaml::Yaml>); // impl From< +impl<'a> Yaml<'a> { + pub fn into_inner(self) -> yaml::Yaml { + self.0.into_owned() + } +} + impl<'a> rusqlite::ToSql for Yaml<'a> { fn to_sql(&self) -> rusqlite::Result> { use rusqlite::types::ToSqlOutput; -- cgit v1.2.3