Created
July 27, 2020 13:00
-
-
Save Geobert/ac445ed7d2363ec2dcda86f3b2d96bdc to your computer and use it in GitHub Desktop.
Async error
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
error[E0277]: `dyn oxide_auth_async::code_grant::authorization::Endpoint + std::marker::Send` cannot be shared between threads safely | |
--> src\server.rs:115:68 | |
| | |
115 | let get_authorize = warp::path("authorize").and(warp::query()).and_then( | |
| ^^^^^^^^ `dyn oxide_auth_async::code_grant::authorization::Endpoint + std::marker::Send` cannot be shared between threads safely | |
| | |
= help: the trait `std::marker::Sync` is not implemented for `dyn oxide_auth_async::code_grant::authorization::Endpoint + std::marker::Send` | |
= note: required because of the requirements on the impl of `std::marker::Send` for `&dyn oxide_auth_async::code_grant::authorization::Endpoint + std::marker::Send` | |
= 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> {std::future::ResumeTy, &'r mut (dyn oxide_auth_async::code_grant::authorization::Endpoint + std::marker::Send + 's), &'t0 (dyn oxide_auth::code_grant::authorization::Request + std::marker::Sync + 't1), oxide_auth::code_grant::authorization::Authorization, oxide_auth_async::code_grant::authorization::authorization_code::{{closure}}#0::Requested, std::option::Option<url::Url>, std::string::String, oxide_auth::primitives::registrar::ClientUrl<'t2>, &'t3 (dyn oxide_auth_async::code_grant::authorization::Endpoint + std::marker::Send | |
+ 't4), &'t5 (dyn oxide_auth_async::primitives::Registrar + 't6), std::pin::Pin<std::boxed::Box<(dyn core::future::future::Future<Output = std::result::Result<oxide_auth::primitives::registrar::BoundClient<'t7>, oxide_auth::primitives::registrar::RegistrarError>> + std::marker::Send + 't8)>>, (), &'t9 mut (dyn oxide_auth_async::code_grant::authorization::Extension + 't10), std::pin::Pin<std::boxed::Box<(dyn core::future::future::Future<Output = std::result::Result<oxide_auth::primitives::grant::Extensions, ()>> + std::marker::Send + 't11)>>, url::Url, std::option::Option<oxide_auth::primitives::scope::Scope>, oxide_auth::primitives::registrar::BoundClient<'t12>, std::pin::Pin<std::boxed::Box<(dyn core::future::future::Future<Output = std::result::Result<oxide_auth::primitives::registrar::PreGrant, oxide_auth::primitives::registrar::RegistrarError>> + std::marker::Send + 't13)>>}` | |
= note: required because it appears within the type `[static generator@oxide_auth_async::code_grant::authorization::authorization_code::{{closure}}#0 0:&mut dyn oxide_auth_async::code_grant::authorization::Endpoint + std::marker::Send, 1:&dyn oxide_auth::code_grant::authorization::Request + std::marker::Sync for<'r, 's, 't0, 't1, 't2, 't3, 't4, 't5, 't6, 't7, 't8, 't9, 't10, 't11, 't12, 't13> {std::future::ResumeTy, &'r mut (dyn oxide_auth_async::code_grant::authorization::Endpoint + std::marker::Send + 's), &'t0 (dyn oxide_auth::code_grant::authorization::Request + std::marker::Sync + 't1), oxide_auth::code_grant::authorization::Authorization, oxide_auth_async::code_grant::authorization::authorization_code::{{closure}}#0::Requested, std::option::Option<url::Url>, std::string::String, oxide_auth::primitives::registrar::ClientUrl<'t2>, &'t3 (dyn oxide_auth_async::code_grant::authorization::Endpoint + std::marker::Send + 't4), &'t5 (dyn oxide_auth_async::primitives::Registrar + 't6), std::pin::Pin<std::boxed::Box<(dyn core::future::future::Future<Output = std::result::Result<oxide_auth::primitives::registrar::BoundClient<'t7>, oxide_auth::primitives::registrar::RegistrarError>> + std::marker::Send + 't8)>>, (), &'t9 mut (dyn oxide_auth_async::code_grant::authorization::Extension + 't10), std::pin::Pin<std::boxed::Box<(dyn core::future::future::Future<Output = std::result::Result<oxide_auth::primitives::grant::Extensions, ()>> + std::marker::Send + 't11)>>, url::Url, std::option::Option<oxide_auth::primitives::scope::Scope>, oxide_auth::primitives::registrar::BoundClient<'t12>, std::pin::Pin<std::boxed::Box<(dyn core::future::future::Future<Output = std::result::Result<oxide_auth::primitives::registrar::PreGrant, oxide_auth::primitives::registrar::RegistrarError>> + std::marker::Send + 't13)>>}]` | |
= note: required because it appears within the type `std::future::from_generator::GenFuture<[static generator@oxide_auth_async::code_grant::authorization::authorization_code::{{closure}}#0 0:&mut dyn oxide_auth_async::code_grant::authorization::Endpoint + std::marker::Send, 1:&dyn oxide_auth::code_grant::authorization::Request + std::marker::Sync for<'r, 's, 't0, 't1, 't2, 't3, 't4, 't5, 't6, 't7, 't8, 't9, 't10, 't11, 't12, 't13> {std::future::ResumeTy, &'r mut (dyn oxide_auth_async::code_grant::authorization::Endpoint + std::marker::Send + 's), &'t0 (dyn oxide_auth::code_grant::authorization::Request + std::marker::Sync + 't1), oxide_auth::code_grant::authorization::Authorization, oxide_auth_async::code_grant::authorization::authorization_code::{{closure}}#0::Requested, std::option::Option<url::Url>, std::string::String, oxide_auth::primitives::registrar::ClientUrl<'t2>, &'t3 (dyn oxide_auth_async::code_grant::authorization::Endpoint + std::marker::Send + 't4), &'t5 (dyn oxide_auth_async::primitives::Registrar + 't6), std::pin::Pin<std::boxed::Box<(dyn core::future::future::Future<Output = std::result::Result<oxide_auth::primitives::registrar::BoundClient<'t7>, oxide_auth::primitives::registrar::RegistrarError>> + std::marker::Send + 't8)>>, (), &'t9 mut (dyn oxide_auth_async::code_grant::authorization::Extension + 't10), std::pin::Pin<std::boxed::Box<(dyn core::future::future::Future<Output = std::result::Result<oxide_auth::primitives::grant::Extensions, ()>> + std::marker::Send + 't11)>>, url::Url, std::option::Option<oxide_auth::primitives::scope::Scope>, oxide_auth::primitives::registrar::BoundClient<'t12>, std::pin::Pin<std::boxed::Box<(dyn core::future::future::Future<Output = std::result::Result<oxide_auth::primitives::registrar::PreGrant, oxide_auth::primitives::registrar::RegistrarError>> + std::marker::Send + 't13)>>}]>` | |
= note: required because it appears within the type `impl core::future::future::Future` | |
= note: required because it appears within the type `impl core::future::future::Future` | |
= note: required because it appears within the type `for<'r, 's, 't0, 't1, 't2, 't3, 't4, 't5, 't6, 't7, 't8, 't9, 't10, 't11> {std::future::ResumeTy, &'r mut oxide_auth_async::endpoint::authorization::AuthorizationFlow<oauth::endpoint::EndpointImpl<'_>, oxide_auth::frontends::simple::request::Request>, oxide_auth::frontends::simple::request::Request, oxide_auth_async::endpoint::authorization::AuthorizationFlow<oauth::endpoint::EndpointImpl<'_>, oxide_auth::frontends::simple::request::Request>, oxide_auth_async::endpoint::authorization::WrappedAuthorization<oauth::endpoint::EndpointImpl<'_>, oxide_auth::frontends::simple::request::Request>, &'s mut (dyn oxide_auth_async::code_grant::authorization::Endpoint + std::marker::Send + 't0), &'t1 mut oxide_auth_async::endpoint::authorization::WrappedAuthorization<oauth::endpoint::EndpointImpl<'_>, oxide_auth::frontends::simple::request::Request>, &'t2 mut oxide_auth::frontends::simple::request::Request, oxide_auth_async::endpoint::authorization::WrappedRequest<oxide_auth::frontends::simple::request::Request>, &'t3 (dyn oxide_auth::code_grant::authorization::Request + std::marker::Sync + 't4), &'t5 oxide_auth_async::endpoint::authorization::WrappedRequest<oxide_auth::frontends::simple::request::Request>, impl core::future::future::Future, (), std::result::Result<oxide_auth_async::code_grant::authorization::Pending, oxide_auth::code_grant::authorization::Error>, oxide_auth_async::endpoint::authorization::AuthorizationPartialInner<'t8, oauth::endpoint::EndpointImpl<'_>, oxide_auth::frontends::simple::request::Request>, oxide_auth_async::endpoint::authorization::AuthorizationPartial<'t9, oauth::endpoint::EndpointImpl<'_>, oxide_auth::frontends::simple::request::Request>, impl core::future::future::Future}` | |
= note: required because it appears within the type `[static generator@oxide_auth_async::endpoint::authorization::AuthorizationFlow::<E, R>::execute::{{closure}}#0 0:&mut oxide_auth_async::endpoint::authorization::AuthorizationFlow<oauth::endpoint::EndpointImpl<'_>, oxide_auth::frontends::simple::request::Request>, 1:oxide_auth::frontends::simple::request::Request for<'r, 's, 't0, 't1, 't2, 't3, 't4, 't5, 't6, 't7, 't8, 't9, 't10, 't11> {std::future::ResumeTy, &'r mut oxide_auth_async::endpoint::authorization::AuthorizationFlow<oauth::endpoint::EndpointImpl<'_>, oxide_auth::frontends::simple::request::Request>, oxide_auth::frontends::simple::request::Request, oxide_auth_async::endpoint::authorization::AuthorizationFlow<oauth::endpoint::EndpointImpl<'_>, oxide_auth::frontends::simple::request::Request>, oxide_auth_async::endpoint::authorization::WrappedAuthorization<oauth::endpoint::EndpointImpl<'_>, oxide_auth::frontends::simple::request::Request>, &'s mut (dyn oxide_auth_async::code_grant::authorization::Endpoint + std::marker::Send + 't0), &'t1 mut oxide_auth_async::endpoint::authorization::WrappedAuthorization<oauth::endpoint::EndpointImpl<'_>, oxide_auth::frontends::simple::request::Request>, &'t2 mut oxide_auth::frontends::simple::request::Request, oxide_auth_async::endpoint::authorization::WrappedRequest<oxide_auth::frontends::simple::request::Request>, &'t3 (dyn oxide_auth::code_grant::authorization::Request + std::marker::Sync + 't4), &'t5 oxide_auth_async::endpoint::authorization::WrappedRequest<oxide_auth::frontends::simple::request::Request>, impl core::future::future::Future, (), std::result::Result<oxide_auth_async::code_grant::authorization::Pending, oxide_auth::code_grant::authorization::Error>, oxide_auth_async::endpoint::authorization::AuthorizationPartialInner<'t8, oauth::endpoint::EndpointImpl<'_>, oxide_auth::frontends::simple::request::Request>, oxide_auth_async::endpoint::authorization::AuthorizationPartial<'t9, oauth::endpoint::EndpointImpl<'_>, oxide_auth::frontends::simple::request::Request>, impl core::future::future::Future}]` | |
= note: required because it appears within the type `std::future::from_generator::GenFuture<[static generator@oxide_auth_async::endpoint::authorization::AuthorizationFlow::<E, R>::execute::{{closure}}#0 0:&mut oxide_auth_async::endpoint::authorization::AuthorizationFlow<oauth::endpoint::EndpointImpl<'_>, oxide_auth::frontends::simple::request::Request>, 1:oxide_auth::frontends::simple::request::Request for<'r, 's, 't0, 't1, 't2, 't3, 't4, 't5, | |
't6, 't7, 't8, 't9, 't10, 't11> {std::future::ResumeTy, &'r mut oxide_auth_async::endpoint::authorization::AuthorizationFlow<oauth::endpoint::EndpointImpl<'_>, oxide_auth::frontends::simple::request::Request>, oxide_auth::frontends::simple::request::Request, oxide_auth_async::endpoint::authorization::AuthorizationFlow<oauth::endpoint::EndpointImpl<'_>, oxide_auth::frontends::simple::request::Request>, oxide_auth_async::endpoint::authorization::WrappedAuthorization<oauth::endpoint::EndpointImpl<'_>, oxide_auth::frontends::simple::request::Request>, &'s mut (dyn oxide_auth_async::code_grant::authorization::Endpoint + std::marker::Send + 't0), &'t1 mut oxide_auth_async::endpoint::authorization::WrappedAuthorization<oauth::endpoint::EndpointImpl<'_>, oxide_auth::frontends::simple::request::Request>, &'t2 mut oxide_auth::frontends::simple::request::Request, oxide_auth_async::endpoint::authorization::WrappedRequest<oxide_auth::frontends::simple::request::Request>, &'t3 (dyn oxide_auth::code_grant::authorization::Request + std::marker::Sync + 't4), &'t5 oxide_auth_async::endpoint::authorization::WrappedRequest<oxide_auth::frontends::simple::request::Request>, impl core::future::future::Future, (), std::result::Result<oxide_auth_async::code_grant::authorization::Pending, oxide_auth::code_grant::authorization::Error>, oxide_auth_async::endpoint::authorization::AuthorizationPartialInner<'t8, oauth::endpoint::EndpointImpl<'_>, oxide_auth::frontends::simple::request::Request>, oxide_auth_async::endpoint::authorization::AuthorizationPartial<'t9, oauth::endpoint::EndpointImpl<'_>, oxide_auth::frontends::simple::request::Request>, impl core::future::future::Future}]>` | |
= note: required because it appears within the type `impl core::future::future::Future` | |
= note: required because it appears within the type `impl core::future::future::Future` | |
= 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> {std::future::ResumeTy, &'r config::Config, std::sync::Arc<oauth::endpoint::EndpointState>, std::collections::HashMap<std::string::String, std::string::String>, std::option::Option<std::string::String>, oxide_auth::frontends::simple::request::Request, &'s std::collections::HashMap<std::string::String, std::string::String>, &'t0 str, std::option::Option<&'t1 std::string::String>, &'t2 std::string::String, oauth::endpoint::EndpointState, &'t3 tokio::sync::mutex::Mutex<std::collections::HashMap<std::string::String, std::string::String>>, tokio::sync::mutex::Mutex<std::collections::HashMap<std::string::String, std::string::String>>, impl core::future::future::Future, (), &'t6 oauth::endpoint::EndpointState, impl core::future::future::Future, oauth::endpoint::EndpointImpl<'t11>, api::authorize::LoginPageSolicitor, std::boxed::Box<(dyn oxide_auth_async::endpoint::OwnerSolicitor<oxide_auth::frontends::simple::request::Request> + std::marker::Send + 't12)>, std::boxed::Box<api::authorize::LoginPageSolicitor>, &'t13 mut oxide_auth_async::endpoint::authorization::AuthorizationFlow<oauth::endpoint::EndpointImpl<'t14>, oxide_auth::frontends::simple::request::Request>, oxide_auth_async::endpoint::authorization::AuthorizationFlow<oauth::endpoint::EndpointImpl<'t15>, oxide_auth::frontends::simple::request::Request>, impl core::future::future::Future}` | |
= note: required because it appears within the type `[static generator@src\api\authorize.rs:24:25: 52:2 _cfg:&config::Config, state:std::sync::Arc<oauth::endpoint::EndpointState>, params:std::collections::HashMap<std::string::String, std::string::String>, _session_id:std::option::Option<std::string::String> for<'r, 's, 't0, 't1, 't2, 't3, 't4, 't5, 't6, 't7, 't8, 't9, 't10, 't11, 't12, 't13, 't14, 't15, 't16, 't17> {std::future::ResumeTy, &'r config::Config, std::sync::Arc<oauth::endpoint::EndpointState>, std::collections::HashMap<std::string::String, std::string::String>, std::option::Option<std::string::String>, oxide_auth::frontends::simple::request::Request, &'s std::collections::HashMap<std::string::String, std::string::String>, &'t0 str, std::option::Option<&'t1 std::string::String>, &'t2 std::string::String, oauth::endpoint::EndpointState, &'t3 tokio::sync::mutex::Mutex<std::collections::HashMap<std::string::String, std::string::String>>, tokio::sync::mutex::Mutex<std::collections::HashMap<std::string::String, std::string::String>>, impl core::future::future::Future, (), &'t6 oauth::endpoint::EndpointState, impl core::future::future::Future, oauth::endpoint::EndpointImpl<'t11>, api::authorize::LoginPageSolicitor, std::boxed::Box<(dyn oxide_auth_async::endpoint::OwnerSolicitor<oxide_auth::frontends::simple::request::Request> + std::marker::Send + 't12)>, std::boxed::Box<api::authorize::LoginPageSolicitor>, &'t13 mut oxide_auth_async::endpoint::authorization::AuthorizationFlow<oauth::endpoint::EndpointImpl<'t14>, oxide_auth::frontends::simple::request::Request>, oxide_auth_async::endpoint::authorization::AuthorizationFlow<oauth::endpoint::EndpointImpl<'t15>, oxide_auth::frontends::simple::request::Request>, impl core::future::future::Future}]` | |
= note: required because it appears within the type `std::future::from_generator::GenFuture<[static generator@src\api\authorize.rs:24:25: 52:2 _cfg:&config::Config, state:std::sync::Arc<oauth::endpoint::EndpointState>, params:std::collections::HashMap<std::string::String, std::string::String>, _session_id:std::option::Option<std::string::String> for<'r, 's, 't0, 't1, 't2, 't3, 't4, 't5, 't6, 't7, 't8, 't9, 't10, 't11, 't12, 't13, 't14, 't15, 't16, 't17> {std::future::ResumeTy, &'r config::Config, std::sync::Arc<oauth::endpoint::EndpointState>, std::collections::HashMap<std::string::String, std::string::String>, std::option::Option<std::string::String>, oxide_auth::frontends::simple::request::Request, &'s std::collections::HashMap<std::string::String, std::string::String>, &'t0 str, std::option::Option<&'t1 std::string::String>, &'t2 std::string::String, oauth::endpoint::EndpointState, &'t3 tokio::sync::mutex::Mutex<std::collections::HashMap<std::string::String, std::string::String>>, tokio::sync::mutex::Mutex<std::collections::HashMap<std::string::String, std::string::String>>, impl core::future::future::Future, (), &'t6 oauth::endpoint::EndpointState, impl core::future::future::Future, oauth::endpoint::EndpointImpl<'t11>, api::authorize::LoginPageSolicitor, std::boxed::Box<(dyn oxide_auth_async::endpoint::OwnerSolicitor<oxide_auth::frontends::simple::request::Request> + std::marker::Send + 't12)>, std::boxed::Box<api::authorize::LoginPageSolicitor>, &'t13 mut oxide_auth_async::endpoint::authorization::AuthorizationFlow<oauth::endpoint::EndpointImpl<'t14>, oxide_auth::frontends::simple::request::Request>, oxide_auth_async::endpoint::authorization::AuthorizationFlow<oauth::endpoint::EndpointImpl<'t15>, oxide_auth::frontends::simple::request::Request>, impl core::future::future::Future}]>` | |
= note: required because it appears within the type `impl core::future::future::Future` | |
= note: required because it appears within the type `impl core::future::future::Future` | |
= note: required because it appears within the type `for<'r, 's, 't0> {std::future::ResumeTy, std::sync::Arc<config::Config>, &'r config::Config, &'s std::sync::Arc<config::Config>, std::sync::Arc<oauth::endpoint::EndpointState>, std::collections::HashMap<std::string::String, std::string::String>, std::option::Option<std::string::String>, impl core::future::future::Future, ()}` | |
= note: required because it appears within the type `[static generator@src\server.rs:120:24: 125:14 cfg:std::sync::Arc<config::Config>, state:std::sync::Arc<oauth::endpoint::EndpointState>, params:std::collections::HashMap<std::string::String, std::string::String> for<'r, 's, 't0> {std::future::ResumeTy, std::sync::Arc<config::Config>, &'r config::Config, &'s std::sync::Arc<config::Config>, std::sync::Arc<oauth::endpoint::EndpointState>, std::collections::HashMap<std::string::String, std::string::String>, std::option::Option<std::string::String>, impl core::future::future::Future, ()}]` | |
= note: required because it appears within the type `std::future::from_generator::GenFuture<[static generator@src\server.rs:120:24: 125:14 cfg:std::sync::Arc<config::Config>, state:std::sync::Arc<oauth::endpoint::EndpointState>, params:std::collections::HashMap<std::string::String, std::string::String> for<'r, 's, 't0> {std::future::ResumeTy, std::sync::Arc<config::Config>, &'r config::Config, &'s std::sync::Arc<config::Config>, std::sync::Arc<oauth::endpoint::EndpointState>, std::collections::HashMap<std::string::String, std::string::String>, std::option::Option<std::string::String>, impl core::future::future::Future, ()}]>` | |
= note: required because it appears within the type `impl core::future::future::Future` |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment