From beda4c82c863ca053c10bd46f74899eb591b63b3 Mon Sep 17 00:00:00 2001 From: Jayson Reis Date: Mon, 25 Jun 2018 17:56:05 +0200 Subject: [PATCH] Change column_name to &str to avoid double allocation --- src/statement.rs | 6 +++--- tests/lib.rs | 8 +++++--- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/src/statement.rs b/src/statement.rs index b864d46..1a79d5e 100644 --- a/src/statement.rs +++ b/src/statement.rs @@ -57,16 +57,16 @@ impl<'l> Statement<'l> { /// Return the name of a column in the statement #[inline] - pub fn column_name(&self, i: usize) -> String { + pub fn column_name(&self, i: usize) -> &str { unsafe { let ret = ffi::sqlite3_column_name(self.raw.0, i as c_int); - c_str_to_string!(ret) + c_str_to_str!(ret).unwrap() } } /// Return column names in the statement #[inline] - pub fn column_names(&self) -> Vec { + pub fn column_names(&self) -> Vec<&str> { (0..self.columns()).map(|i| self.column_name(i)).collect() } diff --git a/tests/lib.rs b/tests/lib.rs index dbbc89d..e81fc25 100644 --- a/tests/lib.rs +++ b/tests/lib.rs @@ -142,9 +142,11 @@ fn statement_columns() { assert_eq!(statement.columns(), 4); - let column_names = statement.column_names(); - assert_eq!(column_names, vec!["id", "name", "age", "user_photo"]); - assert_eq!("user_photo", statement.column_name(3)); + { + let column_names = statement.column_names(); + assert_eq!(column_names, vec!["id", "name", "age", "user_photo"]); + assert_eq!("user_photo", statement.column_name(3)); + } assert_eq!(ok!(statement.next()), State::Row);