Merge branch 'master' into gwenn-trace_extension

This commit is contained in:
John Gallagher 2015-12-01 11:13:23 -05:00
commit 49cb1efe62
6 changed files with 15 additions and 15 deletions

View File

@ -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)

View File

@ -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"

View File

@ -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)

View File

@ -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.

View File

@ -15,4 +15,4 @@ load_extension = []
pkg-config = "~0.3" pkg-config = "~0.3"
[dependencies] [dependencies]
libc = "~0.1" libc = "~0.2"

View File

@ -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)))
} }
} }