actix / actix-web

Actix Web is a powerful, pragmatic, and extremely fast web framework for Rust.
https://actix.rs
Apache License 2.0
21.75k stars 1.68k forks source link

Send between threads error when using actix_web client with juniper #1351

Closed arlyon closed 3 years ago

arlyon commented 4 years ago

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> + 'static)` cannot be sent between threads safely --> juniper/src/schema.rs:32:1 | 32 | #[juniper::graphql_object] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ `(dyn core::future::future::Future> + 'static)` cannot be sent between threads safely | = help: the trait `std::marker::Send` is not implemented for `(dyn core::future::future::Future> + 'static)` = note: required because of the requirements on the impl of `std::marker::Send` for `std::ptr::Unique<(dyn core::future::future::Future> + 'static)>` = note: required because it appears within the type `std::boxed::Box<(dyn core::future::future::Future> + 'static)>` = note: required because it appears within the type `std::pin::Pin> + 'static)>>` = note: required because it appears within the type `awc::sender::SendClientRequest` = 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]: `(dyn actix_http::error::ResponseError + 'static)` cannot be sent between threads safely --> juniper/src/schema.rs:32:1 | 32 | #[juniper::graphql_object] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ `(dyn actix_http::error::ResponseError + 'static)` cannot be sent between threads safely | = help: the trait `std::marker::Send` is not implemented for `(dyn actix_http::error::ResponseError + 'static)` = note: required because of the requirements on the impl of `std::marker::Send` for `std::ptr::Unique<(dyn actix_http::error::ResponseError + 'static)>` = note: required because it appears within the type `std::boxed::Box<(dyn actix_http::error::ResponseError + 'static)>` = note: required because it appears within the type `actix_http::error::Error` = note: required because it appears within the type `actix_http::client::error::SendRequestError` = note: required because it appears within the type `std::option::Option` = note: required because it appears within the type `awc::sender::SendClientRequest` = 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> + 'static)` cannot be sent between threads safely --> juniper/src/schema.rs:32:1 | 32 | #[juniper::graphql_object] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ `(dyn core::future::future::Future> + 'static)` cannot be sent between threads safely | = help: the trait `std::marker::Send` is not implemented for `(dyn core::future::future::Future> + 'static)` = note: required because of the requirements on the impl of `std::marker::Send` for `std::ptr::Unique<(dyn core::future::future::Future> + 'static)>` = note: required because it appears within the type `std::boxed::Box<(dyn core::future::future::Future> + 'static)>` = note: required because it appears within the type `std::pin::Pin> + 'static)>>` = note: required because it appears within the type `awc::sender::SendClientRequest` = 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 futures_core::stream::Stream>` cannot be sent between threads safely --> juniper/src/schema.rs:32:1 | 32 | #[juniper::graphql_object] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ `dyn futures_core::stream::Stream>` cannot be sent between threads safely | = help: the trait `std::marker::Send` is not implemented for `dyn futures_core::stream::Stream>` = note: required because of the requirements on the impl of `std::marker::Send` for `std::ptr::Unique>>` = note: required because it appears within the type `std::boxed::Box>>` = note: required because it appears within the type `std::pin::Pin>>>` = note: required because it appears within the type `actix_http::payload::Payload>>>>` = note: required because it appears within the type `actix_http::encoding::decoder::Decoder>>>>>` = 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]: `(dyn actix_http::error::ResponseError + 'static)` cannot be sent between threads safely --> juniper/src/schema.rs:32:1 | 32 | #[juniper::graphql_object] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ `(dyn actix_http::error::ResponseError + 'static)` cannot be sent between threads safely | = help: the trait `std::marker::Send` is not implemented for `(dyn actix_http::error::ResponseError + 'static)` = note: required because of the requirements on the impl of `std::marker::Send` for `std::ptr::Unique<(dyn actix_http::error::ResponseError + 'static)>` = note: required because it appears within the type `std::boxed::Box<(dyn actix_http::error::ResponseError + 'static)>` = note: required because it appears within the type `actix_http::error::Error` = note: required because it appears within the type `actix_http::client::error::SendRequestError` = note: required because it appears within the type `std::option::Option` = note: required because it appears within the type `awc::sender::SendClientRequest` = 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 std::any::Any + 'static)` cannot be sent between threads safely --> juniper/src/schema.rs:32:1 | 32 | #[juniper::graphql_object] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ `(dyn std::any::Any + 'static)` cannot be sent between threads safely | = help: the trait `std::marker::Send` is not implemented for `(dyn std::any::Any + 'static)` = note: required because of the requirements on the impl of `std::marker::Send` for `std::ptr::Unique<(dyn std::any::Any + 'static)>` = note: required because it appears within the type `std::boxed::Box<(dyn std::any::Any + 'static)>` = note: required because it appears within the type `(std::any::TypeId, std::boxed::Box<(dyn std::any::Any + 'static)>)` = note: required because of the requirements on the impl of `std::marker::Send` for `hashbrown::raw::RawTable<(std::any::TypeId, std::boxed::Box<(dyn std::any::Any + 'static)>)>` = note: required because it appears within the type `hashbrown::map::HashMap, std::hash::BuildHasherDefault>` = note: required because it appears within the type `std::collections::HashMap, std::hash::BuildHasherDefault>` = note: required because it appears within the type `actix_http::extensions::Extensions` = note: required because of the requirements on the impl of `std::marker::Send` for `std::cell::RefCell` = note: required because it appears within the type `actix_http::message::RequestHead` = note: required because it appears within the type `awc::request::ClientRequest` = 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 futures_core::stream::Stream>` cannot be sent between threads safely --> juniper/src/schema.rs:32:1 | 32 | #[juniper::graphql_object] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ `dyn futures_core::stream::Stream>` cannot be sent between threads safely | = help: the trait `std::marker::Send` is not implemented for `dyn futures_core::stream::Stream>` = note: required because of the requirements on the impl of `std::marker::Send` for `std::ptr::Unique>>` = note: required because it appears within the type `std::boxed::Box>>` = note: required because it appears within the type `std::pin::Pin>>>` = note: required because it appears within the type `actix_http::payload::Payload>>>>` = note: required because it appears within the type `actix_http::encoding::decoder::Decoder>>>>>` = 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]: `(dyn std::any::Any + 'static)` cannot be sent between threads safely --> juniper/src/schema.rs:32:1 | 32 | #[juniper::graphql_object] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ `(dyn std::any::Any + 'static)` cannot be sent between threads safely | = help: the trait `std::marker::Send` is not implemented for `(dyn std::any::Any + 'static)` = note: required because of the requirements on the impl of `std::marker::Send` for `std::ptr::Unique<(dyn std::any::Any + 'static)>` = note: required because it appears within the type `std::boxed::Box<(dyn std::any::Any + 'static)>` = note: required because it appears within the type `(std::any::TypeId, std::boxed::Box<(dyn std::any::Any + 'static)>)` = note: required because of the requirements on the impl of `std::marker::Send` for `hashbrown::raw::RawTable<(std::any::TypeId, std::boxed::Box<(dyn std::any::Any + 'static)>)>` = note: required because it appears within the type `hashbrown::map::HashMap, std::hash::BuildHasherDefault>` = note: required because it appears within the type `std::collections::HashMap, std::hash::BuildHasherDefault>` = note: required because it appears within the type `actix_http::extensions::Extensions` = note: required because of the requirements on the impl of `std::marker::Send` for `std::cell::RefCell` = note: required because it appears within the type `actix_http::message::RequestHead` = note: required because it appears within the type `awc::request::ClientRequest` = 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` ```

To Reproduce

I created a minimum reproducing repository here, based on the actix web example: https://github.com/arlyon/examples/tree/juniper-actix-error/juniper

Expected behavior

I would expect this to work correctly. It should be noted that hyper works fine, but I'd like to avoid using another client when I have one baked in.

GopherJ commented 4 years ago

Hello @arlyon , You may need reqwest. By default actix-web starts mutiple workers and every worker owns its proper data. So basically, it's designed like this.

robjtede commented 4 years ago

Seems like its the error handling that's at fault here? Does it compile if you use .unwrap instead of ? on the .send().await line?

arlyon commented 4 years ago

@robjtede Converting all the ? into unwraps spits out this:

out.log

``` Compiling juniper-example v0.2.0 (/Users/arlyon/Downloads/examples-juniper-actix-error/juniper) error[E0277]: `std::rc::Rc` cannot be sent between threads safely --> juniper/src/schema.rs:38:1 | 38 | #[juniper::graphql_object(Context=Context)] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `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:38:1: 38:44 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, 't23, 't24, 't25, 't26, 't27, 't28> {[static generator@juniper/src/schema.rs:38:1: 38:44 args:&'r juniper::types::base::Arguments<'s> for<'t29, 't30, 't31, 't32, 't33, 't34, 't35, 't36> {std::string::String, awc::Client, &'t29 awc::Client, awc::Client, &'t30 str, awc::request::ClientRequest, awc::sender::SendClientRequest, awc::sender::SendClientRequest, (), awc::response::ClientResponse> + 't31)>>>>>, &'t32 mut awc::response::ClientResponse> + 't33)>>>>>, awc::response::ClientResponse> + 't34)>>>>>, awc::response::MessageBody> + 't35)>>>>>, awc::response::MessageBody> + 't36)>>>>>, ()}], 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, ()>, &'t8 juniper::executor::Executor<'t9, 't10, ()>, (), &'t11 (), &'t12 (), &'t13 schema::Human, &'t14 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:38:1: 38:44 args:&juniper::types::base::Arguments<'_>, executor:&juniper::executor::Executor<'_, '_, schema::Context> 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, 't23, 't24, 't25, 't26, 't27, 't28> {[static generator@juniper/src/schema.rs:38:1: 38:44 args:&'r juniper::types::base::Arguments<'s> for<'t29, 't30, 't31, 't32, 't33, 't34, 't35, 't36> {std::string::String, awc::Client, &'t29 awc::Client, awc::Client, &'t30 str, awc::request::ClientRequest, awc::sender::SendClientRequest, awc::sender::SendClientRequest, (), awc::response::ClientResponse> + 't31)>>>>>, &'t32 mut awc::response::ClientResponse> + 't33)>>>>>, awc::response::ClientResponse> + 't34)>>>>>, awc::response::MessageBody> + 't35)>>>>>, awc::response::MessageBody> + 't36)>>>>>, ()}], 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, ()>, &'t8 juniper::executor::Executor<'t9, 't10, ()>, (), &'t11 (), &'t12 (), &'t13 schema::Human, &'t14 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:38:1: 38:44 args:&juniper::types::base::Arguments<'_>, executor:&juniper::executor::Executor<'_, '_, schema::Context> 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, 't23, 't24, 't25, 't26, 't27, 't28> {[static generator@juniper/src/schema.rs:38:1: 38:44 args:&'r juniper::types::base::Arguments<'s> for<'t29, 't30, 't31, 't32, 't33, 't34, 't35, 't36> {std::string::String, awc::Client, &'t29 awc::Client, awc::Client, &'t30 str, awc::request::ClientRequest, awc::sender::SendClientRequest, awc::sender::SendClientRequest, (), awc::response::ClientResponse> + 't31)>>>>>, &'t32 mut awc::response::ClientResponse> + 't33)>>>>>, awc::response::ClientResponse> + 't34)>>>>>, awc::response::MessageBody> + 't35)>>>>>, awc::response::MessageBody> + 't36)>>>>>, ()}], 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, ()>, &'t8 juniper::executor::Executor<'t9, 't10, ()>, (), &'t11 (), &'t12 (), &'t13 schema::Human, &'t14 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:38:1 | 38 | #[juniper::graphql_object(Context=Context)] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `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:38:1: 38:44 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, 't23, 't24, 't25, 't26, 't27, 't28> {[static generator@juniper/src/schema.rs:38:1: 38:44 args:&'r juniper::types::base::Arguments<'s> for<'t29, 't30, 't31, 't32, 't33, 't34, 't35, 't36> {std::string::String, awc::Client, &'t29 awc::Client, awc::Client, &'t30 str, awc::request::ClientRequest, awc::sender::SendClientRequest, awc::sender::SendClientRequest, (), awc::response::ClientResponse> + 't31)>>>>>, &'t32 mut awc::response::ClientResponse> + 't33)>>>>>, awc::response::ClientResponse> + 't34)>>>>>, awc::response::MessageBody> + 't35)>>>>>, awc::response::MessageBody> + 't36)>>>>>, ()}], 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, ()>, &'t8 juniper::executor::Executor<'t9, 't10, ()>, (), &'t11 (), &'t12 (), &'t13 schema::Human, &'t14 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:38:1: 38:44 args:&juniper::types::base::Arguments<'_>, executor:&juniper::executor::Executor<'_, '_, schema::Context> 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, 't23, 't24, 't25, 't26, 't27, 't28> {[static generator@juniper/src/schema.rs:38:1: 38:44 args:&'r juniper::types::base::Arguments<'s> for<'t29, 't30, 't31, 't32, 't33, 't34, 't35, 't36> {std::string::String, awc::Client, &'t29 awc::Client, awc::Client, &'t30 str, awc::request::ClientRequest, awc::sender::SendClientRequest, awc::sender::SendClientRequest, (), awc::response::ClientResponse> + 't31)>>>>>, &'t32 mut awc::response::ClientResponse> + 't33)>>>>>, awc::response::ClientResponse> + 't34)>>>>>, awc::response::MessageBody> + 't35)>>>>>, awc::response::MessageBody> + 't36)>>>>>, ()}], 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, ()>, &'t8 juniper::executor::Executor<'t9, 't10, ()>, (), &'t11 (), &'t12 (), &'t13 schema::Human, &'t14 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:38:1: 38:44 args:&juniper::types::base::Arguments<'_>, executor:&juniper::executor::Executor<'_, '_, schema::Context> 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, 't23, 't24, 't25, 't26, 't27, 't28> {[static generator@juniper/src/schema.rs:38:1: 38:44 args:&'r juniper::types::base::Arguments<'s> for<'t29, 't30, 't31, 't32, 't33, 't34, 't35, 't36> {std::string::String, awc::Client, &'t29 awc::Client, awc::Client, &'t30 str, awc::request::ClientRequest, awc::sender::SendClientRequest, awc::sender::SendClientRequest, (), awc::response::ClientResponse> + 't31)>>>>>, &'t32 mut awc::response::ClientResponse> + 't33)>>>>>, awc::response::ClientResponse> + 't34)>>>>>, awc::response::MessageBody> + 't35)>>>>>, awc::response::MessageBody> + 't36)>>>>>, ()}], 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, ()>, &'t8 juniper::executor::Executor<'t9, 't10, ()>, (), &'t11 (), &'t12 (), &'t13 schema::Human, &'t14 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:38:1 | 38 | #[juniper::graphql_object(Context=Context)] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `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:38:1: 38:44 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, 't23, 't24, 't25, 't26, 't27, 't28> {[static generator@juniper/src/schema.rs:38:1: 38:44 args:&'r juniper::types::base::Arguments<'s> for<'t29, 't30, 't31, 't32, 't33, 't34, 't35, 't36> {std::string::String, awc::Client, &'t29 awc::Client, awc::Client, &'t30 str, awc::request::ClientRequest, awc::sender::SendClientRequest, awc::sender::SendClientRequest, (), awc::response::ClientResponse> + 't31)>>>>>, &'t32 mut awc::response::ClientResponse> + 't33)>>>>>, awc::response::ClientResponse> + 't34)>>>>>, awc::response::MessageBody> + 't35)>>>>>, awc::response::MessageBody> + 't36)>>>>>, ()}], 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, ()>, &'t8 juniper::executor::Executor<'t9, 't10, ()>, (), &'t11 (), &'t12 (), &'t13 schema::Human, &'t14 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:38:1: 38:44 args:&juniper::types::base::Arguments<'_>, executor:&juniper::executor::Executor<'_, '_, schema::Context> 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, 't23, 't24, 't25, 't26, 't27, 't28> {[static generator@juniper/src/schema.rs:38:1: 38:44 args:&'r juniper::types::base::Arguments<'s> for<'t29, 't30, 't31, 't32, 't33, 't34, 't35, 't36> {std::string::String, awc::Client, &'t29 awc::Client, awc::Client, &'t30 str, awc::request::ClientRequest, awc::sender::SendClientRequest, awc::sender::SendClientRequest, (), awc::response::ClientResponse> + 't31)>>>>>, &'t32 mut awc::response::ClientResponse> + 't33)>>>>>, awc::response::ClientResponse> + 't34)>>>>>, awc::response::MessageBody> + 't35)>>>>>, awc::response::MessageBody> + 't36)>>>>>, ()}], 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, ()>, &'t8 juniper::executor::Executor<'t9, 't10, ()>, (), &'t11 (), &'t12 (), &'t13 schema::Human, &'t14 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:38:1: 38:44 args:&juniper::types::base::Arguments<'_>, executor:&juniper::executor::Executor<'_, '_, schema::Context> 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, 't23, 't24, 't25, 't26, 't27, 't28> {[static generator@juniper/src/schema.rs:38:1: 38:44 args:&'r juniper::types::base::Arguments<'s> for<'t29, 't30, 't31, 't32, 't33, 't34, 't35, 't36> {std::string::String, awc::Client, &'t29 awc::Client, awc::Client, &'t30 str, awc::request::ClientRequest, awc::sender::SendClientRequest, awc::sender::SendClientRequest, (), awc::response::ClientResponse> + 't31)>>>>>, &'t32 mut awc::response::ClientResponse> + 't33)>>>>>, awc::response::ClientResponse> + 't34)>>>>>, awc::response::MessageBody> + 't35)>>>>>, awc::response::MessageBody> + 't36)>>>>>, ()}], 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, ()>, &'t8 juniper::executor::Executor<'t9, 't10, ()>, (), &'t11 (), &'t12 (), &'t13 schema::Human, &'t14 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> + 'static)` cannot be sent between threads safely --> juniper/src/schema.rs:38:1 | 38 | #[juniper::graphql_object(Context=Context)] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `(dyn core::future::future::Future> + 'static)` cannot be sent between threads safely | = help: the trait `std::marker::Send` is not implemented for `(dyn core::future::future::Future> + 'static)` = note: required because of the requirements on the impl of `std::marker::Send` for `std::ptr::Unique<(dyn core::future::future::Future> + 'static)>` = note: required because it appears within the type `std::boxed::Box<(dyn core::future::future::Future> + 'static)>` = note: required because it appears within the type `std::pin::Pin> + 'static)>>` = note: required because it appears within the type `awc::sender::SendClientRequest` = 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:38:1: 38:44 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, 't23, 't24, 't25, 't26, 't27, 't28> {[static generator@juniper/src/schema.rs:38:1: 38:44 args:&'r juniper::types::base::Arguments<'s> for<'t29, 't30, 't31, 't32, 't33, 't34, 't35, 't36> {std::string::String, awc::Client, &'t29 awc::Client, awc::Client, &'t30 str, awc::request::ClientRequest, awc::sender::SendClientRequest, awc::sender::SendClientRequest, (), awc::response::ClientResponse> + 't31)>>>>>, &'t32 mut awc::response::ClientResponse> + 't33)>>>>>, awc::response::ClientResponse> + 't34)>>>>>, awc::response::MessageBody> + 't35)>>>>>, awc::response::MessageBody> + 't36)>>>>>, ()}], 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, ()>, &'t8 juniper::executor::Executor<'t9, 't10, ()>, (), &'t11 (), &'t12 (), &'t13 schema::Human, &'t14 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:38:1: 38:44 args:&juniper::types::base::Arguments<'_>, executor:&juniper::executor::Executor<'_, '_, schema::Context> 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, 't23, 't24, 't25, 't26, 't27, 't28> {[static generator@juniper/src/schema.rs:38:1: 38:44 args:&'r juniper::types::base::Arguments<'s> for<'t29, 't30, 't31, 't32, 't33, 't34, 't35, 't36> {std::string::String, awc::Client, &'t29 awc::Client, awc::Client, &'t30 str, awc::request::ClientRequest, awc::sender::SendClientRequest, awc::sender::SendClientRequest, (), awc::response::ClientResponse> + 't31)>>>>>, &'t32 mut awc::response::ClientResponse> + 't33)>>>>>, awc::response::ClientResponse> + 't34)>>>>>, awc::response::MessageBody> + 't35)>>>>>, awc::response::MessageBody> + 't36)>>>>>, ()}], 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, ()>, &'t8 juniper::executor::Executor<'t9, 't10, ()>, (), &'t11 (), &'t12 (), &'t13 schema::Human, &'t14 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:38:1: 38:44 args:&juniper::types::base::Arguments<'_>, executor:&juniper::executor::Executor<'_, '_, schema::Context> 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, 't23, 't24, 't25, 't26, 't27, 't28> {[static generator@juniper/src/schema.rs:38:1: 38:44 args:&'r juniper::types::base::Arguments<'s> for<'t29, 't30, 't31, 't32, 't33, 't34, 't35, 't36> {std::string::String, awc::Client, &'t29 awc::Client, awc::Client, &'t30 str, awc::request::ClientRequest, awc::sender::SendClientRequest, awc::sender::SendClientRequest, (), awc::response::ClientResponse> + 't31)>>>>>, &'t32 mut awc::response::ClientResponse> + 't33)>>>>>, awc::response::ClientResponse> + 't34)>>>>>, awc::response::MessageBody> + 't35)>>>>>, awc::response::MessageBody> + 't36)>>>>>, ()}], 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, ()>, &'t8 juniper::executor::Executor<'t9, 't10, ()>, (), &'t11 (), &'t12 (), &'t13 schema::Human, &'t14 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 actix_http::error::ResponseError + 'static)` cannot be sent between threads safely --> juniper/src/schema.rs:38:1 | 38 | #[juniper::graphql_object(Context=Context)] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `(dyn actix_http::error::ResponseError + 'static)` cannot be sent between threads safely | = help: the trait `std::marker::Send` is not implemented for `(dyn actix_http::error::ResponseError + 'static)` = note: required because of the requirements on the impl of `std::marker::Send` for `std::ptr::Unique<(dyn actix_http::error::ResponseError + 'static)>` = note: required because it appears within the type `std::boxed::Box<(dyn actix_http::error::ResponseError + 'static)>` = note: required because it appears within the type `actix_http::error::Error` = note: required because it appears within the type `actix_http::client::error::SendRequestError` = note: required because it appears within the type `std::option::Option` = note: required because it appears within the type `awc::sender::SendClientRequest` = 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:38:1: 38:44 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, 't23, 't24, 't25, 't26, 't27, 't28> {[static generator@juniper/src/schema.rs:38:1: 38:44 args:&'r juniper::types::base::Arguments<'s> for<'t29, 't30, 't31, 't32, 't33, 't34, 't35, 't36> {std::string::String, awc::Client, &'t29 awc::Client, awc::Client, &'t30 str, awc::request::ClientRequest, awc::sender::SendClientRequest, awc::sender::SendClientRequest, (), awc::response::ClientResponse> + 't31)>>>>>, &'t32 mut awc::response::ClientResponse> + 't33)>>>>>, awc::response::ClientResponse> + 't34)>>>>>, awc::response::MessageBody> + 't35)>>>>>, awc::response::MessageBody> + 't36)>>>>>, ()}], 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, ()>, &'t8 juniper::executor::Executor<'t9, 't10, ()>, (), &'t11 (), &'t12 (), &'t13 schema::Human, &'t14 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:38:1: 38:44 args:&juniper::types::base::Arguments<'_>, executor:&juniper::executor::Executor<'_, '_, schema::Context> 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, 't23, 't24, 't25, 't26, 't27, 't28> {[static generator@juniper/src/schema.rs:38:1: 38:44 args:&'r juniper::types::base::Arguments<'s> for<'t29, 't30, 't31, 't32, 't33, 't34, 't35, 't36> {std::string::String, awc::Client, &'t29 awc::Client, awc::Client, &'t30 str, awc::request::ClientRequest, awc::sender::SendClientRequest, awc::sender::SendClientRequest, (), awc::response::ClientResponse> + 't31)>>>>>, &'t32 mut awc::response::ClientResponse> + 't33)>>>>>, awc::response::ClientResponse> + 't34)>>>>>, awc::response::MessageBody> + 't35)>>>>>, awc::response::MessageBody> + 't36)>>>>>, ()}], 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, ()>, &'t8 juniper::executor::Executor<'t9, 't10, ()>, (), &'t11 (), &'t12 (), &'t13 schema::Human, &'t14 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:38:1: 38:44 args:&juniper::types::base::Arguments<'_>, executor:&juniper::executor::Executor<'_, '_, schema::Context> 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, 't23, 't24, 't25, 't26, 't27, 't28> {[static generator@juniper/src/schema.rs:38:1: 38:44 args:&'r juniper::types::base::Arguments<'s> for<'t29, 't30, 't31, 't32, 't33, 't34, 't35, 't36> {std::string::String, awc::Client, &'t29 awc::Client, awc::Client, &'t30 str, awc::request::ClientRequest, awc::sender::SendClientRequest, awc::sender::SendClientRequest, (), awc::response::ClientResponse> + 't31)>>>>>, &'t32 mut awc::response::ClientResponse> + 't33)>>>>>, awc::response::ClientResponse> + 't34)>>>>>, awc::response::MessageBody> + 't35)>>>>>, awc::response::MessageBody> + 't36)>>>>>, ()}], 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, ()>, &'t8 juniper::executor::Executor<'t9, 't10, ()>, (), &'t11 (), &'t12 (), &'t13 schema::Human, &'t14 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 futures_core::stream::Stream>` cannot be sent between threads safely --> juniper/src/schema.rs:38:1 | 38 | #[juniper::graphql_object(Context=Context)] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `dyn futures_core::stream::Stream>` cannot be sent between threads safely | = help: the trait `std::marker::Send` is not implemented for `dyn futures_core::stream::Stream>` = note: required because of the requirements on the impl of `std::marker::Send` for `std::ptr::Unique>>` = note: required because it appears within the type `std::boxed::Box>>` = note: required because it appears within the type `std::pin::Pin>>>` = note: required because it appears within the type `actix_http::payload::Payload>>>>` = note: required because it appears within the type `actix_http::encoding::decoder::Decoder>>>>>` = 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:38:1: 38:44 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, 't23, 't24, 't25, 't26, 't27, 't28> {[static generator@juniper/src/schema.rs:38:1: 38:44 args:&'r juniper::types::base::Arguments<'s> for<'t29, 't30, 't31, 't32, 't33, 't34, 't35, 't36> {std::string::String, awc::Client, &'t29 awc::Client, awc::Client, &'t30 str, awc::request::ClientRequest, awc::sender::SendClientRequest, awc::sender::SendClientRequest, (), awc::response::ClientResponse> + 't31)>>>>>, &'t32 mut awc::response::ClientResponse> + 't33)>>>>>, awc::response::ClientResponse> + 't34)>>>>>, awc::response::MessageBody> + 't35)>>>>>, awc::response::MessageBody> + 't36)>>>>>, ()}], 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, ()>, &'t8 juniper::executor::Executor<'t9, 't10, ()>, (), &'t11 (), &'t12 (), &'t13 schema::Human, &'t14 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:38:1: 38:44 args:&juniper::types::base::Arguments<'_>, executor:&juniper::executor::Executor<'_, '_, schema::Context> 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, 't23, 't24, 't25, 't26, 't27, 't28> {[static generator@juniper/src/schema.rs:38:1: 38:44 args:&'r juniper::types::base::Arguments<'s> for<'t29, 't30, 't31, 't32, 't33, 't34, 't35, 't36> {std::string::String, awc::Client, &'t29 awc::Client, awc::Client, &'t30 str, awc::request::ClientRequest, awc::sender::SendClientRequest, awc::sender::SendClientRequest, (), awc::response::ClientResponse> + 't31)>>>>>, &'t32 mut awc::response::ClientResponse> + 't33)>>>>>, awc::response::ClientResponse> + 't34)>>>>>, awc::response::MessageBody> + 't35)>>>>>, awc::response::MessageBody> + 't36)>>>>>, ()}], 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, ()>, &'t8 juniper::executor::Executor<'t9, 't10, ()>, (), &'t11 (), &'t12 (), &'t13 schema::Human, &'t14 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:38:1: 38:44 args:&juniper::types::base::Arguments<'_>, executor:&juniper::executor::Executor<'_, '_, schema::Context> 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, 't23, 't24, 't25, 't26, 't27, 't28> {[static generator@juniper/src/schema.rs:38:1: 38:44 args:&'r juniper::types::base::Arguments<'s> for<'t29, 't30, 't31, 't32, 't33, 't34, 't35, 't36> {std::string::String, awc::Client, &'t29 awc::Client, awc::Client, &'t30 str, awc::request::ClientRequest, awc::sender::SendClientRequest, awc::sender::SendClientRequest, (), awc::response::ClientResponse> + 't31)>>>>>, &'t32 mut awc::response::ClientResponse> + 't33)>>>>>, awc::response::ClientResponse> + 't34)>>>>>, awc::response::MessageBody> + 't35)>>>>>, awc::response::MessageBody> + 't36)>>>>>, ()}], 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, ()>, &'t8 juniper::executor::Executor<'t9, 't10, ()>, (), &'t11 (), &'t12 (), &'t13 schema::Human, &'t14 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 std::any::Any + 'static)` cannot be sent between threads safely --> juniper/src/schema.rs:38:1 | 38 | #[juniper::graphql_object(Context=Context)] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `(dyn std::any::Any + 'static)` cannot be sent between threads safely | = help: the trait `std::marker::Send` is not implemented for `(dyn std::any::Any + 'static)` = note: required because of the requirements on the impl of `std::marker::Send` for `std::ptr::Unique<(dyn std::any::Any + 'static)>` = note: required because it appears within the type `std::boxed::Box<(dyn std::any::Any + 'static)>` = note: required because it appears within the type `(std::any::TypeId, std::boxed::Box<(dyn std::any::Any + 'static)>)` = note: required because of the requirements on the impl of `std::marker::Send` for `hashbrown::raw::RawTable<(std::any::TypeId, std::boxed::Box<(dyn std::any::Any + 'static)>)>` = note: required because it appears within the type `hashbrown::map::HashMap, std::hash::BuildHasherDefault>` = note: required because it appears within the type `std::collections::HashMap, std::hash::BuildHasherDefault>` = note: required because it appears within the type `actix_http::extensions::Extensions` = note: required because of the requirements on the impl of `std::marker::Send` for `std::cell::RefCell` = note: required because it appears within the type `actix_http::message::RequestHead` = note: required because it appears within the type `awc::request::ClientRequest` = 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:38:1: 38:44 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, 't23, 't24, 't25, 't26, 't27, 't28> {[static generator@juniper/src/schema.rs:38:1: 38:44 args:&'r juniper::types::base::Arguments<'s> for<'t29, 't30, 't31, 't32, 't33, 't34, 't35, 't36> {std::string::String, awc::Client, &'t29 awc::Client, awc::Client, &'t30 str, awc::request::ClientRequest, awc::sender::SendClientRequest, awc::sender::SendClientRequest, (), awc::response::ClientResponse> + 't31)>>>>>, &'t32 mut awc::response::ClientResponse> + 't33)>>>>>, awc::response::ClientResponse> + 't34)>>>>>, awc::response::MessageBody> + 't35)>>>>>, awc::response::MessageBody> + 't36)>>>>>, ()}], 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, ()>, &'t8 juniper::executor::Executor<'t9, 't10, ()>, (), &'t11 (), &'t12 (), &'t13 schema::Human, &'t14 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:38:1: 38:44 args:&juniper::types::base::Arguments<'_>, executor:&juniper::executor::Executor<'_, '_, schema::Context> 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, 't23, 't24, 't25, 't26, 't27, 't28> {[static generator@juniper/src/schema.rs:38:1: 38:44 args:&'r juniper::types::base::Arguments<'s> for<'t29, 't30, 't31, 't32, 't33, 't34, 't35, 't36> {std::string::String, awc::Client, &'t29 awc::Client, awc::Client, &'t30 str, awc::request::ClientRequest, awc::sender::SendClientRequest, awc::sender::SendClientRequest, (), awc::response::ClientResponse> + 't31)>>>>>, &'t32 mut awc::response::ClientResponse> + 't33)>>>>>, awc::response::ClientResponse> + 't34)>>>>>, awc::response::MessageBody> + 't35)>>>>>, awc::response::MessageBody> + 't36)>>>>>, ()}], 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, ()>, &'t8 juniper::executor::Executor<'t9, 't10, ()>, (), &'t11 (), &'t12 (), &'t13 schema::Human, &'t14 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:38:1: 38:44 args:&juniper::types::base::Arguments<'_>, executor:&juniper::executor::Executor<'_, '_, schema::Context> 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, 't23, 't24, 't25, 't26, 't27, 't28> {[static generator@juniper/src/schema.rs:38:1: 38:44 args:&'r juniper::types::base::Arguments<'s> for<'t29, 't30, 't31, 't32, 't33, 't34, 't35, 't36> {std::string::String, awc::Client, &'t29 awc::Client, awc::Client, &'t30 str, awc::request::ClientRequest, awc::sender::SendClientRequest, awc::sender::SendClientRequest, (), awc::response::ClientResponse> + 't31)>>>>>, &'t32 mut awc::response::ClientResponse> + 't33)>>>>>, awc::response::ClientResponse> + 't34)>>>>>, awc::response::MessageBody> + 't35)>>>>>, awc::response::MessageBody> + 't36)>>>>>, ()}], 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, ()>, &'t8 juniper::executor::Executor<'t9, 't10, ()>, (), &'t11 (), &'t12 (), &'t13 schema::Human, &'t14 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: aborting due to 7 previous errors For more information about this error, try `rustc --explain E0277`. error: could not compile `juniper-example`. To learn more, run the command again with --verbose. ```

GopherJ commented 4 years ago

@arlyon check this: https://github.com/actix/actix-web/blob/ce24630d31fc85e301bbb401111df56573964286/awc/src/request.rs#L60

Pzixel commented 4 years ago

So, any ideas on that? I could try to use archer simply change Rc to Arc if we're ok with that to make it work.

Considering HTTP overhead overall I think there is no much problem in atomic increment overhead. It won't be significant comparing to network issues.

Pzixel commented 3 years ago

As said above I really don't get it.

The first thing is why would you want an actix-web::client that is thread safe?

Because I'd like to register it as app_data and then call from different places.

TLDR: actix-web::client is !Send by design.

Why design is this? Could you show some benefits of doing it this way?

The current issue in a nutshell:

    let something_with_client = Something::new(&env_config.url);
    let server = HttpServer::new(move || {
        let something_with_client = something_with_client .clone();
...
...

error[E0277]: `Rc<awc::ClientConfig>` cannot be sent between threads safely
   --> src\server.rs:47:18
    |
47  |       let server = HttpServer::new(move || {
    |  __________________^^^^^^^^^^^^^^^_-
    | |                  |
    | |                  `Rc<awc::ClientConfig>` cannot be sent between threads safely
...   |
144 | |             ))
145 | |     })
    | |_____- within this `[closure@src\server.rs:47:34: 145:6]`
    |
    = help: within `[closure@src\server.rs:47:34: 145:6]`, the trait `std::marker::Send` is not implemented for `Rc<awc::ClientConfig>`
    = note: required because it appears within the type `actix_web::client::Client`
    = note: required because it appears within the type `AuthClient`
    = note: required because it appears within the type `[closure@src\server.rs:47:34: 145:6]`
    = note: required by `HttpServer::<F, I, S, B>::new`

I'm forced to move creating code somewhere else and create new client for each actor although one shared instance would be just fine.

bitmage commented 7 months ago

I think what @Pzixel was looking for is something like this:

https://github.com/actix/examples/blob/master/http-proxy/src/main.rs#L139-L144

Both reqwest and awc can be passed in through app_data() safely it would seem, and this would result in one client (or at least one reference to the client) being created for each actix thread.

Just leaving this note for anyone (like me) who arrives here searching for an answer to this.