From 7a201ca5ae42ac261c9de716107fafee90cd402c Mon Sep 17 00:00:00 2001 From: LazyDope Date: Mon, 17 Jul 2023 11:10:12 -0400 Subject: [PATCH 1/2] feat(row): get column data by idx --- src/row.rs | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/src/row.rs b/src/row.rs index 34c591d0..7c12156e 100644 --- a/src/row.rs +++ b/src/row.rs @@ -384,14 +384,23 @@ impl Row { where R: FromSql<'a>, I: QueryIdx, + { + let data = self.get_column_data(idx)?; + + R::from_sql(data) + } + + /// Retrieve a column's data for a given column index. + #[track_caller] + pub fn get_column_data<'a, I>(&'a self, idx: I) -> crate::Result> + where + I: QueryIdx, { let idx = idx.idx(self).ok_or_else(|| { Error::Conversion(format!("Could not find column with index {}", idx).into()) })?; - let data = self.data.get(idx).unwrap(); - - R::from_sql(data) + self.data.get(idx).unwrap() } } From 6c8d96b5edfa97a0960b7d0ec470e302c84ea849 Mon Sep 17 00:00:00 2001 From: LazyDope Date: Mon, 17 Jul 2023 11:17:33 -0400 Subject: [PATCH 2/2] fix(row): return result --- src/row.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/row.rs b/src/row.rs index 7c12156e..e593dd2f 100644 --- a/src/row.rs +++ b/src/row.rs @@ -392,7 +392,7 @@ impl Row { /// Retrieve a column's data for a given column index. #[track_caller] - pub fn get_column_data<'a, I>(&'a self, idx: I) -> crate::Result> + pub fn get_column_data<'a, I>(&'a self, idx: I) -> crate::Result<&'a ColumnData<'static>> where I: QueryIdx, { @@ -400,7 +400,7 @@ impl Row { Error::Conversion(format!("Could not find column with index {}", idx).into()) })?; - self.data.get(idx).unwrap() + Ok(self.data.get(idx).unwrap()) } }