mirror of
https://github.com/isar/rusqlite.git
synced 2025-01-19 22:00:50 +08:00
Implement AsRef<Statement> for Row(s) (#887)
This commit is contained in:
parent
48e7561af9
commit
df02910660
@ -1,6 +1,6 @@
|
||||
use std::str;
|
||||
|
||||
use crate::{Error, Result, Row, Rows, Statement};
|
||||
use crate::{Error, Result, Statement};
|
||||
|
||||
/// Information about a column of a SQLite query.
|
||||
#[derive(Debug)]
|
||||
@ -147,72 +147,6 @@ impl Statement<'_> {
|
||||
}
|
||||
}
|
||||
|
||||
impl<'stmt> Rows<'stmt> {
|
||||
/// Get all the column names.
|
||||
#[inline]
|
||||
pub fn column_names(&self) -> Option<Vec<&str>> {
|
||||
self.stmt.map(Statement::column_names)
|
||||
}
|
||||
|
||||
/// Return the number of columns.
|
||||
#[inline]
|
||||
pub fn column_count(&self) -> Option<usize> {
|
||||
self.stmt.map(Statement::column_count)
|
||||
}
|
||||
|
||||
/// Return the name of the column.
|
||||
#[inline]
|
||||
pub fn column_name(&self, col: usize) -> Option<Result<&str>> {
|
||||
self.stmt.map(|stmt| stmt.column_name(col))
|
||||
}
|
||||
|
||||
/// Return the index of the column.
|
||||
#[inline]
|
||||
pub fn column_index(&self, name: &str) -> Option<Result<usize>> {
|
||||
self.stmt.map(|stmt| stmt.column_index(name))
|
||||
}
|
||||
|
||||
/// Returns a slice describing the columns of the Rows.
|
||||
#[inline]
|
||||
#[cfg(feature = "column_decltype")]
|
||||
pub fn columns(&self) -> Option<Vec<Column>> {
|
||||
self.stmt.map(Statement::columns)
|
||||
}
|
||||
}
|
||||
|
||||
impl<'stmt> Row<'stmt> {
|
||||
/// Get all the column names of the Row.
|
||||
#[inline]
|
||||
pub fn column_names(&self) -> Vec<&str> {
|
||||
self.stmt.column_names()
|
||||
}
|
||||
|
||||
/// Return the number of columns in the current row.
|
||||
#[inline]
|
||||
pub fn column_count(&self) -> usize {
|
||||
self.stmt.column_count()
|
||||
}
|
||||
|
||||
/// Return the name of the column.
|
||||
#[inline]
|
||||
pub fn column_name(&self, col: usize) -> Result<&str> {
|
||||
self.stmt.column_name(col)
|
||||
}
|
||||
|
||||
/// Return the index of the column.
|
||||
#[inline]
|
||||
pub fn column_index(&self, name: &str) -> Result<usize> {
|
||||
self.stmt.column_index(name)
|
||||
}
|
||||
|
||||
/// Returns a slice describing the columns of the Row.
|
||||
#[inline]
|
||||
#[cfg(feature = "column_decltype")]
|
||||
pub fn columns(&self) -> Vec<Column> {
|
||||
self.stmt.columns()
|
||||
}
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
mod test {
|
||||
use crate::{Connection, Result};
|
||||
|
@ -1861,7 +1861,7 @@ mod test {
|
||||
db.execute_batch(sql)?;
|
||||
|
||||
db.query_row("SELECT * FROM foo", [], |r| {
|
||||
assert_eq!(2, r.column_count());
|
||||
assert_eq!(2, r.as_ref().column_count());
|
||||
Ok(())
|
||||
})
|
||||
}
|
||||
|
11
src/row.rs
11
src/row.rs
@ -78,6 +78,11 @@ impl<'stmt> Rows<'stmt> {
|
||||
{
|
||||
AndThenRows { rows: self, map: f }
|
||||
}
|
||||
|
||||
/// Give access to the underlying statement
|
||||
pub fn as_ref(&self) -> Option<&Statement<'stmt>> {
|
||||
self.stmt
|
||||
}
|
||||
}
|
||||
|
||||
impl<'stmt> Rows<'stmt> {
|
||||
@ -358,6 +363,12 @@ impl<'stmt> Row<'stmt> {
|
||||
}
|
||||
}
|
||||
|
||||
impl<'stmt> AsRef<Statement<'stmt>> for Row<'stmt> {
|
||||
fn as_ref(&self) -> &Statement<'stmt> {
|
||||
self.stmt
|
||||
}
|
||||
}
|
||||
|
||||
mod sealed {
|
||||
/// This trait exists just to ensure that the only impls of `trait Params`
|
||||
/// that are allowed are ones in this crate.
|
||||
|
Loading…
x
Reference in New Issue
Block a user