[][src]Trait sqlx::Cursor

#[must_use = "cursor must have `.next()` called to execute query"]pub trait Cursor<'c, 'q>: Send + Unpin + Sealed {
    type Database: Database;
    fn next(
        &'cur mut self
    ) -> Pin<Box<dyn Future<Output = Result<Option<<Self::Database as HasRow<'cur>>::Row>, Error>> + 'cur + Send>>; }

Represents a result set, which is generated by executing a query against the database.

A Cursor can be created by either Executor::fetch or Query::fetch.

ⓘThis example is not tested
let mut cursor = sqlx::query("SELECT slug, title, description FROM articles")
    .fetch(&mut conn);

Initially the Cursor is positioned before the first row. The next method moves the cursor to the next row, and because it returns None when there are no more rows, it can be used in a while loop to iterate through all returned rows.

ⓘThis example is not tested
// For each row in the result set ..
while let Some(row) = cursor.next().await? {
    // .. decode a domain type from the row
    let obj = Article::from_row(row)?;
}

This trait is sealed and cannot be implemented for types outside of SQLx.

Associated Types

type Database: Database

The Database this Cursor is implemented for.

Loading content...

Required methods

fn next(
    &'cur mut self
) -> Pin<Box<dyn Future<Output = Result<Option<<Self::Database as HasRow<'cur>>::Row>, Error>> + 'cur + Send>>

Creates a future that attempts to resolve the next row in the cursor.

Loading content...

Implementors

impl<'c, 'q> Cursor<'c, 'q> for MySqlCursor<'c, 'q>[src]

type Database = MySql

impl<'c, 'q> Cursor<'c, 'q> for PgCursor<'c, 'q>[src]

type Database = Postgres

impl<'c, 'q> Cursor<'c, 'q> for SqliteCursor<'c, 'q>[src]

type Database = Sqlite

Loading content...