Skip to main content

RowStream

Struct RowStream 

Source
#[non_exhaustive]
pub struct RowStream<'a> { /* private fields */ }
Expand description

An async stream of rows from a query result.

Rows are fetched from the server one at a time as the consumer calls next(). This provides natural backpressure and O(1) memory per row.

RowStream borrows the connection mutably. You cannot use the connection while iterating the stream. When the stream is dropped (or fully consumed), the connection is available again.

If the stream is dropped before being fully consumed, the connection is left in an inconsistent state. The Connection::needs_recovery flag is set, and you must call Connection::recover before using the connection again. To avoid this, either consume the stream fully or call RowStream::consume before dropping.

Implementations§

Source§

impl<'a> RowStream<'a>

Source

pub async fn next(&mut self) -> Result<Option<Row>>

Fetch the next row from the stream.

Returns Ok(Some(row)) when a row is available, Ok(None) when the stream is exhausted, and Err(...) on a server or protocol error. After returning None or Err, subsequent calls return None.

Source

pub fn columns(&self) -> Option<&[FieldDescription]>

Get the column metadata for the current result set.

Source

pub fn command_tag(&self) -> Option<&CommandTag>

Get the command tag after the stream ends.

Source

pub fn is_done(&self) -> bool

Returns true if the stream has been fully consumed or encountered an error.

Source

pub async fn consume(self) -> Result<CommandTag>

Consume the remaining rows in the stream, discarding them.

Trait Implementations§

Source§

impl<'a> Drop for RowStream<'a>

Source§

fn drop(&mut self)

Executes the destructor for this type. Read more
Source§

fn pin_drop(self: Pin<&mut Self>)

🔬This is a nightly-only experimental API. (pin_ergonomics)
Execute the destructor for this type, but different to Drop::drop, it requires self to be pinned. Read more

Auto Trait Implementations§

§

impl<'a> Freeze for RowStream<'a>

§

impl<'a> !RefUnwindSafe for RowStream<'a>

§

impl<'a> Send for RowStream<'a>

§

impl<'a> Sync for RowStream<'a>

§

impl<'a> Unpin for RowStream<'a>

§

impl<'a> UnsafeUnpin for RowStream<'a>

§

impl<'a> !UnwindSafe for RowStream<'a>

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<'a, T, E> AsTaggedExplicit<'a, E> for T
where T: 'a,

Source§

fn explicit(self, class: Class, tag: u32) -> TaggedParser<'a, Explicit, Self, E>

Source§

impl<'a, T, E> AsTaggedImplicit<'a, E> for T
where T: 'a,

Source§

fn implicit( self, class: Class, constructed: bool, tag: u32, ) -> TaggedParser<'a, Implicit, Self, E>

Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more