Skip to main content

CursorStream

Struct CursorStream 

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

A streaming cursor that yields rows one at a time from a portal.

Unlike Cursor which returns batches of rows, CursorStream provides a row-by-row iterator interface. When the current batch is exhausted, it automatically fetches the next batch from the server.

CursorStream borrows the connection mutably. You cannot use the connection while iterating. 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.

Implementations§

Source§

impl<'a> CursorStream<'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) -> &[FieldDescription]

Get the column metadata for the current result set.

Source

pub fn is_done(&self) -> bool

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

Source

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

Get the command tag after the stream ends.

Source

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

Consume the remaining rows in the stream, discarding them, and close the cursor portal.

Trait Implementations§

Source§

impl<'a> Drop for CursorStream<'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 CursorStream<'a>

§

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

§

impl<'a> Send for CursorStream<'a>

§

impl<'a> Sync for CursorStream<'a>

§

impl<'a> Unpin for CursorStream<'a>

§

impl<'a> UnsafeUnpin for CursorStream<'a>

§

impl<'a> !UnwindSafe for CursorStream<'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