diff --git a/Cargo.toml b/Cargo.toml index 64d8a2fc..f554208b 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -21,7 +21,6 @@ rustdoc-args = ["--cfg", "docsrs"] base64 = { version = "0.22", optional = true } bytes = "1.7.1" futures-channel = { version = "0.3", optional = true } -futures-core = { version = "0.3" } futures-util = { version = "0.3.16", default-features = false, optional = true } http = "1.0" http-body = "1.0.0" diff --git a/src/client/legacy/client.rs b/src/client/legacy/client.rs index 8265d4b7..37dc7c19 100644 --- a/src/client/legacy/client.rs +++ b/src/client/legacy/client.rs @@ -6,7 +6,7 @@ use std::error::Error as StdError; use std::fmt; -use std::future::Future; +use std::future::{poll_fn, Future}; use std::pin::Pin; use std::task::{self, Poll}; use std::time::Duration; @@ -25,7 +25,6 @@ use super::connect::HttpConnector; use super::connect::{Alpn, Connect, Connected, Connection}; use super::pool::{self, Ver}; -use crate::common::future::poll_fn; use crate::common::{lazy as hyper_lazy, timer, Exec, Lazy, SyncWrapper}; type BoxSendFuture = Pin + Send>>; @@ -337,7 +336,7 @@ where e!(SendRequest, err.into_error()) .with_connect_info(pooled.conn_info.clone()), )) - } + }; } }; diff --git a/src/client/legacy/connect/dns.rs b/src/client/legacy/connect/dns.rs index abeb2cca..13beb542 100644 --- a/src/client/legacy/connect/dns.rs +++ b/src/client/legacy/connect/dns.rs @@ -291,7 +291,7 @@ pub(super) async fn resolve(resolver: &mut R, name: Name) -> Result(); let mut singleton = Singleton::new(mock_svc); - crate::common::future::poll_fn(|cx| singleton.poll_ready(cx)) + std::future::poll_fn(|cx| singleton.poll_ready(cx)) .await .unwrap(); let fut1 = singleton.call(()); @@ -469,14 +468,14 @@ mod tests { let (mock_svc, mut handle) = tower_test::mock::pair::<(), &'static str>(); let mut singleton = Singleton::new(mock_svc); - crate::common::future::poll_fn(|cx| singleton.poll_ready(cx)) + std::future::poll_fn(|cx| singleton.poll_ready(cx)) .await .unwrap(); let mut fut1 = singleton.call(()); let fut2 = singleton.call(()); // poll driver just once, and then drop - crate::common::future::poll_fn(move |cx| { + std::future::poll_fn(move |cx| { let _ = Pin::new(&mut fut1).poll(cx); Poll::Ready(()) }) diff --git a/src/common/future.rs b/src/common/future.rs deleted file mode 100644 index 47897f24..00000000 --- a/src/common/future.rs +++ /dev/null @@ -1,30 +0,0 @@ -use std::{ - future::Future, - pin::Pin, - task::{Context, Poll}, -}; - -// TODO: replace with `std::future::poll_fn` once MSRV >= 1.64 -pub(crate) fn poll_fn(f: F) -> PollFn -where - F: FnMut(&mut Context<'_>) -> Poll, -{ - PollFn { f } -} - -pub(crate) struct PollFn { - f: F, -} - -impl Unpin for PollFn {} - -impl Future for PollFn -where - F: FnMut(&mut Context<'_>) -> Poll, -{ - type Output = T; - - fn poll(mut self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll { - (self.f)(cx) - } -} diff --git a/src/common/mod.rs b/src/common/mod.rs index a32c25d3..6586aabf 100644 --- a/src/common/mod.rs +++ b/src/common/mod.rs @@ -17,5 +17,3 @@ pub(crate) use exec::Exec; pub(crate) use lazy::{lazy, Started as Lazy}; #[cfg(feature = "client-legacy")] pub(crate) use sync::SyncWrapper; - -pub(crate) mod future; diff --git a/src/rt/io.rs b/src/rt/io.rs index 888756f6..0546663e 100644 --- a/src/rt/io.rs +++ b/src/rt/io.rs @@ -1,11 +1,10 @@ use std::marker::Unpin; use std::pin::Pin; -use std::task::Poll; +use std::task::{ready, Poll}; -use futures_core::ready; use hyper::rt::{Read, ReadBuf, Write}; -use crate::common::future::poll_fn; +use std::future::poll_fn; pub(crate) async fn read(io: &mut T, buf: &mut [u8]) -> Result where diff --git a/src/server/conn/auto/mod.rs b/src/server/conn/auto/mod.rs index 7b887ce2..5e334163 100644 --- a/src/server/conn/auto/mod.rs +++ b/src/server/conn/auto/mod.rs @@ -7,11 +7,10 @@ use std::future::Future; use std::marker::PhantomPinned; use std::mem::MaybeUninit; use std::pin::Pin; -use std::task::{Context, Poll}; +use std::task::{ready, Context, Poll}; use std::{error::Error as StdError, io, time::Duration}; use bytes::Bytes; -use futures_core::ready; use http::{Request, Response}; use http_body::Body; use hyper::{ diff --git a/src/service/oneshot.rs b/src/service/oneshot.rs index 2cc3e6e9..2b15e72f 100644 --- a/src/service/oneshot.rs +++ b/src/service/oneshot.rs @@ -1,8 +1,7 @@ -use futures_core::ready; use pin_project_lite::pin_project; use std::future::Future; use std::pin::Pin; -use std::task::{Context, Poll}; +use std::task::{ready, Context, Poll}; use tower_service::Service; // Vendored from tower::util to reduce dependencies, the code is small enough. diff --git a/tests/legacy_client.rs b/tests/legacy_client.rs index f0ff90c1..d23637f3 100644 --- a/tests/legacy_client.rs +++ b/tests/legacy_client.rs @@ -132,7 +132,7 @@ async fn drop_client_closes_idle_connections() { res.unwrap(); // not closed yet, just idle - future::poll_fn(|ctx| { + std::future::poll_fn(|ctx| { assert!(Pin::new(&mut closes).poll_next(ctx).is_pending()); Poll::Ready(()) }) @@ -561,7 +561,7 @@ async fn client_keep_alive_when_response_before_request_body_ends() { }); future::join(res, rx2).await.0.unwrap(); - future::poll_fn(|ctx| { + std::future::poll_fn(|ctx| { assert!(Pin::new(&mut closes).poll_next(ctx).is_pending()); Poll::Ready(()) }) @@ -1255,7 +1255,7 @@ impl tower_service::Service for MockConnector { type Error = std::io::Error; type Future = std::pin::Pin< Box< - dyn futures_util::Future> + dyn std::future::Future> + Send, >, >; diff --git a/tests/test_utils/mod.rs b/tests/test_utils/mod.rs index df3a65d4..ee062b36 100644 --- a/tests/test_utils/mod.rs +++ b/tests/test_utils/mod.rs @@ -1,10 +1,10 @@ +use std::future::Future; use std::pin::Pin; use std::sync::atomic::{AtomicUsize, Ordering}; use std::sync::Arc; +use std::task::{Context, Poll}; use futures_channel::mpsc; -use futures_util::task::{Context, Poll}; -use futures_util::Future; use futures_util::TryFutureExt; use hyper::Uri; use tokio::io::{self, AsyncRead, AsyncWrite, ReadBuf};