mirror of
				https://github.com/isar/rusqlite.git
				synced 2025-10-31 22:08:55 +08:00 
			
		
		
		
	Fix Clippy warnings
This commit is contained in:
		| @@ -63,22 +63,22 @@ use types::{ToSql, ToSqlOutput, FromSql, FromSqlError, ValueRef}; | |||||||
|  |  | ||||||
| use {Result, Error, Connection, str_to_cstring, InnerConnection}; | use {Result, Error, Connection, str_to_cstring, InnerConnection}; | ||||||
|  |  | ||||||
| pub fn set_result<'a>(ctx: *mut sqlite3_context, result: &ToSqlOutput<'a>) { | pub unsafe fn set_result<'a>(ctx: *mut sqlite3_context, result: &ToSqlOutput<'a>) { | ||||||
|     let value = match *result { |     let value = match *result { | ||||||
|         ToSqlOutput::Borrowed(v) => v, |         ToSqlOutput::Borrowed(v) => v, | ||||||
|         ToSqlOutput::Owned(ref v) => ValueRef::from(v), |         ToSqlOutput::Owned(ref v) => ValueRef::from(v), | ||||||
|  |  | ||||||
|         #[cfg(feature = "blob")] |         #[cfg(feature = "blob")] | ||||||
|         ToSqlOutput::ZeroBlob(len) => { |         ToSqlOutput::ZeroBlob(len) => { | ||||||
|             return unsafe { ffi::sqlite3_result_zeroblob(ctx, len) }; |             return ffi::sqlite3_result_zeroblob(ctx, len); | ||||||
|         } |         } | ||||||
|     }; |     }; | ||||||
|  |  | ||||||
|     match value { |     match value { | ||||||
|         ValueRef::Null => unsafe { ffi::sqlite3_result_null(ctx) }, |         ValueRef::Null => ffi::sqlite3_result_null(ctx), | ||||||
|         ValueRef::Integer(i) => unsafe { ffi::sqlite3_result_int64(ctx, i) }, |         ValueRef::Integer(i) => ffi::sqlite3_result_int64(ctx, i), | ||||||
|         ValueRef::Real(r) => unsafe { ffi::sqlite3_result_double(ctx, r) }, |         ValueRef::Real(r) => ffi::sqlite3_result_double(ctx, r), | ||||||
|         ValueRef::Text(s) => unsafe { |         ValueRef::Text(s) => { | ||||||
|             let length = s.len(); |             let length = s.len(); | ||||||
|             if length > ::std::i32::MAX as usize { |             if length > ::std::i32::MAX as usize { | ||||||
|                 ffi::sqlite3_result_error_toobig(ctx); |                 ffi::sqlite3_result_error_toobig(ctx); | ||||||
| @@ -96,7 +96,7 @@ pub fn set_result<'a>(ctx: *mut sqlite3_context, result: &ToSqlOutput<'a>) { | |||||||
|                 ffi::sqlite3_result_text(ctx, c_str.as_ptr(), length as c_int, destructor); |                 ffi::sqlite3_result_text(ctx, c_str.as_ptr(), length as c_int, destructor); | ||||||
|             } |             } | ||||||
|         }, |         }, | ||||||
|         ValueRef::Blob(b) => unsafe { |         ValueRef::Blob(b) => { | ||||||
|             let length = b.len(); |             let length = b.len(); | ||||||
|             if length > ::std::i32::MAX as usize { |             if length > ::std::i32::MAX as usize { | ||||||
|                 ffi::sqlite3_result_error_toobig(ctx); |                 ffi::sqlite3_result_error_toobig(ctx); | ||||||
|   | |||||||
| @@ -58,7 +58,7 @@ impl CSVTab { | |||||||
| } | } | ||||||
|  |  | ||||||
| impl VTab<CSVTabCursor> for CSVTab { | impl VTab<CSVTabCursor> for CSVTab { | ||||||
|     fn connect(db: *mut ffi::sqlite3, _aux: *mut c_void, args: &[&[u8]]) -> Result<CSVTab> { |     unsafe fn connect(db: *mut ffi::sqlite3, _aux: *mut c_void, args: &[&[u8]]) -> Result<CSVTab> { | ||||||
|         if args.len() < 4 { |         if args.len() < 4 { | ||||||
|             return Err(Error::ModuleError("no CSV file specified".to_owned())); |             return Err(Error::ModuleError("no CSV file specified".to_owned())); | ||||||
|         } |         } | ||||||
| @@ -159,7 +159,7 @@ impl CSVTabCursor { | |||||||
|     fn new(reader: csv::Reader<File>) -> CSVTabCursor { |     fn new(reader: csv::Reader<File>) -> CSVTabCursor { | ||||||
|         CSVTabCursor { |         CSVTabCursor { | ||||||
|             base: Default::default(), |             base: Default::default(), | ||||||
|             reader: reader, |             reader, | ||||||
|             row_number: 0, |             row_number: 0, | ||||||
|             cols: Vec::new(), |             cols: Vec::new(), | ||||||
|             eof: false, |             eof: false, | ||||||
| @@ -168,8 +168,8 @@ impl CSVTabCursor { | |||||||
| } | } | ||||||
|  |  | ||||||
| impl VTabCursor<CSVTab> for CSVTabCursor { | impl VTabCursor<CSVTab> for CSVTabCursor { | ||||||
|     fn vtab(&self) -> &mut CSVTab { |     fn vtab(&self) -> &CSVTab { | ||||||
|         unsafe { &mut *(self.base.pVtab as *mut CSVTab) } |         unsafe { & *(self.base.pVtab as *const CSVTab) } | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     fn filter(&mut self, |     fn filter(&mut self, | ||||||
|   | |||||||
| @@ -2,7 +2,6 @@ | |||||||
| //! Port of C ["intarray"](http://www.sqlite.org/cgi/src/finfo?name=src/test_intarray.h). | //! Port of C ["intarray"](http://www.sqlite.org/cgi/src/finfo?name=src/test_intarray.h). | ||||||
| use std::cell::RefCell; | use std::cell::RefCell; | ||||||
| use std::default::Default; | use std::default::Default; | ||||||
| use std::mem; |  | ||||||
| use std::os::raw::{c_char, c_int, c_void}; | use std::os::raw::{c_char, c_int, c_void}; | ||||||
| use std::rc::Rc; | use std::rc::Rc; | ||||||
|  |  | ||||||
| @@ -61,14 +60,14 @@ struct IntArrayVTab { | |||||||
| } | } | ||||||
|  |  | ||||||
| impl VTab<IntArrayVTabCursor> for IntArrayVTab { | impl VTab<IntArrayVTabCursor> for IntArrayVTab { | ||||||
|     fn connect(db: *mut ffi::sqlite3, |     unsafe fn connect(db: *mut ffi::sqlite3, | ||||||
|                aux: *mut c_void, |                aux: *mut c_void, | ||||||
|                _args: &[&[u8]]) |                _args: &[&[u8]]) | ||||||
|                -> Result<IntArrayVTab> { |                -> Result<IntArrayVTab> { | ||||||
|         let array = unsafe { mem::transmute(aux) }; |         let array = aux as *const Rc<RefCell<Vec<i64>>>; | ||||||
|         let vtab = IntArrayVTab { |         let vtab = IntArrayVTab { | ||||||
|             base: Default::default(), |             base: Default::default(), | ||||||
|             array: array, |             array, | ||||||
|         }; |         }; | ||||||
|         try!(declare_vtab(db, "CREATE TABLE x(value INTEGER PRIMARY KEY)")); |         try!(declare_vtab(db, "CREATE TABLE x(value INTEGER PRIMARY KEY)")); | ||||||
|         Ok(vtab) |         Ok(vtab) | ||||||
| @@ -102,8 +101,8 @@ impl IntArrayVTabCursor { | |||||||
| } | } | ||||||
|  |  | ||||||
| impl VTabCursor<IntArrayVTab> for IntArrayVTabCursor { | impl VTabCursor<IntArrayVTab> for IntArrayVTabCursor { | ||||||
|     fn vtab(&self) -> &mut IntArrayVTab { |     fn vtab(&self) -> &IntArrayVTab { | ||||||
|         unsafe { &mut *(self.base.pVtab as *mut IntArrayVTab) } |         unsafe { & *(self.base.pVtab as *const IntArrayVTab) } | ||||||
|     } |     } | ||||||
|     fn filter(&mut self, |     fn filter(&mut self, | ||||||
|               _idx_num: c_int, |               _idx_num: c_int, | ||||||
|   | |||||||
| @@ -2,7 +2,6 @@ | |||||||
| //! (See http://sqlite.org/vtab.html) | //! (See http://sqlite.org/vtab.html) | ||||||
| use std::borrow::Cow::{self, Borrowed, Owned}; | use std::borrow::Cow::{self, Borrowed, Owned}; | ||||||
| use std::ffi::CString; | use std::ffi::CString; | ||||||
| use std::mem; |  | ||||||
| use std::os::raw::{c_char, c_int, c_void}; | use std::os::raw::{c_char, c_int, c_void}; | ||||||
| use std::ptr; | use std::ptr; | ||||||
| use std::slice; | use std::slice; | ||||||
| @@ -46,12 +45,12 @@ pub trait VTab<C: VTabCursor<Self>>: Sized { | |||||||
|     /// Create a new instance of a virtual table in response to a CREATE VIRTUAL TABLE statement. |     /// Create a new instance of a virtual table in response to a CREATE VIRTUAL TABLE statement. | ||||||
|     /// The `db` parameter is a pointer to the SQLite database connection that is executing |     /// The `db` parameter is a pointer to the SQLite database connection that is executing | ||||||
|     /// the CREATE VIRTUAL TABLE statement. |     /// the CREATE VIRTUAL TABLE statement. | ||||||
|     fn create(db: *mut ffi::sqlite3, aux: *mut c_void, args: &[&[u8]]) -> Result<Self> { |     unsafe fn create(db: *mut ffi::sqlite3, aux: *mut c_void, args: &[&[u8]]) -> Result<Self> { | ||||||
|         Self::connect(db, aux, args) |         Self::connect(db, aux, args) | ||||||
|     } |     } | ||||||
|     /// Similar to `create`. The difference is that `connect` is called to establish a new connection |     /// Similar to `create`. The difference is that `connect` is called to establish a new connection | ||||||
|     /// to an _existing_ virtual table whereas `create` is called to create a new virtual table from scratch. |     /// to an _existing_ virtual table whereas `create` is called to create a new virtual table from scratch. | ||||||
|     fn connect(db: *mut ffi::sqlite3, aux: *mut c_void, args: &[&[u8]]) -> Result<Self>; |     unsafe fn connect(db: *mut ffi::sqlite3, aux: *mut c_void, args: &[&[u8]]) -> Result<Self>; | ||||||
|     /// Determine the best way to access the virtual table. |     /// Determine the best way to access the virtual table. | ||||||
|     fn best_index(&self, info: &mut IndexInfo) -> Result<()>; |     fn best_index(&self, info: &mut IndexInfo) -> Result<()>; | ||||||
|     /// Create a new cursor used for accessing a virtual table. |     /// Create a new cursor used for accessing a virtual table. | ||||||
| @@ -183,7 +182,7 @@ impl<'a> IndexConstraintUsage<'a> { | |||||||
| /// Virtual table cursor trait. | /// Virtual table cursor trait. | ||||||
| pub trait VTabCursor<V: VTab<Self>>: Sized { | pub trait VTabCursor<V: VTab<Self>>: Sized { | ||||||
|     /// Accessor to the associated virtual table. |     /// Accessor to the associated virtual table. | ||||||
|     fn vtab(&self) -> &mut V; |     fn vtab(&self) -> &V; | ||||||
|     /// Begin a search of a virtual table. |     /// Begin a search of a virtual table. | ||||||
|     fn filter(&mut self, idx_num: c_int, idx_str: Option<&str>, args: &Values) -> Result<()>; |     fn filter(&mut self, idx_num: c_int, idx_str: Option<&str>, args: &Values) -> Result<()>; | ||||||
|     /// Advance cursor to the next row of a result set initiated by `filter`. |     /// Advance cursor to the next row of a result set initiated by `filter`. | ||||||
| @@ -206,7 +205,7 @@ impl Context { | |||||||
|     pub fn set_result<T: ToSql>(&mut self, value: &T) { |     pub fn set_result<T: ToSql>(&mut self, value: &T) { | ||||||
|         let t = value.to_sql(); |         let t = value.to_sql(); | ||||||
|         match t { |         match t { | ||||||
|             Ok(ref value) => set_result(self.0, value), |             Ok(ref value) => unsafe { set_result(self.0, value) }, | ||||||
|             Err(err) => unsafe { report_error(self.0, &err) }, |             Err(err) => unsafe { report_error(self.0, &err) }, | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
| @@ -296,7 +295,7 @@ impl InnerConnection { | |||||||
|                     ffi::sqlite3_create_module_v2(self.db(), |                     ffi::sqlite3_create_module_v2(self.db(), | ||||||
|                                                   c_name.as_ptr(), |                                                   c_name.as_ptr(), | ||||||
|                                                   module, |                                                   module, | ||||||
|                                                   mem::transmute(boxed_aux), |                                                   boxed_aux as *mut c_void, | ||||||
|                                                   Some(free_boxed_value::<A>)) |                                                   Some(free_boxed_value::<A>)) | ||||||
|                 } |                 } | ||||||
|             } |             } | ||||||
| @@ -313,9 +312,9 @@ impl InnerConnection { | |||||||
| } | } | ||||||
|  |  | ||||||
| /// Declare the schema of a virtual table. | /// Declare the schema of a virtual table. | ||||||
| pub fn declare_vtab(db: *mut ffi::sqlite3, sql: &str) -> Result<()> { | pub unsafe fn declare_vtab(db: *mut ffi::sqlite3, sql: &str) -> Result<()> { | ||||||
|     let c_sql = try!(CString::new(sql)); |     let c_sql = try!(CString::new(sql)); | ||||||
|     let rc = unsafe { ffi::sqlite3_declare_vtab(db, c_sql.as_ptr()) }; |     let rc = ffi::sqlite3_declare_vtab(db, c_sql.as_ptr()); | ||||||
|     if rc == ffi::SQLITE_OK { |     if rc == ffi::SQLITE_OK { | ||||||
|         Ok(()) |         Ok(()) | ||||||
|     } else { |     } else { | ||||||
| @@ -335,7 +334,7 @@ pub fn escape_double_quote(identifier: &str) -> Cow<str> { | |||||||
|  |  | ||||||
| // FIXME copy/paste from function.rs | // FIXME copy/paste from function.rs | ||||||
| unsafe extern "C" fn free_boxed_value<T>(p: *mut c_void) { | unsafe extern "C" fn free_boxed_value<T>(p: *mut c_void) { | ||||||
|     let _: Box<T> = Box::from_raw(mem::transmute(p)); |     let _: Box<T> = Box::from_raw(p as *mut T); | ||||||
| } | } | ||||||
|  |  | ||||||
| #[macro_export] | #[macro_export] | ||||||
|   | |||||||
| @@ -61,7 +61,7 @@ struct SeriesTab { | |||||||
|  |  | ||||||
|  |  | ||||||
| impl VTab<SeriesTabCursor> for SeriesTab { | impl VTab<SeriesTabCursor> for SeriesTab { | ||||||
|     fn connect(db: *mut ffi::sqlite3, |     unsafe fn connect(db: *mut ffi::sqlite3, | ||||||
|                _aux: *mut c_void, |                _aux: *mut c_void, | ||||||
|                _args: &[&[u8]]) |                _args: &[&[u8]]) | ||||||
|                -> Result<SeriesTab> { |                -> Result<SeriesTab> { | ||||||
| @@ -172,8 +172,8 @@ impl SeriesTabCursor { | |||||||
|     } |     } | ||||||
| } | } | ||||||
| impl VTabCursor<SeriesTab> for SeriesTabCursor { | impl VTabCursor<SeriesTab> for SeriesTabCursor { | ||||||
|     fn vtab(&self) -> &mut SeriesTab { |     fn vtab(&self) -> &SeriesTab { | ||||||
|         unsafe { &mut *(self.base.pVtab as *mut SeriesTab) } |         unsafe { & *(self.base.pVtab as *const SeriesTab) } | ||||||
|     } |     } | ||||||
|     fn filter(&mut self, |     fn filter(&mut self, | ||||||
|               idx_num: c_int, |               idx_num: c_int, | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user