Struct mongodb::SessionCursor[][src]

pub struct SessionCursor<T> where
    T: DeserializeOwned + Unpin
{ /* fields omitted */ }
Expand description

A SessionCursor is a cursor that was created with a ClientSession that must be iterated using one. To iterate, use SessionCursor::next or retrieve a SessionCursorStream using SessionCursor::stream:

// iterate using next()
let mut cursor = coll.find_with_session(None, None, &mut session).await?;
while let Some(doc) = cursor.next(&mut session).await.transpose()? {
    println!("{}", doc)
}

// iterate using `Stream`:
use futures::stream::TryStreamExt;

let mut cursor = coll.find_with_session(None, None, &mut session).await?;
let results: Vec<_> = cursor.stream(&mut session).try_collect().await?;

Implementations

impl<T> SessionCursor<T> where
    T: DeserializeOwned + Unpin
[src]

pub fn stream<'session>(
    &mut self,
    session: &'session mut ClientSession
) -> SessionCursorStream<'_, 'session, T>
[src]

Retrieves a SessionCursorStream to iterate this cursor. The session provided must be the same session used to create the cursor.

Note that the borrow checker will not allow the session to be reused in between iterations of this stream. In order to do that, either use SessionCursor::next instead or drop the stream before using the session.

use futures::stream::TryStreamExt;

// iterate over the results
let mut cursor = coll.find_with_session(doc! { "x": 1 }, None, &mut session).await?;
while let Some(doc) = cursor.stream(&mut session).try_next().await? {
    println!("{}", doc);
}

// collect the results
let mut cursor1 = coll.find_with_session(doc! { "x": 1 }, None, &mut session).await?;
let v: Vec<Document> = cursor1.stream(&mut session).try_collect().await?;

// use session between iterations
let mut cursor2 = coll.find_with_session(doc! { "x": 1 }, None, &mut session).await?;
loop {
    let doc = match cursor2.stream(&mut session).try_next().await? {
        Some(d) => d,
        None => break,
    };
    other_coll.insert_one_with_session(doc, None, &mut session).await?;
}

pub async fn next(&mut self, session: &mut ClientSession) -> Option<Result<T>>[src]

Retrieve the next result from the cursor. The session provided must be the same session used to create the cursor.

Use this method when the session needs to be used again between iterations or when the added functionality of Stream is not needed.

let mut cursor = coll.find_with_session(doc! { "x": 1 }, None, &mut session).await?;
while let Some(doc) = cursor.next(&mut session).await.transpose()? {
    other_coll.insert_one_with_session(doc, None, &mut session).await?;
}

Trait Implementations

impl<T: Debug> Debug for SessionCursor<T> where
    T: DeserializeOwned + Unpin
[src]

fn fmt(&self, f: &mut Formatter<'_>) -> Result[src]

Formats the value using the given formatter. Read more

impl<T> Drop for SessionCursor<T> where
    T: DeserializeOwned + Unpin
[src]

fn drop(&mut self)[src]

Executes the destructor for this type. Read more

Auto Trait Implementations

impl<T> !RefUnwindSafe for SessionCursor<T>

impl<T> Send for SessionCursor<T> where
    T: Send

impl<T> Sync for SessionCursor<T> where
    T: Sync

impl<T> Unpin for SessionCursor<T>

impl<T> !UnwindSafe for SessionCursor<T>

Blanket Implementations

impl<T> Any for T where
    T: 'static + ?Sized
[src]

pub fn type_id(&self) -> TypeId[src]

Gets the TypeId of self. Read more

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

pub fn borrow(&self) -> &T[src]

Immutably borrows from an owned value. Read more

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

pub fn borrow_mut(&mut self) -> &mut T[src]

Mutably borrows from an owned value. Read more

impl<T> From<T> for T[src]

pub fn from(t: T) -> T[src]

Performs the conversion.

impl<T> Instrument for T[src]

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

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

fn in_current_span(self) -> Instrumented<Self>[src]

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

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

pub fn into(self) -> U[src]

Performs the conversion.

impl<T> Same<T> for T

type Output = T

Should always be Self

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

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

Performs the conversion.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

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

The type returned in the event of a conversion error.

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

Performs the conversion.

impl<V, T> VZip<V> for T where
    V: MultiLane<T>, 

pub fn vzip(self) -> V