Skip to content

Commit 38494b8

Browse files
committed
Prefer sub-crates of futures
This removes `futures-executor` and `futures-io` from the transient dependencies.
1 parent de4dcd4 commit 38494b8

File tree

11 files changed

+76
-81
lines changed

11 files changed

+76
-81
lines changed

Cargo.lock

Lines changed: 2 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,8 @@ description = "An async extension for Diesel the safe, extensible ORM and Query
1515
[dependencies]
1616
diesel = { version = "2.0.0", default-features = false, features = ["i-implement-a-third-party-backend-and-opt-into-breaking-changes"]}
1717
async-trait = "0.1.51"
18-
futures = "0.3.17"
18+
futures-channel = { version = "0.3.17", default-features = false, features = ["std", "sink"] }
19+
futures-util = { version = "0.3.17", default-features = false, features = ["std", "sink"] }
1920
tokio-postgres = { version = "0.7.2", optional = true}
2021
tokio = { version = "1", optional = true}
2122
mysql_async = { version = "0.30.0", optional = true}

src/lib.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@ use diesel::backend::Backend;
7070
use diesel::query_builder::{AsQuery, QueryFragment, QueryId};
7171
use diesel::row::Row;
7272
use diesel::{ConnectionResult, QueryResult};
73-
use futures::{Future, Stream};
73+
use futures_util::{Future, Stream};
7474

7575
pub use scoped_futures;
7676
use scoped_futures::ScopedBoxFuture;

src/mysql/mod.rs

Lines changed: 15 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,9 @@ use diesel::mysql::{Mysql, MysqlType};
55
use diesel::query_builder::{bind_collector::RawBytesBindCollector, QueryFragment, QueryId};
66
use diesel::result::{ConnectionError, ConnectionResult};
77
use diesel::QueryResult;
8-
use futures::future::BoxFuture;
9-
use futures::stream::BoxStream;
10-
use futures::{Future, FutureExt, StreamExt, TryFutureExt, TryStreamExt};
8+
use futures_util::future::{self, BoxFuture};
9+
use futures_util::stream::{self, BoxStream};
10+
use futures_util::{Future, FutureExt, StreamExt, TryFutureExt, TryStreamExt};
1111
use mysql_async::prelude::Queryable;
1212
use mysql_async::{Opts, OptsBuilder, Statement};
1313

@@ -82,7 +82,7 @@ impl AsyncConnection for AsyncMysqlConnection {
8282
_ => todo!(),
8383
};
8484

85-
let (tx, rx) = futures::channel::mpsc::channel(0);
85+
let (tx, rx) = futures_channel::mpsc::channel(0);
8686

8787
let yielder = async move {
8888
let r = Self::poll_result_stream(conn, stmt_for_exec, binds, tx).await;
@@ -104,16 +104,15 @@ impl AsyncConnection for AsyncMysqlConnection {
104104
r
105105
};
106106

107-
let fake_stream =
108-
futures::stream::once(yielder).filter_map(|e: QueryResult<()>| async move {
109-
if let Err(e) = e {
110-
Some(Err(e))
111-
} else {
112-
None
113-
}
114-
});
107+
let fake_stream = stream::once(yielder).filter_map(|e: QueryResult<()>| async move {
108+
if let Err(e) = e {
109+
Some(Err(e))
110+
} else {
111+
None
112+
}
113+
});
115114

116-
let stream = futures::stream::select(fake_stream, rx).boxed();
115+
let stream = stream::select(fake_stream, rx).boxed();
117116

118117
Ok(stream)
119118
})
@@ -222,7 +221,7 @@ impl AsyncMysqlConnection {
222221
{
223222
let mut bind_collector = RawBytesBindCollector::<Mysql>::new();
224223
if let Err(e) = query.collect_binds(&mut bind_collector, &mut (), &Mysql) {
225-
return futures::future::ready(Err(e)).boxed();
224+
return future::ready(Err(e)).boxed();
226225
}
227226

228227
let binds = bind_collector.binds;
@@ -250,9 +249,9 @@ impl AsyncMysqlConnection {
250249
conn: &mut mysql_async::Conn,
251250
stmt_for_exec: mysql_async::Statement,
252251
binds: ToSqlHelper,
253-
mut tx: futures::channel::mpsc::Sender<QueryResult<MysqlRow>>,
252+
mut tx: futures_channel::mpsc::Sender<QueryResult<MysqlRow>>,
254253
) -> QueryResult<()> {
255-
use futures::SinkExt;
254+
use futures_util::sink::SinkExt;
256255
let res = conn
257256
.exec_iter(stmt_for_exec, binds)
258257
.await

src/pg/mod.rs

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -16,10 +16,10 @@ use diesel::pg::{
1616
use diesel::query_builder::bind_collector::RawBytesBindCollector;
1717
use diesel::query_builder::{AsQuery, QueryFragment, QueryId};
1818
use diesel::{ConnectionError, ConnectionResult, QueryResult};
19-
use futures::future::BoxFuture;
20-
use futures::lock::Mutex;
21-
use futures::stream::{BoxStream, TryStreamExt};
22-
use futures::{Future, FutureExt, StreamExt};
19+
use futures_util::future::BoxFuture;
20+
use futures_util::lock::Mutex;
21+
use futures_util::stream::{BoxStream, TryStreamExt};
22+
use futures_util::{Future, FutureExt, StreamExt};
2323
use std::borrow::Cow;
2424
use std::sync::Arc;
2525
use tokio_postgres::types::ToSql;
@@ -88,7 +88,7 @@ mod transaction_builder;
8888
/// let f2 = q2.get_result::<i32>(conn);
8989
///
9090
/// // wait on both results
91-
/// let res = futures::try_join!(f1, f2)?;
91+
/// let res = futures_util::try_join!(f1, f2)?;
9292
///
9393
/// assert_eq!(res.0, 1);
9494
/// assert_eq!(res.1, 2);
@@ -492,7 +492,7 @@ pub mod tests {
492492
let f1 = q1.get_result::<i32>(&mut conn);
493493
let f2 = q2.get_result::<i32>(&mut conn);
494494

495-
let (r1, r2) = futures::try_join!(f1, f2).unwrap();
495+
let (r1, r2) = futures_util::try_join!(f1, f2).unwrap();
496496

497497
assert_eq!(r1, 1);
498498
assert_eq!(r2, 2);

src/pooled_connection/bb8.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
//! ```rust
44
//! # include!("../doctest_setup.rs");
55
//! use diesel::result::Error;
6-
//! use futures::FutureExt;
6+
//! use futures_util::FutureExt;
77
//! use diesel_async::pooled_connection::AsyncDieselConnectionManager;
88
//! use diesel_async::pooled_connection::bb8::Pool;
99
//! use diesel_async::RunQueryDsl;

src/pooled_connection/deadpool.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
//! ```rust
44
//! # include!("../doctest_setup.rs");
55
//! use diesel::result::Error;
6-
//! use futures::FutureExt;
6+
//! use futures_util::FutureExt;
77
//! use diesel_async::pooled_connection::AsyncDieselConnectionManager;
88
//! use diesel_async::pooled_connection::deadpool::Pool;
99
//! use diesel_async::RunQueryDsl;

src/pooled_connection/mobc.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
//! ```rust
44
//! # include!("../doctest_setup.rs");
55
//! use diesel::result::Error;
6-
//! use futures::FutureExt;
6+
//! use futures_util::FutureExt;
77
//! use diesel_async::pooled_connection::AsyncDieselConnectionManager;
88
//! use diesel_async::pooled_connection::mobc::Pool;
99
//! use diesel_async::RunQueryDsl;

src/pooled_connection/mod.rs

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
//! * [mobc](self::mobc)
88
use crate::TransactionManager;
99
use crate::{AsyncConnection, SimpleAsyncConnection};
10-
use futures::FutureExt;
10+
use futures_util::{future, FutureExt};
1111
use std::fmt;
1212
use std::ops::DerefMut;
1313

@@ -46,8 +46,7 @@ impl std::error::Error for PoolError {}
4646
/// * [bb8](self::bb8)
4747
/// * [mobc](self::mobc)
4848
pub struct AsyncDieselConnectionManager<C> {
49-
setup:
50-
Box<dyn Fn(&str) -> futures::future::BoxFuture<diesel::ConnectionResult<C>> + Send + Sync>,
49+
setup: Box<dyn Fn(&str) -> future::BoxFuture<diesel::ConnectionResult<C>> + Send + Sync>,
5150
connection_url: String,
5251
}
5352

@@ -68,10 +67,7 @@ impl<C> AsyncDieselConnectionManager<C> {
6867
/// postgres connection
6968
pub fn new_with_setup(
7069
connection_url: impl Into<String>,
71-
setup: impl Fn(&str) -> futures::future::BoxFuture<diesel::ConnectionResult<C>>
72-
+ Send
73-
+ Sync
74-
+ 'static,
70+
setup: impl Fn(&str) -> future::BoxFuture<diesel::ConnectionResult<C>> + Send + Sync + 'static,
7571
) -> Self {
7672
Self {
7773
setup: Box::new(setup),

src/run_query_dsl/mod.rs

Lines changed: 33 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ use diesel::associations::HasTable;
33
use diesel::query_builder::IntoUpdateTarget;
44
use diesel::result::QueryResult;
55
use diesel::AsChangeset;
6-
use futures::{FutureExt, Stream, StreamExt, TryFutureExt, TryStreamExt};
6+
use futures_util::{future, stream, FutureExt, Stream, StreamExt, TryFutureExt, TryStreamExt};
77
use std::pin::Pin;
88

99
/// The traits used by `QueryDsl`.
@@ -19,7 +19,7 @@ pub mod methods {
1919
use diesel::expression::QueryMetadata;
2020
use diesel::query_builder::{AsQuery, QueryFragment, QueryId};
2121
use diesel::query_dsl::CompatibleType;
22-
use futures::{Future, Stream, TryFutureExt};
22+
use futures_util::{Future, Stream, TryFutureExt};
2323

2424
/// The `execute` method
2525
///
@@ -92,12 +92,12 @@ pub mod methods {
9292
DB: QueryMetadata<T::SqlType>,
9393
ST: 'static,
9494
{
95-
type LoadFuture<'conn> = futures::future::MapOk<
95+
type LoadFuture<'conn> = future::MapOk<
9696
Conn::LoadFuture<'conn, 'query>,
9797
fn(Conn::Stream<'conn, 'query>) -> Self::Stream<'conn>,
9898
> where Conn: 'conn;
9999

100-
type Stream<'conn> = futures::stream::Map<
100+
type Stream<'conn> = stream::Map<
101101
Conn::Stream<'conn, 'query>,
102102
fn(
103103
QueryResult<Conn::Row<'conn, 'query>>,
@@ -113,7 +113,7 @@ pub mod methods {
113113
#[allow(clippy::type_complexity)]
114114
fn map_result_stream_future<'s, 'a, U, S, R, DB, ST>(
115115
stream: S,
116-
) -> futures::stream::Map<S, fn(QueryResult<R>) -> QueryResult<U>>
116+
) -> stream::Map<S, fn(QueryResult<R>) -> QueryResult<U>>
117117
where
118118
S: Stream<Item = QueryResult<R>> + Send + 's,
119119
R: diesel::row::Row<'a, DB> + 's,
@@ -144,36 +144,35 @@ pub mod methods {
144144
pub mod return_futures {
145145
use super::methods::LoadQuery;
146146
use diesel::QueryResult;
147+
use futures_util::{future, stream};
147148
use std::pin::Pin;
148149

149150
/// The future returned by [`RunQueryDsl::load`](super::RunQueryDsl::load)
150151
/// and [`RunQueryDsl::get_results`](super::RunQueryDsl::get_results)
151152
///
152153
/// This is essentially `impl Future<Output = QueryResult<Vec<U>>>`
153-
pub type LoadFuture<'conn, 'query, Q: LoadQuery<'query, Conn, U>, Conn, U> =
154-
futures::future::AndThen<
155-
Q::LoadFuture<'conn>,
156-
futures::stream::TryCollect<Q::Stream<'conn>, Vec<U>>,
157-
fn(Q::Stream<'conn>) -> futures::stream::TryCollect<Q::Stream<'conn>, Vec<U>>,
158-
>;
154+
pub type LoadFuture<'conn, 'query, Q: LoadQuery<'query, Conn, U>, Conn, U> = future::AndThen<
155+
Q::LoadFuture<'conn>,
156+
stream::TryCollect<Q::Stream<'conn>, Vec<U>>,
157+
fn(Q::Stream<'conn>) -> stream::TryCollect<Q::Stream<'conn>, Vec<U>>,
158+
>;
159159

160160
/// The future returned by [`RunQueryDsl::get_result`](super::RunQueryDsl::get_result)
161161
///
162162
/// This is essentially `impl Future<Output = QueryResult<U>>`
163-
pub type GetResult<'conn, 'query, Q: LoadQuery<'query, Conn, U>, Conn, U> =
164-
futures::future::AndThen<
165-
Q::LoadFuture<'conn>,
166-
futures::future::Map<
167-
futures::stream::StreamFuture<Pin<Box<Q::Stream<'conn>>>>,
168-
fn((Option<QueryResult<U>>, Pin<Box<Q::Stream<'conn>>>)) -> QueryResult<U>,
169-
>,
170-
fn(
171-
Q::Stream<'conn>,
172-
) -> futures::future::Map<
173-
futures::stream::StreamFuture<Pin<Box<Q::Stream<'conn>>>>,
174-
fn((Option<QueryResult<U>>, Pin<Box<Q::Stream<'conn>>>)) -> QueryResult<U>,
175-
>,
176-
>;
163+
pub type GetResult<'conn, 'query, Q: LoadQuery<'query, Conn, U>, Conn, U> = future::AndThen<
164+
Q::LoadFuture<'conn>,
165+
future::Map<
166+
stream::StreamFuture<Pin<Box<Q::Stream<'conn>>>>,
167+
fn((Option<QueryResult<U>>, Pin<Box<Q::Stream<'conn>>>)) -> QueryResult<U>,
168+
>,
169+
fn(
170+
Q::Stream<'conn>,
171+
) -> future::Map<
172+
stream::StreamFuture<Pin<Box<Q::Stream<'conn>>>>,
173+
fn((Option<QueryResult<U>>, Pin<Box<Q::Stream<'conn>>>)) -> QueryResult<U>,
174+
>,
175+
>;
177176
}
178177

179178
/// Methods used to execute queries.
@@ -329,7 +328,7 @@ pub trait RunQueryDsl<Conn>: Sized {
329328
Conn: AsyncConnection,
330329
Self: methods::LoadQuery<'query, Conn, U> + 'query,
331330
{
332-
fn collect_result<U, S>(stream: S) -> futures::stream::TryCollect<S, Vec<U>>
331+
fn collect_result<U, S>(stream: S) -> stream::TryCollect<S, Vec<U>>
333332
where
334333
S: Stream<Item = QueryResult<U>>,
335334
{
@@ -373,14 +372,14 @@ pub trait RunQueryDsl<Conn>: Sized {
373372
/// # async fn run_test() -> QueryResult<()> {
374373
/// # use diesel::insert_into;
375374
/// # use schema::users::dsl::*;
376-
/// # use futures::stream::TryStreamExt;
375+
/// # use futures_util::stream::TryStreamExt;
377376
/// # let connection = &mut establish_connection().await;
378377
/// let data = users.select(name)
379378
/// .load_stream::<String>(connection)
380379
/// .await?
381380
/// .try_fold(Vec::new(), |mut acc, item| {
382381
/// acc.push(item);
383-
/// futures::future::ready(Ok(acc))
382+
/// futures_util::future::ready(Ok(acc))
384383
/// })
385384
/// .await?;
386385
/// assert_eq!(vec!["Sean", "Tess"], data);
@@ -401,14 +400,14 @@ pub trait RunQueryDsl<Conn>: Sized {
401400
/// # async fn run_test() -> QueryResult<()> {
402401
/// # use diesel::insert_into;
403402
/// # use schema::users::dsl::*;
404-
/// # use futures::stream::TryStreamExt;
403+
/// # use futures_util::stream::TryStreamExt;
405404
/// # let connection = &mut establish_connection().await;
406405
/// let data = users
407406
/// .load_stream::<(i32, String)>(connection)
408407
/// .await?
409408
/// .try_fold(Vec::new(), |mut acc, item| {
410409
/// acc.push(item);
411-
/// futures::future::ready(Ok(acc))
410+
/// futures_util::future::ready(Ok(acc))
412411
/// })
413412
/// .await?;
414413
/// let expected_data = vec![
@@ -439,14 +438,14 @@ pub trait RunQueryDsl<Conn>: Sized {
439438
/// # async fn run_test() -> QueryResult<()> {
440439
/// # use diesel::insert_into;
441440
/// # use schema::users::dsl::*;
442-
/// # use futures::stream::TryStreamExt;
441+
/// # use futures_util::stream::TryStreamExt;
443442
/// # let connection = &mut establish_connection().await;
444443
/// let data = users
445444
/// .load_stream::<User>(connection)
446445
/// .await?
447446
/// .try_fold(Vec::new(), |mut acc, item| {
448447
/// acc.push(item);
449-
/// futures::future::ready(Ok(acc))
448+
/// futures_util::future::ready(Ok(acc))
450449
/// })
451450
/// .await?;
452451
/// let expected_data = vec![
@@ -526,8 +525,8 @@ pub trait RunQueryDsl<Conn>: Sized {
526525
#[allow(clippy::type_complexity)]
527526
fn get_next_stream_element<S, U>(
528527
stream: S,
529-
) -> futures::future::Map<
530-
futures::stream::StreamFuture<Pin<Box<S>>>,
528+
) -> future::Map<
529+
stream::StreamFuture<Pin<Box<S>>>,
531530
fn((Option<QueryResult<U>>, Pin<Box<S>>)) -> QueryResult<U>,
532531
>
533532
where

0 commit comments

Comments
 (0)