/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 | | } |