mirror of
https://github.com/isar/rusqlite.git
synced 2024-11-26 19:41:37 +08:00
Merge branch 'master' into gwenn-trace_extension
This commit is contained in:
commit
49cb1efe62
@ -8,3 +8,4 @@ rusqlite contributors (sorted alphabetically)
|
|||||||
* [Huon Wilson](https://github.com/huonw)
|
* [Huon Wilson](https://github.com/huonw)
|
||||||
* [Patrick Fernie](https://github.com/pfernie)
|
* [Patrick Fernie](https://github.com/pfernie)
|
||||||
* [Steve Klabnik](https://github.com/steveklabnik)
|
* [Steve Klabnik](https://github.com/steveklabnik)
|
||||||
|
* [krdln](https://github.com/krdln)
|
||||||
|
@ -19,7 +19,7 @@ trace = []
|
|||||||
[dependencies]
|
[dependencies]
|
||||||
time = "~0.1.0"
|
time = "~0.1.0"
|
||||||
bitflags = "~0.1"
|
bitflags = "~0.1"
|
||||||
libc = "~0.1"
|
libc = "~0.2"
|
||||||
|
|
||||||
[dev-dependencies]
|
[dev-dependencies]
|
||||||
tempdir = "~0.3.4"
|
tempdir = "~0.3.4"
|
||||||
|
@ -1,6 +1,9 @@
|
|||||||
# Version UPCOMING (TBD)
|
# Version UPCOMING (TBD)
|
||||||
|
|
||||||
* Adds `trace` feature that allows the use of SQLite's logging, tracing, and profiling hooks.
|
* Adds `trace` feature that allows the use of SQLite's logging, tracing, and profiling hooks.
|
||||||
|
* Slight change to the closure types passed to `query_map` and `query_and_then`:
|
||||||
|
* Remove the `'static` requirement on the closure's output type.
|
||||||
|
* Give the closure a `&SqliteRow` instead of a `SqliteRow`.
|
||||||
|
|
||||||
# Version 0.4.0 (2015-11-03)
|
# Version 0.4.0 (2015-11-03)
|
||||||
|
|
||||||
|
@ -91,7 +91,7 @@ There are other, less obvious things that may result in a panic as well, such as
|
|||||||
`collect()` on a `SqliteRows` and then trying to use the collected rows.
|
`collect()` on a `SqliteRows` and then trying to use the collected rows.
|
||||||
|
|
||||||
Strongly consider using the method `query_map()` instead, if you can.
|
Strongly consider using the method `query_map()` instead, if you can.
|
||||||
`query_map()` returns an iterator over rows-mapped-to-some-`'static`-type. This
|
`query_map()` returns an iterator over rows-mapped-to-some-type. This
|
||||||
iterator does not have any of the above issues with panics due to attempting to
|
iterator does not have any of the above issues with panics due to attempting to
|
||||||
access stale rows.
|
access stale rows.
|
||||||
|
|
||||||
|
@ -15,4 +15,4 @@ load_extension = []
|
|||||||
pkg-config = "~0.3"
|
pkg-config = "~0.3"
|
||||||
|
|
||||||
[dependencies]
|
[dependencies]
|
||||||
libc = "~0.1"
|
libc = "~0.2"
|
||||||
|
20
src/lib.rs
20
src/lib.rs
@ -705,8 +705,7 @@ impl<'conn> SqliteStatement<'conn> {
|
|||||||
/// for accessing stale rows.
|
/// for accessing stale rows.
|
||||||
pub fn query_map<'a, T, F>(&'a mut self, params: &[&ToSql], f: F)
|
pub fn query_map<'a, T, F>(&'a mut self, params: &[&ToSql], f: F)
|
||||||
-> SqliteResult<MappedRows<'a, F>>
|
-> SqliteResult<MappedRows<'a, F>>
|
||||||
where T: 'static,
|
where F: FnMut(&SqliteRow) -> T {
|
||||||
F: FnMut(SqliteRow) -> T {
|
|
||||||
let row_iter = try!(self.query(params));
|
let row_iter = try!(self.query(params));
|
||||||
|
|
||||||
Ok(MappedRows{
|
Ok(MappedRows{
|
||||||
@ -723,9 +722,8 @@ impl<'conn> SqliteStatement<'conn> {
|
|||||||
/// for accessing stale rows.
|
/// for accessing stale rows.
|
||||||
pub fn query_and_then<'a, T, E, F>(&'a mut self, params: &[&ToSql], f: F)
|
pub fn query_and_then<'a, T, E, F>(&'a mut self, params: &[&ToSql], f: F)
|
||||||
-> SqliteResult<AndThenRows<'a, F>>
|
-> SqliteResult<AndThenRows<'a, F>>
|
||||||
where T: 'static,
|
where E: convert::From<SqliteError>,
|
||||||
E: convert::From<SqliteError>,
|
F: FnMut(&SqliteRow) -> Result<T, E> {
|
||||||
F: FnMut(SqliteRow) -> Result<T, E> {
|
|
||||||
let row_iter = try!(self.query(params));
|
let row_iter = try!(self.query(params));
|
||||||
|
|
||||||
Ok(AndThenRows{
|
Ok(AndThenRows{
|
||||||
@ -797,12 +795,11 @@ pub struct MappedRows<'stmt, F> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
impl<'stmt, T, F> Iterator for MappedRows<'stmt, F>
|
impl<'stmt, T, F> Iterator for MappedRows<'stmt, F>
|
||||||
where T: 'static,
|
where F: FnMut(&SqliteRow) -> T {
|
||||||
F: FnMut(SqliteRow) -> T {
|
|
||||||
type Item = SqliteResult<T>;
|
type Item = SqliteResult<T>;
|
||||||
|
|
||||||
fn next(&mut self) -> Option<SqliteResult<T>> {
|
fn next(&mut self) -> Option<SqliteResult<T>> {
|
||||||
self.rows.next().map(|row_result| row_result.map(|row| (self.map)(row)))
|
self.rows.next().map(|row_result| row_result.map(|row| (self.map)(&row)))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -814,15 +811,14 @@ pub struct AndThenRows<'stmt, F> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
impl<'stmt, T, E, F> Iterator for AndThenRows<'stmt, F>
|
impl<'stmt, T, E, F> Iterator for AndThenRows<'stmt, F>
|
||||||
where T: 'static,
|
where E: convert::From<SqliteError>,
|
||||||
E: convert::From<SqliteError>,
|
F: FnMut(&SqliteRow) -> Result<T, E> {
|
||||||
F: FnMut(SqliteRow) -> Result<T, E> {
|
|
||||||
type Item = Result<T, E>;
|
type Item = Result<T, E>;
|
||||||
|
|
||||||
fn next(&mut self) -> Option<Self::Item> {
|
fn next(&mut self) -> Option<Self::Item> {
|
||||||
self.rows.next().map(|row_result| row_result
|
self.rows.next().map(|row_result| row_result
|
||||||
.map_err(E::from)
|
.map_err(E::from)
|
||||||
.and_then(|row| (self.map)(row)))
|
.and_then(|row| (self.map)(&row)))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user