Coverage Report

Created: 2024-12-17 06:15

/rust/registry/src/index.crates.io-6f17d22bba15001f/futures-util-0.3.31/src/unfold_state.rs
Line
Count
Source (jump to first uncovered line)
1
use core::pin::Pin;
2
3
use pin_project_lite::pin_project;
4
5
pin_project! {
6
    /// UnfoldState used for stream and sink unfolds
7
    #[project = UnfoldStateProj]
8
    #[project_replace = UnfoldStateProjReplace]
9
    #[derive(Debug)]
10
    pub(crate) enum UnfoldState<T, R> {
11
        Value {
12
            value: T,
13
        },
14
        Future {
15
            #[pin]
16
            future: R,
17
        },
18
        Empty,
19
    }
20
}
21
22
impl<T, R> UnfoldState<T, R> {
23
0
    pub(crate) fn project_future(self: Pin<&mut Self>) -> Option<Pin<&mut R>> {
24
0
        match self.project() {
25
0
            UnfoldStateProj::Future { future } => Some(future),
26
0
            _ => None,
27
        }
28
0
    }
Unexecuted instantiation: <futures_util::unfold_state::UnfoldState<_, _>>::project_future
Unexecuted instantiation: <futures_util::unfold_state::UnfoldState<_, _>>::project_future
Unexecuted instantiation: <futures_util::unfold_state::UnfoldState<_, _>>::project_future
29
30
0
    pub(crate) fn take_value(self: Pin<&mut Self>) -> Option<T> {
31
0
        match &*self {
32
0
            Self::Value { .. } => match self.project_replace(Self::Empty) {
33
0
                UnfoldStateProjReplace::Value { value } => Some(value),
34
0
                _ => unreachable!(),
35
            },
36
0
            _ => None,
37
        }
38
0
    }
Unexecuted instantiation: <futures_util::unfold_state::UnfoldState<_, _>>::take_value
Unexecuted instantiation: <futures_util::unfold_state::UnfoldState<_, _>>::take_value
Unexecuted instantiation: <futures_util::unfold_state::UnfoldState<_, _>>::take_value
39
}