Sha256: ffe848071a99d6afcdbe8281a8a77a559a7dde434fc41f734c90e6b9b5d8a5af

Contents?: true

Size: 1000 Bytes

Versions: 22

Compression:

Stored size: 1000 Bytes

Contents

use core::pin::Pin;

use pin_project_lite::pin_project;

pin_project! {
    /// UnfoldState used for stream and sink unfolds
    #[project = UnfoldStateProj]
    #[project_replace = UnfoldStateProjReplace]
    #[derive(Debug)]
    pub(crate) enum UnfoldState<T, R> {
        Value {
            value: T,
        },
        Future {
            #[pin]
            future: R,
        },
        Empty,
    }
}

impl<T, R> UnfoldState<T, R> {
    pub(crate) fn project_future(self: Pin<&mut Self>) -> Option<Pin<&mut R>> {
        match self.project() {
            UnfoldStateProj::Future { future } => Some(future),
            _ => None,
        }
    }

    pub(crate) fn take_value(self: Pin<&mut Self>) -> Option<T> {
        match &*self {
            UnfoldState::Value { .. } => match self.project_replace(UnfoldState::Empty) {
                UnfoldStateProjReplace::Value { value } => Some(value),
                _ => unreachable!(),
            },
            _ => None,
        }
    }
}

Version data entries

22 entries across 22 versions & 1 rubygems

Version Path
wasmtime-25.0.2 ./ext/cargo-vendor/futures-util-0.3.30/src/unfold_state.rs
wasmtime-25.0.1 ./ext/cargo-vendor/futures-util-0.3.30/src/unfold_state.rs
wasmtime-25.0.0 ./ext/cargo-vendor/futures-util-0.3.30/src/unfold_state.rs
wasmtime-24.0.0 ./ext/cargo-vendor/futures-util-0.3.30/src/unfold_state.rs
wasmtime-23.0.2 ./ext/cargo-vendor/futures-util-0.3.30/src/unfold_state.rs
wasmtime-22.0.0 ./ext/cargo-vendor/futures-util-0.3.30/src/unfold_state.rs
wasmtime-21.0.1 ./ext/cargo-vendor/futures-util-0.3.30/src/unfold_state.rs
wasmtime-20.0.2 ./ext/cargo-vendor/futures-util-0.3.30/src/unfold_state.rs
wasmtime-20.0.0 ./ext/cargo-vendor/futures-util-0.3.30/src/unfold_state.rs
wasmtime-18.0.3 ./ext/cargo-vendor/futures-util-0.3.30/src/unfold_state.rs
wasmtime-17.0.1 ./ext/cargo-vendor/futures-util-0.3.30/src/unfold_state.rs
wasmtime-17.0.0 ./ext/cargo-vendor/futures-util-0.3.30/src/unfold_state.rs
wasmtime-16.0.0 ./ext/cargo-vendor/futures-util-0.3.30/src/unfold_state.rs
wasmtime-15.0.1 ./ext/cargo-vendor/futures-util-0.3.30/src/unfold_state.rs
wasmtime-15.0.0 ./ext/cargo-vendor/futures-util-0.3.30/src/unfold_state.rs
wasmtime-14.0.4 ./ext/cargo-vendor/futures-util-0.3.28/src/unfold_state.rs
wasmtime-14.0.3 ./ext/cargo-vendor/futures-util-0.3.28/src/unfold_state.rs
wasmtime-14.0.1 ./ext/cargo-vendor/futures-util-0.3.28/src/unfold_state.rs
wasmtime-14.0.0 ./ext/cargo-vendor/futures-util-0.3.28/src/unfold_state.rs
wasmtime-13.0.0 ./ext/cargo-vendor/futures-util-0.3.28/src/unfold_state.rs