diff --git a/Cargo.toml b/Cargo.toml index 8f82201d1..1d54a3f1b 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -36,7 +36,7 @@ tower-service = "0.3" # tls is enabled by default, we don't want that yet tokio-tungstenite = { version = "0.10", default-features = false, optional = true } urlencoding = "1.0.0" -pin-project = "0.4.5" +pin-project = "0.4.17" tokio-rustls = { version = "0.13.1", optional = true } [dev-dependencies] diff --git a/src/filter/and.rs b/src/filter/and.rs index 96973ad86..3280cf8e5 100644 --- a/src/filter/and.rs +++ b/src/filter/and.rs @@ -3,7 +3,7 @@ use std::pin::Pin; use std::task::{Context, Poll}; use futures::ready; -use pin_project::{pin_project, project}; +use pin_project::pin_project; use super::{Combine, Filter, FilterBase, HList, Internal, Tuple}; use crate::reject::CombineRejection; @@ -41,7 +41,7 @@ pub struct AndFuture { state: State, } -#[pin_project] +#[pin_project(project = StateProj)] enum State { First(#[pin] T::Future, U), Second(Option, #[pin] U::Future), @@ -59,17 +59,15 @@ where <<::HList as Combine<::HList>>::Output as HList>::Tuple, >::One>; - #[project] fn poll(mut self: Pin<&mut Self>, cx: &mut Context) -> Poll { loop { let pin = self.as_mut().project(); - #[project] let (ex1, fut2) = match pin.state.project() { - State::First(first, second) => match ready!(first.poll(cx)) { + StateProj::First(first, second) => match ready!(first.poll(cx)) { Ok(first) => (first, second.filter(Internal)), Err(err) => return Poll::Ready(Err(From::from(err))), }, - State::Second(ex1, second) => { + StateProj::Second(ex1, second) => { let ex2 = match ready!(second.poll(cx)) { Ok(second) => second, Err(err) => return Poll::Ready(Err(From::from(err))), @@ -78,7 +76,7 @@ where self.set(AndFuture { state: State::Done }); return Poll::Ready(Ok(ex3)); } - State::Done => panic!("polled after complete"), + StateProj::Done => panic!("polled after complete"), }; self.set(AndFuture { diff --git a/src/filter/and_then.rs b/src/filter/and_then.rs index 535053c17..1030a7f69 100644 --- a/src/filter/and_then.rs +++ b/src/filter/and_then.rs @@ -3,7 +3,7 @@ use std::pin::Pin; use std::task::{Context, Poll}; use futures::{ready, TryFuture}; -use pin_project::{pin_project, project}; +use pin_project::pin_project; use super::{Filter, FilterBase, Func, Internal}; use crate::reject::CombineRejection; @@ -45,7 +45,7 @@ where state: State, } -#[pin_project] +#[pin_project(project = StateProj)] enum State where T: Filter, @@ -70,17 +70,15 @@ where <::Error as CombineRejection>::One, >; - #[project] fn poll(mut self: Pin<&mut Self>, cx: &mut Context) -> Poll { loop { let pin = self.as_mut().project(); - #[project] let (ex1, second) = match pin.state.project() { - State::First(first, second) => match ready!(first.try_poll(cx)) { + StateProj::First(first, second) => match ready!(first.try_poll(cx)) { Ok(first) => (first, second), Err(err) => return Poll::Ready(Err(From::from(err))), }, - State::Second(second) => { + StateProj::Second(second) => { let ex3 = match ready!(second.try_poll(cx)) { Ok(item) => Ok((item,)), Err(err) => Err(From::from(err)), @@ -88,7 +86,7 @@ where self.set(AndThenFuture { state: State::Done }); return Poll::Ready(ex3); } - State::Done => panic!("polled after complete"), + StateProj::Done => panic!("polled after complete"), }; let fut2 = second.call(ex1); self.set(AndThenFuture { diff --git a/src/filter/or.rs b/src/filter/or.rs index b09128220..860656f25 100644 --- a/src/filter/or.rs +++ b/src/filter/or.rs @@ -3,7 +3,7 @@ use std::pin::Pin; use std::task::{Context, Poll}; use futures::{ready, TryFuture}; -use pin_project::{pin_project, project}; +use pin_project::pin_project; use super::{Filter, FilterBase, Internal}; use crate::generic::Either; @@ -46,7 +46,7 @@ pub struct EitherFuture { original_path_index: PathIndex, } -#[pin_project] +#[pin_project(project = StateProj)] enum State { First(#[pin] T::Future, U), Second(Option, #[pin] U::Future), @@ -70,13 +70,11 @@ where { type Output = Result<(Either,), Combined>; - #[project] fn poll(mut self: Pin<&mut Self>, cx: &mut Context) -> Poll { loop { let pin = self.as_mut().project(); - #[project] let (err1, fut2) = match pin.state.project() { - State::First(first, second) => match ready!(first.try_poll(cx)) { + StateProj::First(first, second) => match ready!(first.try_poll(cx)) { Ok(ex1) => { return Poll::Ready(Ok((Either::A(ex1),))); } @@ -85,7 +83,7 @@ where (e, second.filter(Internal)) } }, - State::Second(err1, second) => { + StateProj::Second(err1, second) => { let ex2 = match ready!(second.try_poll(cx)) { Ok(ex2) => Ok((Either::B(ex2),)), Err(e) => { @@ -100,7 +98,7 @@ where }); return Poll::Ready(ex2); } - State::Done => panic!("polled after complete"), + StateProj::Done => panic!("polled after complete"), }; self.set(EitherFuture { diff --git a/src/filter/or_else.rs b/src/filter/or_else.rs index da43ea0ea..06fc53d7e 100644 --- a/src/filter/or_else.rs +++ b/src/filter/or_else.rs @@ -3,7 +3,7 @@ use std::pin::Pin; use std::task::{Context, Poll}; use futures::{ready, TryFuture}; -use pin_project::{pin_project, project}; +use pin_project::pin_project; use super::{Filter, FilterBase, Func, Internal}; use crate::reject::IsReject; @@ -48,7 +48,7 @@ where original_path_index: PathIndex, } -#[pin_project] +#[pin_project(project = StateProj)] enum State where T: Filter, @@ -77,17 +77,15 @@ where { type Output = Result<::Ok, ::Error>; - #[project] fn poll(mut self: Pin<&mut Self>, cx: &mut Context) -> Poll { loop { let pin = self.as_mut().project(); - #[project] let (err, second) = match pin.state.project() { - State::First(first, second) => match ready!(first.try_poll(cx)) { + StateProj::First(first, second) => match ready!(first.try_poll(cx)) { Ok(ex) => return Poll::Ready(Ok(ex)), Err(err) => (err, second), }, - State::Second(second) => { + StateProj::Second(second) => { let ex2 = ready!(second.try_poll(cx)); self.set(OrElseFuture { state: State::Done, @@ -95,7 +93,7 @@ where }); return Poll::Ready(ex2); } - State::Done => panic!("polled after complete"), + StateProj::Done => panic!("polled after complete"), }; pin.original_path_index.reset_path(); diff --git a/src/filter/recover.rs b/src/filter/recover.rs index 7f9108105..e319b2c4f 100644 --- a/src/filter/recover.rs +++ b/src/filter/recover.rs @@ -3,7 +3,7 @@ use std::pin::Pin; use std::task::{Context, Poll}; use futures::{ready, TryFuture}; -use pin_project::{pin_project, project}; +use pin_project::pin_project; use super::{Filter, FilterBase, Func, Internal}; use crate::generic::Either; @@ -50,7 +50,7 @@ where original_path_index: PathIndex, } -#[pin_project] +#[pin_project(project = StateProj)] enum State where T: Filter, @@ -84,17 +84,15 @@ where ::Error, >; - #[project] fn poll(mut self: Pin<&mut Self>, cx: &mut Context) -> Poll { loop { let pin = self.as_mut().project(); - #[project] let (err, second) = match pin.state.project() { - State::First(first, second) => match ready!(first.try_poll(cx)) { + StateProj::First(first, second) => match ready!(first.try_poll(cx)) { Ok(ex) => return Poll::Ready(Ok((Either::A(ex),))), Err(err) => (err, second), }, - State::Second(second) => { + StateProj::Second(second) => { let ex2 = match ready!(second.try_poll(cx)) { Ok(ex2) => Ok((Either::B((ex2,)),)), Err(e) => Err(e), @@ -105,7 +103,7 @@ where }); return Poll::Ready(ex2); } - State::Done => panic!("polled after complete"), + StateProj::Done => panic!("polled after complete"), }; pin.original_path_index.reset_path();