mirror of
https://github.com/isar/rusqlite.git
synced 2024-11-23 00:39:20 +08:00
Fix missing docs
This commit is contained in:
parent
8a08dff115
commit
76fc22c653
@ -6,33 +6,55 @@ use crate::ffi;
|
|||||||
use crate::{Connection, Result};
|
use crate::{Connection, Result};
|
||||||
|
|
||||||
/// Database Connection Configuration Options
|
/// Database Connection Configuration Options
|
||||||
|
/// See [Database Connection Configuration Options](https://sqlite.org/c3ref/c_dbconfig_enable_fkey.html) for details.
|
||||||
#[repr(i32)]
|
#[repr(i32)]
|
||||||
#[allow(non_snake_case, non_camel_case_types)]
|
#[allow(non_snake_case, non_camel_case_types)]
|
||||||
#[non_exhaustive]
|
#[non_exhaustive]
|
||||||
pub enum DbConfig {
|
pub enum DbConfig {
|
||||||
//SQLITE_DBCONFIG_MAINDBNAME = 1000, /* const char* */
|
//SQLITE_DBCONFIG_MAINDBNAME = 1000, /* const char* */
|
||||||
//SQLITE_DBCONFIG_LOOKASIDE = 1001, /* void* int int */
|
//SQLITE_DBCONFIG_LOOKASIDE = 1001, /* void* int int */
|
||||||
|
/// Enable or disable the enforcement of foreign key constraints.
|
||||||
SQLITE_DBCONFIG_ENABLE_FKEY = 1002,
|
SQLITE_DBCONFIG_ENABLE_FKEY = 1002,
|
||||||
|
/// Enable or disable triggers.
|
||||||
SQLITE_DBCONFIG_ENABLE_TRIGGER = 1003,
|
SQLITE_DBCONFIG_ENABLE_TRIGGER = 1003,
|
||||||
|
/// Enable or disable the fts3_tokenizer() function which is part of the
|
||||||
|
/// FTS3 full-text search engine extension.
|
||||||
SQLITE_DBCONFIG_ENABLE_FTS3_TOKENIZER = 1004, // 3.12.0
|
SQLITE_DBCONFIG_ENABLE_FTS3_TOKENIZER = 1004, // 3.12.0
|
||||||
//SQLITE_DBCONFIG_ENABLE_LOAD_EXTENSION = 1005,
|
//SQLITE_DBCONFIG_ENABLE_LOAD_EXTENSION = 1005,
|
||||||
|
/// In WAL mode, enable or disable the checkpoint operation before closing
|
||||||
|
/// the connection.
|
||||||
SQLITE_DBCONFIG_NO_CKPT_ON_CLOSE = 1006, // 3.16.2
|
SQLITE_DBCONFIG_NO_CKPT_ON_CLOSE = 1006, // 3.16.2
|
||||||
|
/// Activates or deactivates the query planner stability guarantee (QPSG).
|
||||||
SQLITE_DBCONFIG_ENABLE_QPSG = 1007, // 3.20.0
|
SQLITE_DBCONFIG_ENABLE_QPSG = 1007, // 3.20.0
|
||||||
|
/// Includes or excludes output for any operations performed by trigger
|
||||||
|
/// programs from the output of EXPLAIN QUERY PLAN commands.
|
||||||
SQLITE_DBCONFIG_TRIGGER_EQP = 1008, // 3.22.0
|
SQLITE_DBCONFIG_TRIGGER_EQP = 1008, // 3.22.0
|
||||||
//SQLITE_DBCONFIG_RESET_DATABASE = 1009,
|
//SQLITE_DBCONFIG_RESET_DATABASE = 1009,
|
||||||
|
/// Activates or deactivates the "defensive" flag for a database connection.
|
||||||
SQLITE_DBCONFIG_DEFENSIVE = 1010, // 3.26.0
|
SQLITE_DBCONFIG_DEFENSIVE = 1010, // 3.26.0
|
||||||
|
/// Activates or deactivates the "writable_schema" flag.
|
||||||
#[cfg(feature = "modern_sqlite")]
|
#[cfg(feature = "modern_sqlite")]
|
||||||
SQLITE_DBCONFIG_WRITABLE_SCHEMA = 1011, // 3.28.0
|
SQLITE_DBCONFIG_WRITABLE_SCHEMA = 1011, // 3.28.0
|
||||||
|
/// Activates or deactivates the legacy behavior of the ALTER TABLE RENAME
|
||||||
|
/// command.
|
||||||
#[cfg(feature = "modern_sqlite")]
|
#[cfg(feature = "modern_sqlite")]
|
||||||
SQLITE_DBCONFIG_LEGACY_ALTER_TABLE = 1012, // 3.29
|
SQLITE_DBCONFIG_LEGACY_ALTER_TABLE = 1012, // 3.29
|
||||||
|
/// Activates or deactivates the legacy double-quoted string literal
|
||||||
|
/// misfeature for DML statements only.
|
||||||
#[cfg(feature = "modern_sqlite")]
|
#[cfg(feature = "modern_sqlite")]
|
||||||
SQLITE_DBCONFIG_DQS_DML = 1013, // 3.29.0
|
SQLITE_DBCONFIG_DQS_DML = 1013, // 3.29.0
|
||||||
|
/// Activates or deactivates the legacy double-quoted string literal
|
||||||
|
/// misfeature for DDL statements.
|
||||||
#[cfg(feature = "modern_sqlite")]
|
#[cfg(feature = "modern_sqlite")]
|
||||||
SQLITE_DBCONFIG_DQS_DDL = 1014, // 3.29.0
|
SQLITE_DBCONFIG_DQS_DDL = 1014, // 3.29.0
|
||||||
|
/// Enable or disable views.
|
||||||
#[cfg(feature = "modern_sqlite")]
|
#[cfg(feature = "modern_sqlite")]
|
||||||
SQLITE_DBCONFIG_ENABLE_VIEW = 1015, // 3.30.0
|
SQLITE_DBCONFIG_ENABLE_VIEW = 1015, // 3.30.0
|
||||||
|
/// Activates or deactivates the legacy file format flag.
|
||||||
#[cfg(feature = "modern_sqlite")]
|
#[cfg(feature = "modern_sqlite")]
|
||||||
SQLITE_DBCONFIG_LEGACY_FILE_FORMAT = 1016, // 3.31.0
|
SQLITE_DBCONFIG_LEGACY_FILE_FORMAT = 1016, // 3.31.0
|
||||||
|
/// Tells SQLite to assume that database schemas (the contents of the
|
||||||
|
/// sqlite_master tables) are untainted by malicious content.
|
||||||
#[cfg(feature = "modern_sqlite")]
|
#[cfg(feature = "modern_sqlite")]
|
||||||
SQLITE_DBCONFIG_TRUSTED_SCHEMA = 1017, // 3.31.0
|
SQLITE_DBCONFIG_TRUSTED_SCHEMA = 1017, // 3.31.0
|
||||||
}
|
}
|
||||||
|
@ -94,6 +94,7 @@ pub enum Error {
|
|||||||
#[allow(dead_code)]
|
#[allow(dead_code)]
|
||||||
ModuleError(String),
|
ModuleError(String),
|
||||||
|
|
||||||
|
/// An unwinding panic occurs in an UDF (user-defined function).
|
||||||
#[cfg(feature = "functions")]
|
#[cfg(feature = "functions")]
|
||||||
UnwindingPanic,
|
UnwindingPanic,
|
||||||
|
|
||||||
|
@ -267,17 +267,26 @@ where
|
|||||||
}
|
}
|
||||||
|
|
||||||
bitflags::bitflags! {
|
bitflags::bitflags! {
|
||||||
#[doc = "Function Flags."]
|
/// Function Flags.
|
||||||
#[doc = "See [sqlite3_create_function](https://sqlite.org/c3ref/create_function.html) for details."]
|
/// See [sqlite3_create_function](https://sqlite.org/c3ref/create_function.html)
|
||||||
|
/// and [Function Flags](https://sqlite.org/c3ref/c_deterministic.html) for details.
|
||||||
#[repr(C)]
|
#[repr(C)]
|
||||||
pub struct FunctionFlags: ::std::os::raw::c_int {
|
pub struct FunctionFlags: ::std::os::raw::c_int {
|
||||||
|
/// Specifies UTF-8 as the text encoding this SQL function prefers for its parameters.
|
||||||
const SQLITE_UTF8 = ffi::SQLITE_UTF8;
|
const SQLITE_UTF8 = ffi::SQLITE_UTF8;
|
||||||
|
/// Specifies UTF-16 using little-endian byte order as the text encoding this SQL function prefers for its parameters.
|
||||||
const SQLITE_UTF16LE = ffi::SQLITE_UTF16LE;
|
const SQLITE_UTF16LE = ffi::SQLITE_UTF16LE;
|
||||||
|
/// Specifies UTF-16 using big-endian byte order as the text encoding this SQL function prefers for its parameters.
|
||||||
const SQLITE_UTF16BE = ffi::SQLITE_UTF16BE;
|
const SQLITE_UTF16BE = ffi::SQLITE_UTF16BE;
|
||||||
|
/// Specifies UTF-16 using native byte order as the text encoding this SQL function prefers for its parameters.
|
||||||
const SQLITE_UTF16 = ffi::SQLITE_UTF16;
|
const SQLITE_UTF16 = ffi::SQLITE_UTF16;
|
||||||
|
/// Means that the function always gives the same output when the input parameters are the same.
|
||||||
const SQLITE_DETERMINISTIC = ffi::SQLITE_DETERMINISTIC;
|
const SQLITE_DETERMINISTIC = ffi::SQLITE_DETERMINISTIC;
|
||||||
|
/// Means that the function may only be invoked from top-level SQL.
|
||||||
const SQLITE_DIRECTONLY = 0x0000_0008_0000; // 3.30.0
|
const SQLITE_DIRECTONLY = 0x0000_0008_0000; // 3.30.0
|
||||||
|
/// Indicates to SQLite that a function may call `sqlite3_value_subtype()` to inspect the sub-types of its arguments.
|
||||||
const SQLITE_SUBTYPE = 0x0000_0010_0000; // 3.30.0
|
const SQLITE_SUBTYPE = 0x0000_0010_0000; // 3.30.0
|
||||||
|
/// Means that the function is unlikely to cause problems even if misused.
|
||||||
const SQLITE_INNOCUOUS = 0x0000_0020_0000; // 3.31.0
|
const SQLITE_INNOCUOUS = 0x0000_0020_0000; // 3.31.0
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -14,9 +14,13 @@ use crate::{Connection, InnerConnection};
|
|||||||
#[repr(i32)]
|
#[repr(i32)]
|
||||||
#[non_exhaustive]
|
#[non_exhaustive]
|
||||||
pub enum Action {
|
pub enum Action {
|
||||||
|
/// Unsupported / unexpected action
|
||||||
UNKNOWN = -1,
|
UNKNOWN = -1,
|
||||||
|
/// DELETE command
|
||||||
SQLITE_DELETE = ffi::SQLITE_DELETE,
|
SQLITE_DELETE = ffi::SQLITE_DELETE,
|
||||||
|
/// INSERT command
|
||||||
SQLITE_INSERT = ffi::SQLITE_INSERT,
|
SQLITE_INSERT = ffi::SQLITE_INSERT,
|
||||||
|
/// UPDATE command
|
||||||
SQLITE_UPDATE = ffi::SQLITE_UPDATE,
|
SQLITE_UPDATE = ffi::SQLITE_UPDATE,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
19
src/lib.rs
19
src/lib.rs
@ -53,7 +53,7 @@
|
|||||||
//! Ok(())
|
//! Ok(())
|
||||||
//! }
|
//! }
|
||||||
//! ```
|
//! ```
|
||||||
#![allow(unknown_lints)]
|
#![warn(missing_docs)]
|
||||||
|
|
||||||
pub use libsqlite3_sys as ffi;
|
pub use libsqlite3_sys as ffi;
|
||||||
|
|
||||||
@ -806,19 +806,32 @@ impl fmt::Debug for Connection {
|
|||||||
}
|
}
|
||||||
|
|
||||||
bitflags::bitflags! {
|
bitflags::bitflags! {
|
||||||
#[doc = "Flags for opening SQLite database connections."]
|
/// Flags for opening SQLite database connections.
|
||||||
#[doc = "See [sqlite3_open_v2](http://www.sqlite.org/c3ref/open.html) for details."]
|
/// See [sqlite3_open_v2](http://www.sqlite.org/c3ref/open.html) for details.
|
||||||
#[repr(C)]
|
#[repr(C)]
|
||||||
pub struct OpenFlags: ::std::os::raw::c_int {
|
pub struct OpenFlags: ::std::os::raw::c_int {
|
||||||
|
/// The database is opened in read-only mode.
|
||||||
|
/// If the database does not already exist, an error is returned.
|
||||||
const SQLITE_OPEN_READ_ONLY = ffi::SQLITE_OPEN_READONLY;
|
const SQLITE_OPEN_READ_ONLY = ffi::SQLITE_OPEN_READONLY;
|
||||||
|
/// The database is opened for reading and writing if possible,
|
||||||
|
/// or reading only if the file is write protected by the operating system.
|
||||||
|
/// In either case the database must already exist, otherwise an error is returned.
|
||||||
const SQLITE_OPEN_READ_WRITE = ffi::SQLITE_OPEN_READWRITE;
|
const SQLITE_OPEN_READ_WRITE = ffi::SQLITE_OPEN_READWRITE;
|
||||||
|
/// The database is created if it does not already exist
|
||||||
const SQLITE_OPEN_CREATE = ffi::SQLITE_OPEN_CREATE;
|
const SQLITE_OPEN_CREATE = ffi::SQLITE_OPEN_CREATE;
|
||||||
|
/// The filename can be interpreted as a URI if this flag is set.
|
||||||
const SQLITE_OPEN_URI = 0x0000_0040;
|
const SQLITE_OPEN_URI = 0x0000_0040;
|
||||||
|
/// The database will be opened as an in-memory database.
|
||||||
const SQLITE_OPEN_MEMORY = 0x0000_0080;
|
const SQLITE_OPEN_MEMORY = 0x0000_0080;
|
||||||
|
/// The new database connection will use the "multi-thread" threading mode.
|
||||||
const SQLITE_OPEN_NO_MUTEX = ffi::SQLITE_OPEN_NOMUTEX;
|
const SQLITE_OPEN_NO_MUTEX = ffi::SQLITE_OPEN_NOMUTEX;
|
||||||
|
/// The new database connection will use the "serialized" threading mode.
|
||||||
const SQLITE_OPEN_FULL_MUTEX = ffi::SQLITE_OPEN_FULLMUTEX;
|
const SQLITE_OPEN_FULL_MUTEX = ffi::SQLITE_OPEN_FULLMUTEX;
|
||||||
|
/// The database is opened shared cache enabled.
|
||||||
const SQLITE_OPEN_SHARED_CACHE = 0x0002_0000;
|
const SQLITE_OPEN_SHARED_CACHE = 0x0002_0000;
|
||||||
|
/// The database is opened shared cache disabled.
|
||||||
const SQLITE_OPEN_PRIVATE_CACHE = 0x0004_0000;
|
const SQLITE_OPEN_PRIVATE_CACHE = 0x0004_0000;
|
||||||
|
/// The database filename is not allowed to be a symbolic link.
|
||||||
const SQLITE_OPEN_NOFOLLOW = 0x0100_0000;
|
const SQLITE_OPEN_NOFOLLOW = 0x0100_0000;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -35,6 +35,8 @@ impl<'stmt> Rows<'stmt> {
|
|||||||
Ok((*self).get())
|
Ok((*self).get())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Map over this `Rows`, converting it to a [`Map`], which
|
||||||
|
/// implements `FallibleIterator`.
|
||||||
pub fn map<F, B>(self, f: F) -> Map<'stmt, F>
|
pub fn map<F, B>(self, f: F) -> Map<'stmt, F>
|
||||||
where
|
where
|
||||||
F: FnMut(&Row<'_>) -> Result<B>,
|
F: FnMut(&Row<'_>) -> Result<B>,
|
||||||
|
@ -6,8 +6,14 @@ use std::ops::Deref;
|
|||||||
#[derive(Copy, Clone)]
|
#[derive(Copy, Clone)]
|
||||||
#[non_exhaustive]
|
#[non_exhaustive]
|
||||||
pub enum TransactionBehavior {
|
pub enum TransactionBehavior {
|
||||||
|
/// DEFERRED means that the transaction does not actually start until the
|
||||||
|
/// database is first accessed.
|
||||||
Deferred,
|
Deferred,
|
||||||
|
/// IMMEDIATE cause the database connection to start a new write
|
||||||
|
/// immediately, without waiting for a writes statement.
|
||||||
Immediate,
|
Immediate,
|
||||||
|
/// EXCLUSIVE prevents other database connections from reading the database
|
||||||
|
/// while the transaction is underway.
|
||||||
Exclusive,
|
Exclusive,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -86,6 +86,7 @@ pub type FromSqlResult<T> = Result<T, FromSqlError>;
|
|||||||
/// fetching values as i64 and then doing the interpretation themselves or by
|
/// fetching values as i64 and then doing the interpretation themselves or by
|
||||||
/// defining a newtype and implementing `FromSql`/`ToSql` for it.
|
/// defining a newtype and implementing `FromSql`/`ToSql` for it.
|
||||||
pub trait FromSql: Sized {
|
pub trait FromSql: Sized {
|
||||||
|
/// Converts SQLite value into Rust value.
|
||||||
fn column_result(value: ValueRef<'_>) -> FromSqlResult<Self>;
|
fn column_result(value: ValueRef<'_>) -> FromSqlResult<Self>;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -82,12 +82,19 @@ mod value_ref;
|
|||||||
#[derive(Copy, Clone)]
|
#[derive(Copy, Clone)]
|
||||||
pub struct Null;
|
pub struct Null;
|
||||||
|
|
||||||
|
/// SQLite data types.
|
||||||
|
/// See [Fundamental Datatypes](https://sqlite.org/c3ref/c_blob.html).
|
||||||
#[derive(Clone, Debug, PartialEq)]
|
#[derive(Clone, Debug, PartialEq)]
|
||||||
pub enum Type {
|
pub enum Type {
|
||||||
|
/// NULL
|
||||||
Null,
|
Null,
|
||||||
|
/// 64-bit signed integer
|
||||||
Integer,
|
Integer,
|
||||||
|
/// 64-bit IEEE floating point number
|
||||||
Real,
|
Real,
|
||||||
|
/// String
|
||||||
Text,
|
Text,
|
||||||
|
/// BLOB
|
||||||
Blob,
|
Blob,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -87,6 +87,7 @@ impl ToSql for ToSqlOutput<'_> {
|
|||||||
|
|
||||||
/// A trait for types that can be converted into SQLite values.
|
/// A trait for types that can be converted into SQLite values.
|
||||||
pub trait ToSql {
|
pub trait ToSql {
|
||||||
|
/// Converts Rust value to SQLite value
|
||||||
fn to_sql(&self) -> Result<ToSqlOutput<'_>>;
|
fn to_sql(&self) -> Result<ToSqlOutput<'_>>;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -109,6 +109,7 @@ where
|
|||||||
}
|
}
|
||||||
|
|
||||||
impl Value {
|
impl Value {
|
||||||
|
/// Returns SQLite fundamental datatype.
|
||||||
pub fn data_type(&self) -> Type {
|
pub fn data_type(&self) -> Type {
|
||||||
match *self {
|
match *self {
|
||||||
Value::Null => Type::Null,
|
Value::Null => Type::Null,
|
||||||
|
@ -20,6 +20,7 @@ pub enum ValueRef<'a> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
impl ValueRef<'_> {
|
impl ValueRef<'_> {
|
||||||
|
/// Returns SQLite fundamental datatype.
|
||||||
pub fn data_type(&self) -> Type {
|
pub fn data_type(&self) -> Type {
|
||||||
match *self {
|
match *self {
|
||||||
ValueRef::Null => Type::Null,
|
ValueRef::Null => Type::Null,
|
||||||
|
@ -46,6 +46,7 @@ pub(crate) unsafe extern "C" fn free_array(p: *mut c_void) {
|
|||||||
let _: Array = Rc::from_raw(p as *const Vec<Value>);
|
let _: Array = Rc::from_raw(p as *const Vec<Value>);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Array parameter / pointer
|
||||||
pub type Array = Rc<Vec<Value>>;
|
pub type Array = Rc<Vec<Value>>;
|
||||||
|
|
||||||
impl ToSql for Array {
|
impl ToSql for Array {
|
||||||
|
@ -205,7 +205,9 @@ impl VTabConnection {
|
|||||||
///
|
///
|
||||||
/// (See [SQLite doc](https://sqlite.org/c3ref/vtab.html))
|
/// (See [SQLite doc](https://sqlite.org/c3ref/vtab.html))
|
||||||
pub unsafe trait VTab: Sized {
|
pub unsafe trait VTab: Sized {
|
||||||
|
/// Client data passed to `Connection::create_module`.
|
||||||
type Aux;
|
type Aux;
|
||||||
|
/// Specific cursor implementation
|
||||||
type Cursor: VTabCursor;
|
type Cursor: VTabCursor;
|
||||||
|
|
||||||
/// Establish a new connection to an existing virtual table.
|
/// Establish a new connection to an existing virtual table.
|
||||||
@ -256,8 +258,9 @@ pub trait CreateVTab: VTab {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// `feature = "vtab"` Index constraint operator.
|
/// `feature = "vtab"` Index constraint operator.
|
||||||
|
/// See [Virtual Table Constraint Operator Codes](https://sqlite.org/c3ref/c_index_constraint_eq.html) for details.
|
||||||
#[derive(Debug, PartialEq)]
|
#[derive(Debug, PartialEq)]
|
||||||
#[allow(non_snake_case, non_camel_case_types)]
|
#[allow(non_snake_case, non_camel_case_types, missing_docs)]
|
||||||
#[non_exhaustive]
|
#[non_exhaustive]
|
||||||
pub enum IndexConstraintOp {
|
pub enum IndexConstraintOp {
|
||||||
SQLITE_INDEX_CONSTRAINT_EQ,
|
SQLITE_INDEX_CONSTRAINT_EQ,
|
||||||
@ -329,6 +332,7 @@ impl IndexInfo {
|
|||||||
unsafe { (*self.0).nOrderBy as usize }
|
unsafe { (*self.0).nOrderBy as usize }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Information about what parameters to pass to `VTabCursor.filter`.
|
||||||
pub fn constraint_usage(&mut self, constraint_idx: usize) -> IndexConstraintUsage<'_> {
|
pub fn constraint_usage(&mut self, constraint_idx: usize) -> IndexConstraintUsage<'_> {
|
||||||
let constraint_usages = unsafe {
|
let constraint_usages = unsafe {
|
||||||
slice::from_raw_parts_mut((*self.0).aConstraintUsage, (*self.0).nConstraint as usize)
|
slice::from_raw_parts_mut((*self.0).aConstraintUsage, (*self.0).nConstraint as usize)
|
||||||
@ -495,6 +499,7 @@ pub unsafe trait VTabCursor: Sized {
|
|||||||
pub struct Context(*mut ffi::sqlite3_context);
|
pub struct Context(*mut ffi::sqlite3_context);
|
||||||
|
|
||||||
impl Context {
|
impl Context {
|
||||||
|
/// Set current cell value
|
||||||
pub fn set_result<T: ToSql>(&mut self, value: &T) -> Result<()> {
|
pub fn set_result<T: ToSql>(&mut self, value: &T) -> Result<()> {
|
||||||
let t = value.to_sql()?;
|
let t = value.to_sql()?;
|
||||||
unsafe { set_result(self.0, &t) };
|
unsafe { set_result(self.0, &t) };
|
||||||
@ -511,14 +516,17 @@ pub struct Values<'a> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
impl Values<'_> {
|
impl Values<'_> {
|
||||||
|
/// Returns the number of values.
|
||||||
pub fn len(&self) -> usize {
|
pub fn len(&self) -> usize {
|
||||||
self.args.len()
|
self.args.len()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Returns `true` if there is no value.
|
||||||
pub fn is_empty(&self) -> bool {
|
pub fn is_empty(&self) -> bool {
|
||||||
self.args.is_empty()
|
self.args.is_empty()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Returns value at `idx`
|
||||||
pub fn get<T: FromSql>(&self, idx: usize) -> Result<T> {
|
pub fn get<T: FromSql>(&self, idx: usize) -> Result<T> {
|
||||||
let arg = self.args[idx];
|
let arg = self.args[idx];
|
||||||
let value = unsafe { ValueRef::from_value(arg) };
|
let value = unsafe { ValueRef::from_value(arg) };
|
||||||
@ -558,6 +566,7 @@ impl Values<'_> {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Turns `Values` into an iterator.
|
||||||
pub fn iter(&self) -> ValueIter<'_> {
|
pub fn iter(&self) -> ValueIter<'_> {
|
||||||
ValueIter {
|
ValueIter {
|
||||||
iter: self.args.iter(),
|
iter: self.args.iter(),
|
||||||
@ -574,6 +583,7 @@ impl<'a> IntoIterator for &'a Values<'a> {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// `Values` iterator.
|
||||||
pub struct ValueIter<'a> {
|
pub struct ValueIter<'a> {
|
||||||
iter: slice::Iter<'a, *mut ffi::sqlite3_value>,
|
iter: slice::Iter<'a, *mut ffi::sqlite3_value>,
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user