When trying to use the actix_web client inside an impl decorated with graphql_object, a number of errors pop up regarding sending futures between threads. I have posted an issue on juniper https://github.com/graphql-rust/juniper/issues/529 but figured this needed visibility on both ends.
This is on juniper master with the async feature enabled.
out.log
```
error[E0277]: `std::rc::Rc` cannot be sent between threads safely
--> juniper/src/schema.rs:32:1
|
32 | #[juniper::graphql_object]
| ^^^^^^^^^^^^^^^^^^^^^^^^^^ `std::rc::Rc` cannot be sent between threads safely
|
= help: within `impl core::future::future::Future`, the trait `std::marker::Send` is not implemented for `std::rc::Rc`
= note: required because it appears within the type `awc::Client`
= note: required because it appears within the type `for<'r, 's, 't0, 't1, 't2, 't3, 't4, 't5> {std::string::String, awc::Client, &'r awc::Client, awc::Client, &'s str, awc::request::ClientRequest, awc::sender::SendClientRequest, awc::sender::SendClientRequest, (), awc::response::ClientResponse> + 't0)>>>>>, &'t1 mut awc::response::ClientResponse> + 't2)>>>>>, awc::response::ClientResponse> + 't3)>>>>>, awc::response::MessageBody> + 't4)>>>>>, awc::response::MessageBody> + 't5)>>>>>, ()}`
= note: required because it appears within the type `[static generator@juniper/src/schema.rs:32:1: 32:27 args:&juniper::types::base::Arguments<'_> for<'r, 's, 't0, 't1, 't2, 't3, 't4, 't5> {std::string::String, awc::Client, &'r awc::Client, awc::Client, &'s str, awc::request::ClientRequest, awc::sender::SendClientRequest, awc::sender::SendClientRequest, (), awc::response::ClientResponse> + 't0)>>>>>, &'t1 mut awc::response::ClientResponse> + 't2)>>>>>, awc::response::ClientResponse> + 't3)>>>>>, awc::response::MessageBody> + 't4)>>>>>, awc::response::MessageBody> + 't5)>>>>>, ()}]`
= note: required because it appears within the type `for<'r, 's, 't0, 't1, 't2, 't3, 't4, 't5, 't6, 't7, 't8, 't9, 't10, 't11, 't12, 't13, 't14, 't15, 't16, 't17, 't18, 't19, 't20, 't21, 't22> {[static generator@juniper/src/schema.rs:32:1: 32:27 args:&'r juniper::types::base::Arguments<'s> for<'t23, 't24, 't25, 't26, 't27, 't28, 't29, 't30> {std::string::String, awc::Client, &'t23 awc::Client, awc::Client, &'t24 str, awc::request::ClientRequest, awc::sender::SendClientRequest, awc::sender::SendClientRequest, (), awc::response::ClientResponse> + 't25)>>>>>, &'t26 mut awc::response::ClientResponse> + 't27)>>>>>, awc::response::ClientResponse> + 't28)>>>>>, awc::response::MessageBody> + 't29)>>>>>, awc::response::MessageBody> + 't30)>>>>>, ()}], impl core::future::future::Future, impl core::future::future::Future, (), std::result::Result, std::result::Result, juniper::executor::FieldError>, &'t5 (), schema::Human, juniper::executor::Executor<'t6, ()>, &'t7 juniper::executor::Executor<'t8, ()>, (), &'t9 (), &'t10 (), &'t11 schema::Human, &'t12 schema::Human, impl core::future::future::Future, impl core::future::future::Future, ()}`
= note: required because it appears within the type `[static generator@juniper/src/schema.rs:32:1: 32:27 args:&juniper::types::base::Arguments<'_>, executor:&juniper::executor::Executor<'_, ()> for<'r, 's, 't0, 't1, 't2, 't3, 't4, 't5, 't6, 't7, 't8, 't9, 't10, 't11, 't12, 't13, 't14, 't15, 't16, 't17, 't18, 't19, 't20, 't21, 't22> {[static generator@juniper/src/schema.rs:32:1: 32:27 args:&'r juniper::types::base::Arguments<'s> for<'t23, 't24, 't25, 't26, 't27, 't28, 't29, 't30> {std::string::String, awc::Client, &'t23 awc::Client, awc::Client, &'t24 str, awc::request::ClientRequest, awc::sender::SendClientRequest, awc::sender::SendClientRequest, (), awc::response::ClientResponse> + 't25)>>>>>, &'t26 mut awc::response::ClientResponse> + 't27)>>>>>, awc::response::ClientResponse> + 't28)>>>>>, awc::response::MessageBody> + 't29)>>>>>, awc::response::MessageBody> + 't30)>>>>>, ()}], impl core::future::future::Future, impl core::future::future::Future, (), std::result::Result, std::result::Result, juniper::executor::FieldError>, &'t5 (), schema::Human, juniper::executor::Executor<'t6, ()>, &'t7 juniper::executor::Executor<'t8, ()>, (), &'t9 (), &'t10 (), &'t11 schema::Human, &'t12 schema::Human, impl core::future::future::Future, impl core::future::future::Future, ()}]`
= note: required because it appears within the type `std::future::GenFuture<[static generator@juniper/src/schema.rs:32:1: 32:27 args:&juniper::types::base::Arguments<'_>, executor:&juniper::executor::Executor<'_, ()> for<'r, 's, 't0, 't1, 't2, 't3, 't4, 't5, 't6, 't7, 't8, 't9, 't10, 't11, 't12, 't13, 't14, 't15, 't16, 't17, 't18, 't19, 't20, 't21, 't22> {[static generator@juniper/src/schema.rs:32:1: 32:27 args:&'r juniper::types::base::Arguments<'s> for<'t23, 't24, 't25, 't26, 't27, 't28, 't29, 't30> {std::string::String, awc::Client, &'t23 awc::Client, awc::Client, &'t24 str, awc::request::ClientRequest, awc::sender::SendClientRequest, awc::sender::SendClientRequest, (), awc::response::ClientResponse> + 't25)>>>>>, &'t26 mut awc::response::ClientResponse> + 't27)>>>>>, awc::response::ClientResponse> + 't28)>>>>>, awc::response::MessageBody> + 't29)>>>>>, awc::response::MessageBody> + 't30)>>>>>, ()}], impl core::future::future::Future, impl core::future::future::Future, (), std::result::Result, std::result::Result, juniper::executor::FieldError>, &'t5 (), schema::Human, juniper::executor::Executor<'t6, ()>, &'t7 juniper::executor::Executor<'t8, ()>, (), &'t9 (), &'t10 (), &'t11 schema::Human, &'t12 schema::Human, impl core::future::future::Future, impl core::future::future::Future, ()}]>`
= note: required because it appears within the type `impl core::future::future::Future`
= note: required by `futures_util::future::future::FutureExt::boxed`
error[E0277]: `std::rc::Rc` cannot be shared between threads safely
--> juniper/src/schema.rs:32:1
|
32 | #[juniper::graphql_object]
| ^^^^^^^^^^^^^^^^^^^^^^^^^^ `std::rc::Rc` cannot be shared between threads safely
|
= help: within `awc::Client`, the trait `std::marker::Sync` is not implemented for `std::rc::Rc`
= note: required because it appears within the type `awc::Client`
= note: required because of the requirements on the impl of `std::marker::Send` for `&awc::Client`
= note: required because it appears within the type `for<'r, 's, 't0, 't1, 't2, 't3, 't4, 't5> {std::string::String, awc::Client, &'r awc::Client, awc::Client, &'s str, awc::request::ClientRequest, awc::sender::SendClientRequest, awc::sender::SendClientRequest, (), awc::response::ClientResponse> + 't0)>>>>>, &'t1 mut awc::response::ClientResponse> + 't2)>>>>>, awc::response::ClientResponse> + 't3)>>>>>, awc::response::MessageBody> + 't4)>>>>>, awc::response::MessageBody> + 't5)>>>>>, ()}`
= note: required because it appears within the type `[static generator@juniper/src/schema.rs:32:1: 32:27 args:&juniper::types::base::Arguments<'_> for<'r, 's, 't0, 't1, 't2, 't3, 't4, 't5> {std::string::String, awc::Client, &'r awc::Client, awc::Client, &'s str, awc::request::ClientRequest, awc::sender::SendClientRequest, awc::sender::SendClientRequest, (), awc::response::ClientResponse> + 't0)>>>>>, &'t1 mut awc::response::ClientResponse> + 't2)>>>>>, awc::response::ClientResponse> + 't3)>>>>>, awc::response::MessageBody> + 't4)>>>>>, awc::response::MessageBody> + 't5)>>>>>, ()}]`
= note: required because it appears within the type `for<'r, 's, 't0, 't1, 't2, 't3, 't4, 't5, 't6, 't7, 't8, 't9, 't10, 't11, 't12, 't13, 't14, 't15, 't16, 't17, 't18, 't19, 't20, 't21, 't22> {[static generator@juniper/src/schema.rs:32:1: 32:27 args:&'r juniper::types::base::Arguments<'s> for<'t23, 't24, 't25, 't26, 't27, 't28, 't29, 't30> {std::string::String, awc::Client, &'t23 awc::Client, awc::Client, &'t24 str, awc::request::ClientRequest, awc::sender::SendClientRequest, awc::sender::SendClientRequest, (), awc::response::ClientResponse> + 't25)>>>>>, &'t26 mut awc::response::ClientResponse> + 't27)>>>>>, awc::response::ClientResponse> + 't28)>>>>>, awc::response::MessageBody> + 't29)>>>>>, awc::response::MessageBody> + 't30)>>>>>, ()}], impl core::future::future::Future, impl core::future::future::Future, (), std::result::Result, std::result::Result, juniper::executor::FieldError>, &'t5 (), schema::Human, juniper::executor::Executor<'t6, ()>, &'t7 juniper::executor::Executor<'t8, ()>, (), &'t9 (), &'t10 (), &'t11 schema::Human, &'t12 schema::Human, impl core::future::future::Future, impl core::future::future::Future, ()}`
= note: required because it appears within the type `[static generator@juniper/src/schema.rs:32:1: 32:27 args:&juniper::types::base::Arguments<'_>, executor:&juniper::executor::Executor<'_, ()> for<'r, 's, 't0, 't1, 't2, 't3, 't4, 't5, 't6, 't7, 't8, 't9, 't10, 't11, 't12, 't13, 't14, 't15, 't16, 't17, 't18, 't19, 't20, 't21, 't22> {[static generator@juniper/src/schema.rs:32:1: 32:27 args:&'r juniper::types::base::Arguments<'s> for<'t23, 't24, 't25, 't26, 't27, 't28, 't29, 't30> {std::string::String, awc::Client, &'t23 awc::Client, awc::Client, &'t24 str, awc::request::ClientRequest, awc::sender::SendClientRequest, awc::sender::SendClientRequest, (), awc::response::ClientResponse> + 't25)>>>>>, &'t26 mut awc::response::ClientResponse> + 't27)>>>>>, awc::response::ClientResponse> + 't28)>>>>>, awc::response::MessageBody> + 't29)>>>>>, awc::response::MessageBody> + 't30)>>>>>, ()}], impl core::future::future::Future, impl core::future::future::Future, (), std::result::Result, std::result::Result, juniper::executor::FieldError>, &'t5 (), schema::Human, juniper::executor::Executor<'t6, ()>, &'t7 juniper::executor::Executor<'t8, ()>, (), &'t9 (), &'t10 (), &'t11 schema::Human, &'t12 schema::Human, impl core::future::future::Future, impl core::future::future::Future, ()}]`
= note: required because it appears within the type `std::future::GenFuture<[static generator@juniper/src/schema.rs:32:1: 32:27 args:&juniper::types::base::Arguments<'_>, executor:&juniper::executor::Executor<'_, ()> for<'r, 's, 't0, 't1, 't2, 't3, 't4, 't5, 't6, 't7, 't8, 't9, 't10, 't11, 't12, 't13, 't14, 't15, 't16, 't17, 't18, 't19, 't20, 't21, 't22> {[static generator@juniper/src/schema.rs:32:1: 32:27 args:&'r juniper::types::base::Arguments<'s> for<'t23, 't24, 't25, 't26, 't27, 't28, 't29, 't30> {std::string::String, awc::Client, &'t23 awc::Client, awc::Client, &'t24 str, awc::request::ClientRequest, awc::sender::SendClientRequest, awc::sender::SendClientRequest, (), awc::response::ClientResponse> + 't25)>>>>>, &'t26 mut awc::response::ClientResponse> + 't27)>>>>>, awc::response::ClientResponse> + 't28)>>>>>, awc::response::MessageBody> + 't29)>>>>>, awc::response::MessageBody> + 't30)>>>>>, ()}], impl core::future::future::Future, impl core::future::future::Future, (), std::result::Result, std::result::Result, juniper::executor::FieldError>, &'t5 (), schema::Human, juniper::executor::Executor<'t6, ()>, &'t7 juniper::executor::Executor<'t8, ()>, (), &'t9 (), &'t10 (), &'t11 schema::Human, &'t12 schema::Human, impl core::future::future::Future, impl core::future::future::Future, ()}]>`
= note: required because it appears within the type `impl core::future::future::Future`
= note: required by `futures_util::future::future::FutureExt::boxed`
error[E0277]: `std::rc::Rc>` cannot be sent between threads safely
--> juniper/src/schema.rs:32:1
|
32 | #[juniper::graphql_object]
| ^^^^^^^^^^^^^^^^^^^^^^^^^^ `std::rc::Rc>` cannot be sent between threads safely
|
= help: within `impl core::future::future::Future`, the trait `std::marker::Send` is not implemented for `std::rc::Rc>`
= note: required because it appears within the type `actix_http::h1::payload::Payload`
= note: required because it appears within the type `actix_http::payload::Payload>>>>>>`
= note: required because it appears within the type `awc::response::ClientResponse>>>>>>`
= note: required because it appears within the type `for<'r, 's, 't0, 't1, 't2, 't3, 't4, 't5> {std::string::String, awc::Client, &'r awc::Client, awc::Client, &'s str, awc::request::ClientRequest, awc::sender::SendClientRequest, awc::sender::SendClientRequest, (), awc::response::ClientResponse> + 't0)>>>>>, &'t1 mut awc::response::ClientResponse> + 't2)>>>>>, awc::response::ClientResponse> + 't3)>>>>>, awc::response::MessageBody> + 't4)>>>>>, awc::response::MessageBody> + 't5)>>>>>, ()}`
= note: required because it appears within the type `[static generator@juniper/src/schema.rs:32:1: 32:27 args:&juniper::types::base::Arguments<'_> for<'r, 's, 't0, 't1, 't2, 't3, 't4, 't5> {std::string::String, awc::Client, &'r awc::Client, awc::Client, &'s str, awc::request::ClientRequest, awc::sender::SendClientRequest, awc::sender::SendClientRequest, (), awc::response::ClientResponse> + 't0)>>>>>, &'t1 mut awc::response::ClientResponse> + 't2)>>>>>, awc::response::ClientResponse> + 't3)>>>>>, awc::response::MessageBody> + 't4)>>>>>, awc::response::MessageBody> + 't5)>>>>>, ()}]`
= note: required because it appears within the type `for<'r, 's, 't0, 't1, 't2, 't3, 't4, 't5, 't6, 't7, 't8, 't9, 't10, 't11, 't12, 't13, 't14, 't15, 't16, 't17, 't18, 't19, 't20, 't21, 't22> {[static generator@juniper/src/schema.rs:32:1: 32:27 args:&'r juniper::types::base::Arguments<'s> for<'t23, 't24, 't25, 't26, 't27, 't28, 't29, 't30> {std::string::String, awc::Client, &'t23 awc::Client, awc::Client, &'t24 str, awc::request::ClientRequest, awc::sender::SendClientRequest, awc::sender::SendClientRequest, (), awc::response::ClientResponse> + 't25)>>>>>, &'t26 mut awc::response::ClientResponse> + 't27)>>>>>, awc::response::ClientResponse> + 't28)>>>>>, awc::response::MessageBody> + 't29)>>>>>, awc::response::MessageBody> + 't30)>>>>>, ()}], impl core::future::future::Future, impl core::future::future::Future, (), std::result::Result, std::result::Result, juniper::executor::FieldError>, &'t5 (), schema::Human, juniper::executor::Executor<'t6, ()>, &'t7 juniper::executor::Executor<'t8, ()>, (), &'t9 (), &'t10 (), &'t11 schema::Human, &'t12 schema::Human, impl core::future::future::Future, impl core::future::future::Future, ()}`
= note: required because it appears within the type `[static generator@juniper/src/schema.rs:32:1: 32:27 args:&juniper::types::base::Arguments<'_>, executor:&juniper::executor::Executor<'_, ()> for<'r, 's, 't0, 't1, 't2, 't3, 't4, 't5, 't6, 't7, 't8, 't9, 't10, 't11, 't12, 't13, 't14, 't15, 't16, 't17, 't18, 't19, 't20, 't21, 't22> {[static generator@juniper/src/schema.rs:32:1: 32:27 args:&'r juniper::types::base::Arguments<'s> for<'t23, 't24, 't25, 't26, 't27, 't28, 't29, 't30> {std::string::String, awc::Client, &'t23 awc::Client, awc::Client, &'t24 str, awc::request::ClientRequest, awc::sender::SendClientRequest, awc::sender::SendClientRequest, (), awc::response::ClientResponse> + 't25)>>>>>, &'t26 mut awc::response::ClientResponse> + 't27)>>>>>, awc::response::ClientResponse> + 't28)>>>>>, awc::response::MessageBody> + 't29)>>>>>, awc::response::MessageBody> + 't30)>>>>>, ()}], impl core::future::future::Future, impl core::future::future::Future, (), std::result::Result, std::result::Result, juniper::executor::FieldError>, &'t5 (), schema::Human, juniper::executor::Executor<'t6, ()>, &'t7 juniper::executor::Executor<'t8, ()>, (), &'t9 (), &'t10 (), &'t11 schema::Human, &'t12 schema::Human, impl core::future::future::Future, impl core::future::future::Future, ()}]`
= note: required because it appears within the type `std::future::GenFuture<[static generator@juniper/src/schema.rs:32:1: 32:27 args:&juniper::types::base::Arguments<'_>, executor:&juniper::executor::Executor<'_, ()> for<'r, 's, 't0, 't1, 't2, 't3, 't4, 't5, 't6, 't7, 't8, 't9, 't10, 't11, 't12, 't13, 't14, 't15, 't16, 't17, 't18, 't19, 't20, 't21, 't22> {[static generator@juniper/src/schema.rs:32:1: 32:27 args:&'r juniper::types::base::Arguments<'s> for<'t23, 't24, 't25, 't26, 't27, 't28, 't29, 't30> {std::string::String, awc::Client, &'t23 awc::Client, awc::Client, &'t24 str, awc::request::ClientRequest, awc::sender::SendClientRequest, awc::sender::SendClientRequest, (), awc::response::ClientResponse> + 't25)>>>>>, &'t26 mut awc::response::ClientResponse> + 't27)>>>>>, awc::response::ClientResponse> + 't28)>>>>>, awc::response::MessageBody> + 't29)>>>>>, awc::response::MessageBody> + 't30)>>>>>, ()}], impl core::future::future::Future, impl core::future::future::Future, (), std::result::Result, std::result::Result, juniper::executor::FieldError>, &'t5 (), schema::Human, juniper::executor::Executor<'t6, ()>, &'t7 juniper::executor::Executor<'t8, ()>, (), &'t9 (), &'t10 (), &'t11 schema::Human, &'t12 schema::Human, impl core::future::future::Future, impl core::future::future::Future, ()}]>`
= note: required because it appears within the type `impl core::future::future::Future`
= note: required by `futures_util::future::future::FutureExt::boxed`
error[E0277]: `std::rc::Rc` cannot be sent between threads safely
--> juniper/src/schema.rs:32:1
|
32 | #[juniper::graphql_object]
| ^^^^^^^^^^^^^^^^^^^^^^^^^^ `std::rc::Rc` cannot be sent between threads safely
|
= help: within `impl core::future::future::Future`, the trait `std::marker::Send` is not implemented for `std::rc::Rc`
= note: required because it appears within the type `awc::Client`
= note: required because it appears within the type `for<'r, 's, 't0, 't1, 't2, 't3, 't4, 't5> {std::string::String, awc::Client, &'r awc::Client, awc::Client, &'s str, awc::request::ClientRequest, awc::sender::SendClientRequest, awc::sender::SendClientRequest, (), awc::response::ClientResponse> + 't0)>>>>>, &'t1 mut awc::response::ClientResponse> + 't2)>>>>>, awc::response::ClientResponse> + 't3)>>>>>, awc::response::MessageBody> + 't4)>>>>>, awc::response::MessageBody> + 't5)>>>>>, ()}`
= note: required because it appears within the type `[static generator@juniper/src/schema.rs:32:1: 32:27 args:&juniper::types::base::Arguments<'_> for<'r, 's, 't0, 't1, 't2, 't3, 't4, 't5> {std::string::String, awc::Client, &'r awc::Client, awc::Client, &'s str, awc::request::ClientRequest, awc::sender::SendClientRequest, awc::sender::SendClientRequest, (), awc::response::ClientResponse> + 't0)>>>>>, &'t1 mut awc::response::ClientResponse> + 't2)>>>>>, awc::response::ClientResponse> + 't3)>>>>>, awc::response::MessageBody> + 't4)>>>>>, awc::response::MessageBody> + 't5)>>>>>, ()}]`
= note: required because it appears within the type `for<'r, 's, 't0, 't1, 't2, 't3, 't4, 't5, 't6, 't7, 't8, 't9, 't10, 't11, 't12, 't13, 't14, 't15, 't16, 't17, 't18, 't19, 't20, 't21, 't22> {[static generator@juniper/src/schema.rs:32:1: 32:27 args:&'r juniper::types::base::Arguments<'s> for<'t23, 't24, 't25, 't26, 't27, 't28, 't29, 't30> {std::string::String, awc::Client, &'t23 awc::Client, awc::Client, &'t24 str, awc::request::ClientRequest, awc::sender::SendClientRequest, awc::sender::SendClientRequest, (), awc::response::ClientResponse> + 't25)>>>>>, &'t26 mut awc::response::ClientResponse> + 't27)>>>>>, awc::response::ClientResponse> + 't28)>>>>>, awc::response::MessageBody> + 't29)>>>>>, awc::response::MessageBody> + 't30)>>>>>, ()}], impl core::future::future::Future, impl core::future::future::Future, (), std::result::Result, std::result::Result, juniper::executor::FieldError>, &'t5 (), schema::Human, juniper::executor::Executor<'t6, ()>, &'t7 juniper::executor::Executor<'t8, ()>, (), &'t9 (), &'t10 (), &'t11 schema::Human, &'t12 schema::Human, impl core::future::future::Future, impl core::future::future::Future, ()}`
= note: required because it appears within the type `[static generator@juniper/src/schema.rs:32:1: 32:27 args:&juniper::types::base::Arguments<'_>, executor:&juniper::executor::Executor<'_, ()> for<'r, 's, 't0, 't1, 't2, 't3, 't4, 't5, 't6, 't7, 't8, 't9, 't10, 't11, 't12, 't13, 't14, 't15, 't16, 't17, 't18, 't19, 't20, 't21, 't22> {[static generator@juniper/src/schema.rs:32:1: 32:27 args:&'r juniper::types::base::Arguments<'s> for<'t23, 't24, 't25, 't26, 't27, 't28, 't29, 't30> {std::string::String, awc::Client, &'t23 awc::Client, awc::Client, &'t24 str, awc::request::ClientRequest, awc::sender::SendClientRequest, awc::sender::SendClientRequest, (), awc::response::ClientResponse> + 't25)>>>>>, &'t26 mut awc::response::ClientResponse> + 't27)>>>>>, awc::response::ClientResponse> + 't28)>>>>>, awc::response::MessageBody> + 't29)>>>>>, awc::response::MessageBody> + 't30)>>>>>, ()}], impl core::future::future::Future, impl core::future::future::Future, (), std::result::Result, std::result::Result, juniper::executor::FieldError>, &'t5 (), schema::Human, juniper::executor::Executor<'t6, ()>, &'t7 juniper::executor::Executor<'t8, ()>, (), &'t9 (), &'t10 (), &'t11 schema::Human, &'t12 schema::Human, impl core::future::future::Future, impl core::future::future::Future, ()}]`
= note: required because it appears within the type `std::future::GenFuture<[static generator@juniper/src/schema.rs:32:1: 32:27 args:&juniper::types::base::Arguments<'_>, executor:&juniper::executor::Executor<'_, ()> for<'r, 's, 't0, 't1, 't2, 't3, 't4, 't5, 't6, 't7, 't8, 't9, 't10, 't11, 't12, 't13, 't14, 't15, 't16, 't17, 't18, 't19, 't20, 't21, 't22> {[static generator@juniper/src/schema.rs:32:1: 32:27 args:&'r juniper::types::base::Arguments<'s> for<'t23, 't24, 't25, 't26, 't27, 't28, 't29, 't30> {std::string::String, awc::Client, &'t23 awc::Client, awc::Client, &'t24 str, awc::request::ClientRequest, awc::sender::SendClientRequest, awc::sender::SendClientRequest, (), awc::response::ClientResponse> + 't25)>>>>>, &'t26 mut awc::response::ClientResponse> + 't27)>>>>>, awc::response::ClientResponse> + 't28)>>>>>, awc::response::MessageBody> + 't29)>>>>>, awc::response::MessageBody> + 't30)>>>>>, ()}], impl core::future::future::Future, impl core::future::future::Future, (), std::result::Result, std::result::Result, juniper::executor::FieldError>, &'t5 (), schema::Human, juniper::executor::Executor<'t6, ()>, &'t7 juniper::executor::Executor<'t8, ()>, (), &'t9 (), &'t10 (), &'t11 schema::Human, &'t12 schema::Human, impl core::future::future::Future, impl core::future::future::Future, ()}]>`
= note: required because it appears within the type `impl core::future::future::Future`
= note: required by `futures_util::future::future::FutureExt::boxed`
error[E0277]: `(dyn core::future::future::Future
Describe the bug
When trying to use the actix_web client inside an impl decorated with
graphql_object
, a number of errors pop up regarding sending futures between threads. I have posted an issue on juniper https://github.com/graphql-rust/juniper/issues/529 but figured this needed visibility on both ends.This is on juniper master with the async feature enabled.
out.log
``` error[E0277]: `std::rc::Rc` cannot be sent between threads safely
--> juniper/src/schema.rs:32:1
|
32 | #[juniper::graphql_object]
| ^^^^^^^^^^^^^^^^^^^^^^^^^^ `std::rc::Rc` cannot be sent between threads safely
|
= help: within `impl core::future::future::Future`, the trait `std::marker::Send` is not implemented for `std::rc::Rc`
= note: required because it appears within the type `awc::Client`
= note: required because it appears within the type `for<'r, 's, 't0, 't1, 't2, 't3, 't4, 't5> {std::string::String, awc::Client, &'r awc::Client, awc::Client, &'s str, awc::request::ClientRequest, awc::sender::SendClientRequest, awc::sender::SendClientRequest, (), awc::response::ClientResponse> + 't0)>>>>>, &'t1 mut awc::response::ClientResponse> + 't2)>>>>>, awc::response::ClientResponse> + 't3)>>>>>, awc::response::MessageBody> + 't4)>>>>>, awc::response::MessageBody> + 't5)>>>>>, ()}`
= note: required because it appears within the type `[static generator@juniper/src/schema.rs:32:1: 32:27 args:&juniper::types::base::Arguments<'_> for<'r, 's, 't0, 't1, 't2, 't3, 't4, 't5> {std::string::String, awc::Client, &'r awc::Client, awc::Client, &'s str, awc::request::ClientRequest, awc::sender::SendClientRequest, awc::sender::SendClientRequest, (), awc::response::ClientResponse> + 't0)>>>>>, &'t1 mut awc::response::ClientResponse> + 't2)>>>>>, awc::response::ClientResponse> + 't3)>>>>>, awc::response::MessageBody> + 't4)>>>>>, awc::response::MessageBody> + 't5)>>>>>, ()}]`
= note: required because it appears within the type `for<'r, 's, 't0, 't1, 't2, 't3, 't4, 't5, 't6, 't7, 't8, 't9, 't10, 't11, 't12, 't13, 't14, 't15, 't16, 't17, 't18, 't19, 't20, 't21, 't22> {[static generator@juniper/src/schema.rs:32:1: 32:27 args:&'r juniper::types::base::Arguments<'s> for<'t23, 't24, 't25, 't26, 't27, 't28, 't29, 't30> {std::string::String, awc::Client, &'t23 awc::Client, awc::Client, &'t24 str, awc::request::ClientRequest, awc::sender::SendClientRequest, awc::sender::SendClientRequest, (), awc::response::ClientResponse> + 't25)>>>>>, &'t26 mut awc::response::ClientResponse> + 't27)>>>>>, awc::response::ClientResponse> + 't28)>>>>>, awc::response::MessageBody> + 't29)>>>>>, awc::response::MessageBody> + 't30)>>>>>, ()}], impl core::future::future::Future, impl core::future::future::Future, (), std::result::Result, std::result::Result, juniper::executor::FieldError>, &'t5 (), schema::Human, juniper::executor::Executor<'t6, ()>, &'t7 juniper::executor::Executor<'t8, ()>, (), &'t9 (), &'t10 (), &'t11 schema::Human, &'t12 schema::Human, impl core::future::future::Future, impl core::future::future::Future, ()}`
= note: required because it appears within the type `[static generator@juniper/src/schema.rs:32:1: 32:27 args:&juniper::types::base::Arguments<'_>, executor:&juniper::executor::Executor<'_, ()> for<'r, 's, 't0, 't1, 't2, 't3, 't4, 't5, 't6, 't7, 't8, 't9, 't10, 't11, 't12, 't13, 't14, 't15, 't16, 't17, 't18, 't19, 't20, 't21, 't22> {[static generator@juniper/src/schema.rs:32:1: 32:27 args:&'r juniper::types::base::Arguments<'s> for<'t23, 't24, 't25, 't26, 't27, 't28, 't29, 't30> {std::string::String, awc::Client, &'t23 awc::Client, awc::Client, &'t24 str, awc::request::ClientRequest, awc::sender::SendClientRequest, awc::sender::SendClientRequest, (), awc::response::ClientResponse> + 't25)>>>>>, &'t26 mut awc::response::ClientResponse> + 't27)>>>>>, awc::response::ClientResponse> + 't28)>>>>>, awc::response::MessageBody> + 't29)>>>>>, awc::response::MessageBody> + 't30)>>>>>, ()}], impl core::future::future::Future, impl core::future::future::Future, (), std::result::Result, std::result::Result, juniper::executor::FieldError>, &'t5 (), schema::Human, juniper::executor::Executor<'t6, ()>, &'t7 juniper::executor::Executor<'t8, ()>, (), &'t9 (), &'t10 (), &'t11 schema::Human, &'t12 schema::Human, impl core::future::future::Future, impl core::future::future::Future, ()}]`
= note: required because it appears within the type `std::future::GenFuture<[static generator@juniper/src/schema.rs:32:1: 32:27 args:&juniper::types::base::Arguments<'_>, executor:&juniper::executor::Executor<'_, ()> for<'r, 's, 't0, 't1, 't2, 't3, 't4, 't5, 't6, 't7, 't8, 't9, 't10, 't11, 't12, 't13, 't14, 't15, 't16, 't17, 't18, 't19, 't20, 't21, 't22> {[static generator@juniper/src/schema.rs:32:1: 32:27 args:&'r juniper::types::base::Arguments<'s> for<'t23, 't24, 't25, 't26, 't27, 't28, 't29, 't30> {std::string::String, awc::Client, &'t23 awc::Client, awc::Client, &'t24 str, awc::request::ClientRequest, awc::sender::SendClientRequest, awc::sender::SendClientRequest, (), awc::response::ClientResponse> + 't25)>>>>>, &'t26 mut awc::response::ClientResponse> + 't27)>>>>>, awc::response::ClientResponse> + 't28)>>>>>, awc::response::MessageBody> + 't29)>>>>>, awc::response::MessageBody> + 't30)>>>>>, ()}], impl core::future::future::Future, impl core::future::future::Future, (), std::result::Result, std::result::Result, juniper::executor::FieldError>, &'t5 (), schema::Human, juniper::executor::Executor<'t6, ()>, &'t7 juniper::executor::Executor<'t8, ()>, (), &'t9 (), &'t10 (), &'t11 schema::Human, &'t12 schema::Human, impl core::future::future::Future, impl core::future::future::Future, ()}]>`
= note: required because it appears within the type `impl core::future::future::Future`
= note: required by `futures_util::future::future::FutureExt::boxed`
error[E0277]: `std::rc::Rc` cannot be shared between threads safely
--> juniper/src/schema.rs:32:1
|
32 | #[juniper::graphql_object]
| ^^^^^^^^^^^^^^^^^^^^^^^^^^ `std::rc::Rc` cannot be shared between threads safely
|
= help: within `awc::Client`, the trait `std::marker::Sync` is not implemented for `std::rc::Rc`
= note: required because it appears within the type `awc::Client`
= note: required because of the requirements on the impl of `std::marker::Send` for `&awc::Client`
= note: required because it appears within the type `for<'r, 's, 't0, 't1, 't2, 't3, 't4, 't5> {std::string::String, awc::Client, &'r awc::Client, awc::Client, &'s str, awc::request::ClientRequest, awc::sender::SendClientRequest, awc::sender::SendClientRequest, (), awc::response::ClientResponse> + 't0)>>>>>, &'t1 mut awc::response::ClientResponse> + 't2)>>>>>, awc::response::ClientResponse> + 't3)>>>>>, awc::response::MessageBody> + 't4)>>>>>, awc::response::MessageBody> + 't5)>>>>>, ()}`
= note: required because it appears within the type `[static generator@juniper/src/schema.rs:32:1: 32:27 args:&juniper::types::base::Arguments<'_> for<'r, 's, 't0, 't1, 't2, 't3, 't4, 't5> {std::string::String, awc::Client, &'r awc::Client, awc::Client, &'s str, awc::request::ClientRequest, awc::sender::SendClientRequest, awc::sender::SendClientRequest, (), awc::response::ClientResponse> + 't0)>>>>>, &'t1 mut awc::response::ClientResponse> + 't2)>>>>>, awc::response::ClientResponse> + 't3)>>>>>, awc::response::MessageBody> + 't4)>>>>>, awc::response::MessageBody> + 't5)>>>>>, ()}]`
= note: required because it appears within the type `for<'r, 's, 't0, 't1, 't2, 't3, 't4, 't5, 't6, 't7, 't8, 't9, 't10, 't11, 't12, 't13, 't14, 't15, 't16, 't17, 't18, 't19, 't20, 't21, 't22> {[static generator@juniper/src/schema.rs:32:1: 32:27 args:&'r juniper::types::base::Arguments<'s> for<'t23, 't24, 't25, 't26, 't27, 't28, 't29, 't30> {std::string::String, awc::Client, &'t23 awc::Client, awc::Client, &'t24 str, awc::request::ClientRequest, awc::sender::SendClientRequest, awc::sender::SendClientRequest, (), awc::response::ClientResponse> + 't25)>>>>>, &'t26 mut awc::response::ClientResponse> + 't27)>>>>>, awc::response::ClientResponse> + 't28)>>>>>, awc::response::MessageBody> + 't29)>>>>>, awc::response::MessageBody> + 't30)>>>>>, ()}], impl core::future::future::Future, impl core::future::future::Future, (), std::result::Result, std::result::Result, juniper::executor::FieldError>, &'t5 (), schema::Human, juniper::executor::Executor<'t6, ()>, &'t7 juniper::executor::Executor<'t8, ()>, (), &'t9 (), &'t10 (), &'t11 schema::Human, &'t12 schema::Human, impl core::future::future::Future, impl core::future::future::Future, ()}`
= note: required because it appears within the type `[static generator@juniper/src/schema.rs:32:1: 32:27 args:&juniper::types::base::Arguments<'_>, executor:&juniper::executor::Executor<'_, ()> for<'r, 's, 't0, 't1, 't2, 't3, 't4, 't5, 't6, 't7, 't8, 't9, 't10, 't11, 't12, 't13, 't14, 't15, 't16, 't17, 't18, 't19, 't20, 't21, 't22> {[static generator@juniper/src/schema.rs:32:1: 32:27 args:&'r juniper::types::base::Arguments<'s> for<'t23, 't24, 't25, 't26, 't27, 't28, 't29, 't30> {std::string::String, awc::Client, &'t23 awc::Client, awc::Client, &'t24 str, awc::request::ClientRequest, awc::sender::SendClientRequest, awc::sender::SendClientRequest, (), awc::response::ClientResponse> + 't25)>>>>>, &'t26 mut awc::response::ClientResponse> + 't27)>>>>>, awc::response::ClientResponse> + 't28)>>>>>, awc::response::MessageBody> + 't29)>>>>>, awc::response::MessageBody> + 't30)>>>>>, ()}], impl core::future::future::Future, impl core::future::future::Future, (), std::result::Result, std::result::Result, juniper::executor::FieldError>, &'t5 (), schema::Human, juniper::executor::Executor<'t6, ()>, &'t7 juniper::executor::Executor<'t8, ()>, (), &'t9 (), &'t10 (), &'t11 schema::Human, &'t12 schema::Human, impl core::future::future::Future, impl core::future::future::Future, ()}]`
= note: required because it appears within the type `std::future::GenFuture<[static generator@juniper/src/schema.rs:32:1: 32:27 args:&juniper::types::base::Arguments<'_>, executor:&juniper::executor::Executor<'_, ()> for<'r, 's, 't0, 't1, 't2, 't3, 't4, 't5, 't6, 't7, 't8, 't9, 't10, 't11, 't12, 't13, 't14, 't15, 't16, 't17, 't18, 't19, 't20, 't21, 't22> {[static generator@juniper/src/schema.rs:32:1: 32:27 args:&'r juniper::types::base::Arguments<'s> for<'t23, 't24, 't25, 't26, 't27, 't28, 't29, 't30> {std::string::String, awc::Client, &'t23 awc::Client, awc::Client, &'t24 str, awc::request::ClientRequest, awc::sender::SendClientRequest, awc::sender::SendClientRequest, (), awc::response::ClientResponse> + 't25)>>>>>, &'t26 mut awc::response::ClientResponse> + 't27)>>>>>, awc::response::ClientResponse> + 't28)>>>>>, awc::response::MessageBody> + 't29)>>>>>, awc::response::MessageBody> + 't30)>>>>>, ()}], impl core::future::future::Future, impl core::future::future::Future, (), std::result::Result, std::result::Result, juniper::executor::FieldError>, &'t5 (), schema::Human, juniper::executor::Executor<'t6, ()>, &'t7 juniper::executor::Executor<'t8, ()>, (), &'t9 (), &'t10 (), &'t11 schema::Human, &'t12 schema::Human, impl core::future::future::Future, impl core::future::future::Future, ()}]>`
= note: required because it appears within the type `impl core::future::future::Future`
= note: required by `futures_util::future::future::FutureExt::boxed`
error[E0277]: `std::rc::Rc>` cannot be sent between threads safely
--> juniper/src/schema.rs:32:1
|
32 | #[juniper::graphql_object]
| ^^^^^^^^^^^^^^^^^^^^^^^^^^ `std::rc::Rc>` cannot be sent between threads safely
|
= help: within `impl core::future::future::Future`, the trait `std::marker::Send` is not implemented for `std::rc::Rc>`
= note: required because it appears within the type `actix_http::h1::payload::Payload`
= note: required because it appears within the type `actix_http::payload::Payload>>>>>>`
= note: required because it appears within the type `awc::response::ClientResponse>>>>>>`
= note: required because it appears within the type `for<'r, 's, 't0, 't1, 't2, 't3, 't4, 't5> {std::string::String, awc::Client, &'r awc::Client, awc::Client, &'s str, awc::request::ClientRequest, awc::sender::SendClientRequest, awc::sender::SendClientRequest, (), awc::response::ClientResponse> + 't0)>>>>>, &'t1 mut awc::response::ClientResponse> + 't2)>>>>>, awc::response::ClientResponse> + 't3)>>>>>, awc::response::MessageBody> + 't4)>>>>>, awc::response::MessageBody> + 't5)>>>>>, ()}`
= note: required because it appears within the type `[static generator@juniper/src/schema.rs:32:1: 32:27 args:&juniper::types::base::Arguments<'_> for<'r, 's, 't0, 't1, 't2, 't3, 't4, 't5> {std::string::String, awc::Client, &'r awc::Client, awc::Client, &'s str, awc::request::ClientRequest, awc::sender::SendClientRequest, awc::sender::SendClientRequest, (), awc::response::ClientResponse> + 't0)>>>>>, &'t1 mut awc::response::ClientResponse> + 't2)>>>>>, awc::response::ClientResponse> + 't3)>>>>>, awc::response::MessageBody> + 't4)>>>>>, awc::response::MessageBody> + 't5)>>>>>, ()}]`
= note: required because it appears within the type `for<'r, 's, 't0, 't1, 't2, 't3, 't4, 't5, 't6, 't7, 't8, 't9, 't10, 't11, 't12, 't13, 't14, 't15, 't16, 't17, 't18, 't19, 't20, 't21, 't22> {[static generator@juniper/src/schema.rs:32:1: 32:27 args:&'r juniper::types::base::Arguments<'s> for<'t23, 't24, 't25, 't26, 't27, 't28, 't29, 't30> {std::string::String, awc::Client, &'t23 awc::Client, awc::Client, &'t24 str, awc::request::ClientRequest, awc::sender::SendClientRequest, awc::sender::SendClientRequest, (), awc::response::ClientResponse> + 't25)>>>>>, &'t26 mut awc::response::ClientResponse> + 't27)>>>>>, awc::response::ClientResponse> + 't28)>>>>>, awc::response::MessageBody> + 't29)>>>>>, awc::response::MessageBody> + 't30)>>>>>, ()}], impl core::future::future::Future, impl core::future::future::Future, (), std::result::Result, std::result::Result, juniper::executor::FieldError>, &'t5 (), schema::Human, juniper::executor::Executor<'t6, ()>, &'t7 juniper::executor::Executor<'t8, ()>, (), &'t9 (), &'t10 (), &'t11 schema::Human, &'t12 schema::Human, impl core::future::future::Future, impl core::future::future::Future, ()}`
= note: required because it appears within the type `[static generator@juniper/src/schema.rs:32:1: 32:27 args:&juniper::types::base::Arguments<'_>, executor:&juniper::executor::Executor<'_, ()> for<'r, 's, 't0, 't1, 't2, 't3, 't4, 't5, 't6, 't7, 't8, 't9, 't10, 't11, 't12, 't13, 't14, 't15, 't16, 't17, 't18, 't19, 't20, 't21, 't22> {[static generator@juniper/src/schema.rs:32:1: 32:27 args:&'r juniper::types::base::Arguments<'s> for<'t23, 't24, 't25, 't26, 't27, 't28, 't29, 't30> {std::string::String, awc::Client, &'t23 awc::Client, awc::Client, &'t24 str, awc::request::ClientRequest, awc::sender::SendClientRequest, awc::sender::SendClientRequest, (), awc::response::ClientResponse> + 't25)>>>>>, &'t26 mut awc::response::ClientResponse> + 't27)>>>>>, awc::response::ClientResponse> + 't28)>>>>>, awc::response::MessageBody> + 't29)>>>>>, awc::response::MessageBody> + 't30)>>>>>, ()}], impl core::future::future::Future, impl core::future::future::Future, (), std::result::Result, std::result::Result, juniper::executor::FieldError>, &'t5 (), schema::Human, juniper::executor::Executor<'t6, ()>, &'t7 juniper::executor::Executor<'t8, ()>, (), &'t9 (), &'t10 (), &'t11 schema::Human, &'t12 schema::Human, impl core::future::future::Future, impl core::future::future::Future, ()}]`
= note: required because it appears within the type `std::future::GenFuture<[static generator@juniper/src/schema.rs:32:1: 32:27 args:&juniper::types::base::Arguments<'_>, executor:&juniper::executor::Executor<'_, ()> for<'r, 's, 't0, 't1, 't2, 't3, 't4, 't5, 't6, 't7, 't8, 't9, 't10, 't11, 't12, 't13, 't14, 't15, 't16, 't17, 't18, 't19, 't20, 't21, 't22> {[static generator@juniper/src/schema.rs:32:1: 32:27 args:&'r juniper::types::base::Arguments<'s> for<'t23, 't24, 't25, 't26, 't27, 't28, 't29, 't30> {std::string::String, awc::Client, &'t23 awc::Client, awc::Client, &'t24 str, awc::request::ClientRequest, awc::sender::SendClientRequest, awc::sender::SendClientRequest, (), awc::response::ClientResponse> + 't25)>>>>>, &'t26 mut awc::response::ClientResponse> + 't27)>>>>>, awc::response::ClientResponse> + 't28)>>>>>, awc::response::MessageBody> + 't29)>>>>>, awc::response::MessageBody> + 't30)>>>>>, ()}], impl core::future::future::Future, impl core::future::future::Future, (), std::result::Result, std::result::Result, juniper::executor::FieldError>, &'t5 (), schema::Human, juniper::executor::Executor<'t6, ()>, &'t7 juniper::executor::Executor<'t8, ()>, (), &'t9 (), &'t10 (), &'t11 schema::Human, &'t12 schema::Human, impl core::future::future::Future, impl core::future::future::Future, ()}]>`
= note: required because it appears within the type `impl core::future::future::Future`
= note: required by `futures_util::future::future::FutureExt::boxed`
error[E0277]: `std::rc::Rc` cannot be sent between threads safely
--> juniper/src/schema.rs:32:1
|
32 | #[juniper::graphql_object]
| ^^^^^^^^^^^^^^^^^^^^^^^^^^ `std::rc::Rc` cannot be sent between threads safely
|
= help: within `impl core::future::future::Future`, the trait `std::marker::Send` is not implemented for `std::rc::Rc`
= note: required because it appears within the type `awc::Client`
= note: required because it appears within the type `for<'r, 's, 't0, 't1, 't2, 't3, 't4, 't5> {std::string::String, awc::Client, &'r awc::Client, awc::Client, &'s str, awc::request::ClientRequest, awc::sender::SendClientRequest, awc::sender::SendClientRequest, (), awc::response::ClientResponse> + 't0)>>>>>, &'t1 mut awc::response::ClientResponse> + 't2)>>>>>, awc::response::ClientResponse> + 't3)>>>>>, awc::response::MessageBody> + 't4)>>>>>, awc::response::MessageBody> + 't5)>>>>>, ()}`
= note: required because it appears within the type `[static generator@juniper/src/schema.rs:32:1: 32:27 args:&juniper::types::base::Arguments<'_> for<'r, 's, 't0, 't1, 't2, 't3, 't4, 't5> {std::string::String, awc::Client, &'r awc::Client, awc::Client, &'s str, awc::request::ClientRequest, awc::sender::SendClientRequest, awc::sender::SendClientRequest, (), awc::response::ClientResponse> + 't0)>>>>>, &'t1 mut awc::response::ClientResponse> + 't2)>>>>>, awc::response::ClientResponse> + 't3)>>>>>, awc::response::MessageBody> + 't4)>>>>>, awc::response::MessageBody> + 't5)>>>>>, ()}]`
= note: required because it appears within the type `for<'r, 's, 't0, 't1, 't2, 't3, 't4, 't5, 't6, 't7, 't8, 't9, 't10, 't11, 't12, 't13, 't14, 't15, 't16, 't17, 't18, 't19, 't20, 't21, 't22> {[static generator@juniper/src/schema.rs:32:1: 32:27 args:&'r juniper::types::base::Arguments<'s> for<'t23, 't24, 't25, 't26, 't27, 't28, 't29, 't30> {std::string::String, awc::Client, &'t23 awc::Client, awc::Client, &'t24 str, awc::request::ClientRequest, awc::sender::SendClientRequest, awc::sender::SendClientRequest, (), awc::response::ClientResponse> + 't25)>>>>>, &'t26 mut awc::response::ClientResponse> + 't27)>>>>>, awc::response::ClientResponse> + 't28)>>>>>, awc::response::MessageBody> + 't29)>>>>>, awc::response::MessageBody> + 't30)>>>>>, ()}], impl core::future::future::Future, impl core::future::future::Future, (), std::result::Result, std::result::Result, juniper::executor::FieldError>, &'t5 (), schema::Human, juniper::executor::Executor<'t6, ()>, &'t7 juniper::executor::Executor<'t8, ()>, (), &'t9 (), &'t10 (), &'t11 schema::Human, &'t12 schema::Human, impl core::future::future::Future, impl core::future::future::Future, ()}`
= note: required because it appears within the type `[static generator@juniper/src/schema.rs:32:1: 32:27 args:&juniper::types::base::Arguments<'_>, executor:&juniper::executor::Executor<'_, ()> for<'r, 's, 't0, 't1, 't2, 't3, 't4, 't5, 't6, 't7, 't8, 't9, 't10, 't11, 't12, 't13, 't14, 't15, 't16, 't17, 't18, 't19, 't20, 't21, 't22> {[static generator@juniper/src/schema.rs:32:1: 32:27 args:&'r juniper::types::base::Arguments<'s> for<'t23, 't24, 't25, 't26, 't27, 't28, 't29, 't30> {std::string::String, awc::Client, &'t23 awc::Client, awc::Client, &'t24 str, awc::request::ClientRequest, awc::sender::SendClientRequest, awc::sender::SendClientRequest, (), awc::response::ClientResponse> + 't25)>>>>>, &'t26 mut awc::response::ClientResponse> + 't27)>>>>>, awc::response::ClientResponse> + 't28)>>>>>, awc::response::MessageBody> + 't29)>>>>>, awc::response::MessageBody> + 't30)>>>>>, ()}], impl core::future::future::Future, impl core::future::future::Future, (), std::result::Result, std::result::Result, juniper::executor::FieldError>, &'t5 (), schema::Human, juniper::executor::Executor<'t6, ()>, &'t7 juniper::executor::Executor<'t8, ()>, (), &'t9 (), &'t10 (), &'t11 schema::Human, &'t12 schema::Human, impl core::future::future::Future, impl core::future::future::Future, ()}]`
= note: required because it appears within the type `std::future::GenFuture<[static generator@juniper/src/schema.rs:32:1: 32:27 args:&juniper::types::base::Arguments<'_>, executor:&juniper::executor::Executor<'_, ()> for<'r, 's, 't0, 't1, 't2, 't3, 't4, 't5, 't6, 't7, 't8, 't9, 't10, 't11, 't12, 't13, 't14, 't15, 't16, 't17, 't18, 't19, 't20, 't21, 't22> {[static generator@juniper/src/schema.rs:32:1: 32:27 args:&'r juniper::types::base::Arguments<'s> for<'t23, 't24, 't25, 't26, 't27, 't28, 't29, 't30> {std::string::String, awc::Client, &'t23 awc::Client, awc::Client, &'t24 str, awc::request::ClientRequest, awc::sender::SendClientRequest, awc::sender::SendClientRequest, (), awc::response::ClientResponse> + 't25)>>>>>, &'t26 mut awc::response::ClientResponse> + 't27)>>>>>, awc::response::ClientResponse> + 't28)>>>>>, awc::response::MessageBody> + 't29)>>>>>, awc::response::MessageBody> + 't30)>>>>>, ()}], impl core::future::future::Future, impl core::future::future::Future, (), std::result::Result, std::result::Result, juniper::executor::FieldError>, &'t5 (), schema::Human, juniper::executor::Executor<'t6, ()>, &'t7 juniper::executor::Executor<'t8, ()>, (), &'t9 (), &'t10 (), &'t11 schema::Human, &'t12 schema::Human, impl core::future::future::Future, impl core::future::future::Future, ()}]>`
= note: required because it appears within the type `impl core::future::future::Future`
= note: required by `futures_util::future::future::FutureExt::boxed`
error[E0277]: `(dyn core::future::future::Future