From 9528df4486eb9e028676456491a20badb9ea4acd Mon Sep 17 00:00:00 2001 From: Taiki Endo Date: Sat, 6 Jun 2020 06:42:45 +0900 Subject: [PATCH] Remove uses of pin_project::project attribute pin-project will deprecate the project attribute due to some unfixable limitations. Refs: https://github.com/taiki-e/pin-project/issues/225 --- actix-codec/Cargo.toml | 2 +- actix-ioframe/Cargo.toml | 2 +- actix-ioframe/src/service.rs | 11 ++++------- actix-service/Cargo.toml | 2 +- actix-service/benches/and_then.rs | 24 ++++++++++-------------- actix-service/src/and_then.rs | 10 ++++------ actix-service/src/and_then_apply_fn.rs | 10 ++++------ actix-service/src/apply_cfg.rs | 10 ++++------ actix-service/src/then.rs | 10 ++++------ actix-service/src/transform.rs | 8 +++----- actix-utils/Cargo.toml | 2 +- 11 files changed, 37 insertions(+), 54 deletions(-) diff --git a/actix-codec/Cargo.toml b/actix-codec/Cargo.toml index cab79a9e..3c7a93bc 100644 --- a/actix-codec/Cargo.toml +++ b/actix-codec/Cargo.toml @@ -24,4 +24,4 @@ futures-sink = { version = "0.3.4", default-features = false } tokio = { version = "0.2.4", default-features=false } tokio-util = { version = "0.2.0", default-features=false, features=["codec"] } log = "0.4" -pin-project = "0.4.8" +pin-project = "0.4.17" diff --git a/actix-ioframe/Cargo.toml b/actix-ioframe/Cargo.toml index f9c144a7..efc81740 100644 --- a/actix-ioframe/Cargo.toml +++ b/actix-ioframe/Cargo.toml @@ -24,7 +24,7 @@ bytes = "0.5.3" either = "1.5.3" futures-sink = { version = "0.3.4", default-features = false } futures-core = { version = "0.3.4", default-features = false } -pin-project = "0.4.6" +pin-project = "0.4.17" log = "0.4" [dev-dependencies] diff --git a/actix-ioframe/src/service.rs b/actix-ioframe/src/service.rs index a562fbb5..f3b5ab85 100644 --- a/actix-ioframe/src/service.rs +++ b/actix-ioframe/src/service.rs @@ -8,7 +8,6 @@ use actix_codec::{AsyncRead, AsyncWrite, Decoder, Encoder, Framed}; use actix_service::{IntoService, IntoServiceFactory, Service, ServiceFactory}; use either::Either; use futures_core::{ready, stream::Stream}; -use pin_project::project; use crate::connect::{Connect, ConnectResult}; use crate::dispatcher::Dispatcher; @@ -336,7 +335,7 @@ where } } -#[pin_project::pin_project] +#[pin_project::pin_project(project = FramedServiceImplResponseInnerProj)] enum FramedServiceImplResponseInner where C: Service, Response = ConnectResult>, @@ -378,7 +377,6 @@ where ::Error: std::fmt::Debug, Out: Stream::Item> + Unpin, { - #[project] fn poll( self: Pin<&mut Self>, cx: &mut Context<'_>, @@ -386,9 +384,8 @@ where FramedServiceImplResponseInner, Poll>>, > { - #[project] match self.project() { - FramedServiceImplResponseInner::Connect(fut, handler) => match fut.poll(cx) { + FramedServiceImplResponseInnerProj::Connect(fut, handler) => match fut.poll(cx) { Poll::Ready(Ok(res)) => Either::Left(FramedServiceImplResponseInner::Handler( handler.new_service(res.state), Some(res.framed), @@ -397,7 +394,7 @@ where Poll::Pending => Either::Right(Poll::Pending), Poll::Ready(Err(e)) => Either::Right(Poll::Ready(Err(e.into()))), }, - FramedServiceImplResponseInner::Handler(fut, framed, out) => { + FramedServiceImplResponseInnerProj::Handler(fut, framed, out) => { match fut.poll(cx) { Poll::Ready(Ok(handler)) => { Either::Left(FramedServiceImplResponseInner::Dispatcher( @@ -408,7 +405,7 @@ where Poll::Ready(Err(e)) => Either::Right(Poll::Ready(Err(e.into()))), } } - FramedServiceImplResponseInner::Dispatcher(fut) => { + FramedServiceImplResponseInnerProj::Dispatcher(fut) => { Either::Right(fut.poll(cx)) } } diff --git a/actix-service/Cargo.toml b/actix-service/Cargo.toml index 939ed178..cb2b2cdb 100644 --- a/actix-service/Cargo.toml +++ b/actix-service/Cargo.toml @@ -17,7 +17,7 @@ path = "src/lib.rs" [dependencies] futures-util = "0.3.1" -pin-project = "0.4.6" +pin-project = "0.4.17" [dev-dependencies] actix-rt = "1.0.0" diff --git a/actix-service/benches/and_then.rs b/actix-service/benches/and_then.rs index 1094fdaf..0b78a9c0 100644 --- a/actix-service/benches/and_then.rs +++ b/actix-service/benches/and_then.rs @@ -81,7 +81,7 @@ where state: State, } -#[pin_project::pin_project] +#[pin_project::pin_project(project = StateProj)] enum State where A: Service, @@ -99,13 +99,11 @@ where { type Output = Result; - #[pin_project::project] fn poll(mut self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll { let mut this = self.as_mut().project(); - #[project] match this.state.as_mut().project() { - State::A(fut, b) => match fut.poll(cx)? { + StateProj::A(fut, b) => match fut.poll(cx)? { Poll::Ready(res) => { let b = b.take().unwrap(); this.state.set(State::Empty); // drop fut A @@ -115,11 +113,11 @@ where } Poll::Pending => Poll::Pending, }, - State::B(fut) => fut.poll(cx).map(|r| { + StateProj::B(fut) => fut.poll(cx).map(|r| { this.state.set(State::Empty); r }), - State::Empty => panic!("future must not be polled after it returned `Poll::Ready`"), + StateProj::Empty => panic!("future must not be polled after it returned `Poll::Ready`"), } } } @@ -179,7 +177,7 @@ where state: StateRC, } - #[pin_project::pin_project] + #[pin_project::pin_project(project = StateRCProj)] enum StateRC where A: Service, @@ -196,14 +194,12 @@ where B: Service, { type Output = Result; - - #[pin_project::project] + fn poll(mut self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll { let mut this = self.as_mut().project(); - - #[project] + match this.state.as_mut().project() { - StateRC::A(fut, b) => match fut.poll(cx)? { + StateRCProj::A(fut, b) => match fut.poll(cx)? { Poll::Ready(res) => { let b = b.take().unwrap(); this.state.set(StateRC::Empty); // drop fut A @@ -213,11 +209,11 @@ where } Poll::Pending => Poll::Pending, }, - StateRC::B(fut) => fut.poll(cx).map(|r| { + StateRCProj::B(fut) => fut.poll(cx).map(|r| { this.state.set(StateRC::Empty); r }), - StateRC::Empty => panic!("future must not be polled after it returned `Poll::Ready`"), + StateRCProj::Empty => panic!("future must not be polled after it returned `Poll::Ready`"), } } } diff --git a/actix-service/src/and_then.rs b/actix-service/src/and_then.rs index 76ed35e9..74b64b38 100644 --- a/actix-service/src/and_then.rs +++ b/actix-service/src/and_then.rs @@ -66,7 +66,7 @@ where state: State, } -#[pin_project::pin_project] +#[pin_project::pin_project(project = StateProj)] enum State where A: Service, @@ -84,13 +84,11 @@ where { type Output = Result; - #[pin_project::project] fn poll(mut self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll { let mut this = self.as_mut().project(); - #[project] match this.state.as_mut().project() { - State::A(fut, b) => match fut.poll(cx)? { + StateProj::A(fut, b) => match fut.poll(cx)? { Poll::Ready(res) => { let mut b = b.take().unwrap(); this.state.set(State::Empty); // drop fut A @@ -100,11 +98,11 @@ where } Poll::Pending => Poll::Pending, }, - State::B(fut) => fut.poll(cx).map(|r| { + StateProj::B(fut) => fut.poll(cx).map(|r| { this.state.set(State::Empty); r }), - State::Empty => panic!("future must not be polled after it returned `Poll::Ready`"), + StateProj::Empty => panic!("future must not be polled after it returned `Poll::Ready`"), } } } diff --git a/actix-service/src/and_then_apply_fn.rs b/actix-service/src/and_then_apply_fn.rs index 07f3b50d..de0cfac9 100644 --- a/actix-service/src/and_then_apply_fn.rs +++ b/actix-service/src/and_then_apply_fn.rs @@ -98,7 +98,7 @@ where state: State, } -#[pin_project::pin_project] +#[pin_project::pin_project(project = StateProj)] enum State where A: Service, @@ -123,13 +123,11 @@ where { type Output = Result; - #[pin_project::project] fn poll(mut self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll { let mut this = self.as_mut().project(); - #[project] match this.state.as_mut().project() { - State::A(fut, b) => match fut.poll(cx)? { + StateProj::A(fut, b) => match fut.poll(cx)? { Poll::Ready(res) => { let mut b = b.take().unwrap(); this.state.set(State::Empty); @@ -140,11 +138,11 @@ where } Poll::Pending => Poll::Pending, }, - State::B(fut) => fut.poll(cx).map(|r| { + StateProj::B(fut) => fut.poll(cx).map(|r| { this.state.set(State::Empty); r }), - State::Empty => panic!("future must not be polled after it returned `Poll::Ready`"), + StateProj::Empty => panic!("future must not be polled after it returned `Poll::Ready`"), } } } diff --git a/actix-service/src/apply_cfg.rs b/actix-service/src/apply_cfg.rs index 5c69b813..cee7b8c7 100644 --- a/actix-service/src/apply_cfg.rs +++ b/actix-service/src/apply_cfg.rs @@ -177,7 +177,7 @@ where state: State, } -#[pin_project::pin_project] +#[pin_project::pin_project(project = StateProj)] enum State where T: ServiceFactory, @@ -200,20 +200,18 @@ where { type Output = Result; - #[pin_project::project] fn poll(mut self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll { let mut this = self.as_mut().project(); - #[project] match this.state.as_mut().project() { - State::A(fut) => match fut.poll(cx)? { + StateProj::A(fut) => match fut.poll(cx)? { Poll::Pending => Poll::Pending, Poll::Ready(srv) => { this.state.set(State::B(srv)); self.poll(cx) } }, - State::B(srv) => match srv.poll_ready(cx)? { + StateProj::B(srv) => match srv.poll_ready(cx)? { Poll::Ready(_) => { let fut = (this.store.get_mut().1)(this.cfg.take().unwrap(), srv); this.state.set(State::C(fut)); @@ -221,7 +219,7 @@ where } Poll::Pending => Poll::Pending, }, - State::C(fut) => fut.poll(cx), + StateProj::C(fut) => fut.poll(cx), } } } diff --git a/actix-service/src/then.rs b/actix-service/src/then.rs index 53ff1753..1286e742 100644 --- a/actix-service/src/then.rs +++ b/actix-service/src/then.rs @@ -66,7 +66,7 @@ where state: State, } -#[pin_project::pin_project] +#[pin_project::pin_project(project = StateProj)] enum State where A: Service, @@ -84,13 +84,11 @@ where { type Output = Result; - #[pin_project::project] fn poll(mut self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll { let mut this = self.as_mut().project(); - #[project] match this.state.as_mut().project() { - State::A(fut, b) => match fut.poll(cx) { + StateProj::A(fut, b) => match fut.poll(cx) { Poll::Ready(res) => { let mut b = b.take().unwrap(); this.state.set(State::Empty); // drop fut A @@ -100,11 +98,11 @@ where } Poll::Pending => Poll::Pending, }, - State::B(fut) => fut.poll(cx).map(|r| { + StateProj::B(fut) => fut.poll(cx).map(|r| { this.state.set(State::Empty); r }), - State::Empty => panic!("future must not be polled after it returned `Poll::Ready`"), + StateProj::Empty => panic!("future must not be polled after it returned `Poll::Ready`"), } } } diff --git a/actix-service/src/transform.rs b/actix-service/src/transform.rs index 27704986..dc55f533 100644 --- a/actix-service/src/transform.rs +++ b/actix-service/src/transform.rs @@ -211,7 +211,7 @@ where state: ApplyTransformFutureState, } -#[pin_project::pin_project] +#[pin_project::pin_project(project = ApplyTransformFutureStateProj)] pub enum ApplyTransformFutureState where S: ServiceFactory, @@ -228,13 +228,11 @@ where { type Output = Result; - #[pin_project::project] fn poll(mut self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll { let mut this = self.as_mut().project(); - #[project] match this.state.as_mut().project() { - ApplyTransformFutureState::A(fut) => match fut.poll(cx)? { + ApplyTransformFutureStateProj::A(fut) => match fut.poll(cx)? { Poll::Ready(srv) => { let fut = this.store.0.new_transform(srv); this.state.set(ApplyTransformFutureState::B(fut)); @@ -242,7 +240,7 @@ where } Poll::Pending => Poll::Pending, }, - ApplyTransformFutureState::B(fut) => fut.poll(cx), + ApplyTransformFutureStateProj::B(fut) => fut.poll(cx), } } } diff --git a/actix-utils/Cargo.toml b/actix-utils/Cargo.toml index 4c55da05..f32ad5b5 100644 --- a/actix-utils/Cargo.toml +++ b/actix-utils/Cargo.toml @@ -25,6 +25,6 @@ either = "1.5.3" futures-channel = { version = "0.3.4", default-features = false } futures-sink = { version = "0.3.4", default-features = false } futures-util = { version = "0.3.4", default-features = false } -pin-project = "0.4.6" +pin-project = "0.4.17" log = "0.4" slab = "0.4"