Skip to content

Reduce type errors in async fns #67025

Closed
Closed
@birkenfeld

Description

@birkenfeld

I will admit that this specific async fn is a bit long, but I'd like the compiler to tell me in a different way. (Actual reason is addition of one line borrowing the wrong type across an .await boundary, of course)

Like this, we're coming out ahead of C++ 😄

    = help: the trait `std::marker::Sync` is not implemented for `dyn jobs::Job`
    = note: required because of the requirements on the impl of `std::marker::Send` for `&dyn jobs::Job`
    = 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, 't29, 't30, 't31, 't32, 't33, 't34, 
't35, 't36, 't37, 't38, 't39, 't40, 't41, 't42, 't43, 't44, 't45, 't46, 't47, 't48, 't49, 
't50, 't51, 't52, 't53, 't54, 't55, 't56, 't57, 't58, 't59, 't60, 't61, 't62, 't63, 
't64, 't65, 't66, 't67, 't68, 't69, 't70, 't71, 't72, 't73, 't74, 't75, 't76, 't77, 
't78, 't79, 't80, 't81, 't82, 't83, 't84, 't85, 't86, 't87, 't88, 't89, 't90, 't91, 
't92, 't93, 't94, 't95, 't96, 't97, 't98, 't99, 't100, 't101, 't102, 't103, 't104, 
't105, 't106, 't107, 't108, 't109, 't110, 't111, 't112, 't113, 't114, 't115, 't116, 
't117, 't118, 't119, 't120, 't121, 't122, 't123, 't124, 't125, 't126, 't127, 't128, 
't129, 't130, 't131, 't132, 't133, 't134, 't135, 't136, 't137, 't138, 't139, 't140, 
't141, 't142, 't143, 't144, 't145, 't146, 't147, 't148, 't149, 't150, 't151, 't152, 
't153, 't154, 't155, 't156, 't157, 't158, 't159, 't160, 't161, 't162, 't163, 't164, 
't165, 't166, 't167, 't168, 't169, 't170, 't171, 't172, 't173, 't174, 't175, 't176, 
't177, 't178, 't179, 't180, 't181, 't182, 't183, 't184, 't185, 't186, 't187, 't188, 
't189, 't190, 't191, 't192, 't193, 't194, 't195, 't196, 't197, 't198, 't199, 't200, 
't201, 't202, 't203, 't204, 't205, 't206, 't207, 't208, 't209, 't210, 't211, 't212, 
't213, 't214, 't215, 't216, 't217, 't218, 't219, 't220, 't221, 't222, 't223, 't224, 
't225, 't226, 't227, 't228, 't229, 't230, 't231, 't232, 't233, 't234, 't235, 't236, 
't237, 't238, 't239, 't240, 't241, 't242, 't243, 't244, 't245, 't246, 't247, 't248> 
{handler::Handler, handler::Handler, handler::Handler, &'r mut 
tokio_sync::mpsc::bounded::Receiver<handler::Action>, 
tokio_sync::mpsc::bounded::Receiver<handler::Action>, 
futures_util::stream::next::Next<'s, 
tokio_sync::mpsc::bounded::Receiver<handler::Action>>, 
futures_util::stream::next::Next<'t0, 
tokio_sync::mpsc::bounded::Receiver<handler::Action>>, (), 
std::option::Option<handler::Action>, handler::Action, handler::Action, 
handler::Request, auth::ClientInfo, tokio_sync::oneshot::Sender<handler::Response>, 
handler::Request, std::collections::HashMap<std::string::String, handler::ServiceInfo>, 
handler::Handler, &'t1 std::collections::HashMap<std::string::String, (jobs::Service, 
usize)>, std::collections::HashMap<std::string::String, (jobs::Service, usize)>, 
std::collections::hash_map::Values<'t2, std::string::String, (jobs::Service, usize)>, 
std::collections::hash_map::Values<'t3, std::string::String, (jobs::Service, usize)>, 
std::collections::hash_map::Values<'t4, std::string::String, (jobs::Service, usize)>, 
&'t5 (jobs::Service, usize), &'t6 jobs::Service, &'t7 usize, handler::Handler, &'t8 
std::vec::Vec<std::boxed::Box<(dyn jobs::Job + 't9)>>, 
std::vec::Vec<std::boxed::Box<(dyn jobs::Job + 't10)>>, std::boxed::Box<(dyn jobs::Job + 
't11)>, (dyn jobs::Job + 't12), &'t13 (dyn jobs::Job + 't14), bool, bool, &'t15 mut 
handler::ServiceInfo, &'t16 mut (dyn jobs::Job + 't17), &'t18 (dyn jobs::Job + 't19), 
&'t20 jobs::Service, &'t21 jobs::Service, std::pin::Pin<std::boxed::Box<(dyn 
core::future::future::Future<Output = jobs::ExtStatus> + std::marker::Send + 't22)>>, 
std::pin::Pin<std::boxed::Box<(dyn core::future::future::Future<Output = 
jobs::ExtStatus> + std::marker::Send + 't23)>>, (), std::string::String, 
handler::Handler, &'t24 std::collections::HashMap<std::string::String, (jobs::Service, 
usize)>, std::collections::HashMap<std::string::String, (jobs::Service, usize)>, 
std::string::String, &'t25 std::string::String, &'t26 std::string::String, 
std::option::Option<&'t27 (jobs::Service, usize)>, &'t28 jobs::Service, &'t29 usize, 
handler::Handler, &'t30 mut std::vec::Vec<std::boxed::Box<(dyn jobs::Job + 't31)>>, 
std::vec::Vec<std::boxed::Box<(dyn jobs::Job + 't32)>>, std::boxed::Box<(dyn jobs::Job + 
't33)>, (dyn jobs::Job + 't34), &'t35 mut (dyn jobs::Job + 't36), &'t37 mut (dyn 
jobs::Job + 't38), &'t39 mut (dyn jobs::Job + 't40), &'t41 jobs::Service, &'t42 
jobs::Service, auth::ClientInfo, impl core::future::future::Future, impl 
core::future::future::Future, impl core::future::future::Future, (), 
std::string::String, handler::Handler, &'t49 
std::collections::HashMap<std::string::String, (jobs::Service, usize)>, 
std::collections::HashMap<std::string::String, (jobs::Service, usize)>, 
std::string::String, &'t50 std::string::String, &'t51 std::string::String, 
std::option::Option<&'t52 (jobs::Service, usize)>, &'t53 jobs::Service, &'t54 usize, 
handler::Handler, &'t55 mut std::vec::Vec<std::boxed::Box<(dyn jobs::Job + 't56)>>, 
std::vec::Vec<std::boxed::Box<(dyn jobs::Job + 't57)>>, std::boxed::Box<(dyn jobs::Job + 
't58)>, (dyn jobs::Job + 't59), &'t60 mut (dyn jobs::Job + 't61), &'t62 mut (dyn 
jobs::Job + 't63), &'t64 mut (dyn jobs::Job + 't65), &'t66 jobs::Service, &'t67 
jobs::Service, auth::ClientInfo, impl core::future::future::Future, impl 
core::future::future::Future, impl core::future::future::Future, (), 
std::string::String, handler::Handler, &'t74 
std::collections::HashMap<std::string::String, (jobs::Service, usize)>, 
std::collections::HashMap<std::string::String, (jobs::Service, usize)>, 
std::string::String, &'t75 std::string::String, &'t76 std::string::String, 
std::option::Option<&'t77 (jobs::Service, usize)>, &'t78 jobs::Service, &'t79 usize, 
handler::Handler, &'t80 mut std::vec::Vec<std::boxed::Box<(dyn jobs::Job + 't81)>>, 
std::vec::Vec<std::boxed::Box<(dyn jobs::Job + 't82)>>, std::boxed::Box<(dyn jobs::Job + 
't83)>, (dyn jobs::Job + 't84), &'t85 mut (dyn jobs::Job + 't86), &'t87 mut (dyn 
jobs::Job + 't88), &'t89 mut (dyn jobs::Job + 't90), &'t91 jobs::Service, &'t92 
jobs::Service, auth::ClientInfo, impl core::future::future::Future, impl 
core::future::future::Future, impl core::future::future::Future, (), 
std::string::String, handler::Handler, &'t99 
std::collections::HashMap<std::string::String, (jobs::Service, usize)>, 
std::collections::HashMap<std::string::String, (jobs::Service, usize)>, 
std::string::String, &'t100 std::string::String, &'t101 std::string::String, 
std::option::Option<&'t102 (jobs::Service, usize)>, &'t103 jobs::Service, &'t104 usize, 
handler::Handler, &'t105 mut std::vec::Vec<std::boxed::Box<(dyn jobs::Job + 't106)>>, 
std::vec::Vec<std::boxed::Box<(dyn jobs::Job + 't107)>>, std::boxed::Box<(dyn jobs::Job 
+ 't108)>, (dyn jobs::Job + 't109), &'t110 mut (dyn jobs::Job + 't111), &'t112 mut (dyn 
jobs::Job + 't113), &'t114 mut (dyn jobs::Job + 't115), &'t116 jobs::Service, &'t117 
jobs::Service, auth::ClientInfo, impl core::future::future::Future, impl 
core::future::future::Future, impl core::future::future::Future, (), 
std::string::String, handler::Handler, &'t124 
std::collections::HashMap<std::string::String, (jobs::Service, usize)>, 
std::collections::HashMap<std::string::String, (jobs::Service, usize)>, 
std::string::String, &'t125 std::string::String, &'t126 std::string::String, 
std::option::Option<&'t127 (jobs::Service, usize)>, &'t128 jobs::Service, &'t129 usize, 
handler::Handler, &'t130 mut std::vec::Vec<std::boxed::Box<(dyn jobs::Job + 't131)>>, 
std::vec::Vec<std::boxed::Box<(dyn jobs::Job + 't132)>>, std::boxed::Box<(dyn jobs::Job 
+ 't133)>, (dyn jobs::Job + 't134), &'t135 mut (dyn jobs::Job + 't136), &'t137 mut (dyn 
jobs::Job + 't138), &'t139 mut (dyn jobs::Job + 't140), &'t141 jobs::Service, &'t142 
jobs::Service, auth::ClientInfo, impl core::future::future::Future, impl 
core::future::future::Future, impl core::future::future::Future, (), 
std::string::String, std::string::String, std::string::String, handler::Handler, &'t149 
std::collections::HashMap<std::string::String, (jobs::Service, usize)>, 
std::collections::HashMap<std::string::String, (jobs::Service, usize)>, 
std::string::String, &'t150 std::string::String, &'t151 std::string::String, 
std::option::Option<&'t152 (jobs::Service, usize)>, &'t153 jobs::Service, &'t154 usize, 
handler::Handler, &'t155 mut std::vec::Vec<std::boxed::Box<(dyn jobs::Job + 't156)>>, 
std::vec::Vec<std::boxed::Box<(dyn jobs::Job + 't157)>>, std::boxed::Box<(dyn jobs::Job 
+ 't158)>, (dyn jobs::Job + 't159), &'t160 mut (dyn jobs::Job + 't161), &'t162 mut (dyn 
jobs::Job + 't163), &'t164 mut (dyn jobs::Job + 't165), &'t166 jobs::Service, &'t167 
jobs::Service, auth::ClientInfo, std::string::String, std::string::String, impl 
core::future::future::Future, impl core::future::future::Future, impl 
core::future::future::Future, (), std::string::String, handler::Handler, &'t174 
std::collections::HashMap<std::string::String, (jobs::Service, usize)>, 
std::collections::HashMap<std::string::String, (jobs::Service, usize)>, 
std::string::String, &'t175 std::string::String, &'t176 std::string::String, 
std::option::Option<&'t177 (jobs::Service, usize)>, &'t178 jobs::Service, &'t179 usize, 
handler::Handler, &'t180 mut std::vec::Vec<std::boxed::Box<(dyn jobs::Job + 't181)>>, 
std::vec::Vec<std::boxed::Box<(dyn jobs::Job + 't182)>>, std::boxed::Box<(dyn jobs::Job 
+ 't183)>, (dyn jobs::Job + 't184), &'t185 mut (dyn jobs::Job + 't186), &'t187 mut (dyn 
jobs::Job + 't188), &'t189 mut (dyn jobs::Job + 't190), &'t191 jobs::Service, &'t192 
jobs::Service, auth::ClientInfo, impl core::future::future::Future, impl 
core::future::future::Future, impl core::future::future::Future, (), 
std::string::String, handler::Handler, &'t199 
std::collections::HashMap<std::string::String, (jobs::Service, usize)>, 
std::collections::HashMap<std::string::String, (jobs::Service, usize)>, 
std::string::String, &'t200 std::string::String, &'t201 std::string::String, 
std::option::Option<&'t202 (jobs::Service, usize)>, &'t203 jobs::Service, &'t204 usize, 
handler::Handler, &'t205 mut std::vec::Vec<std::boxed::Box<(dyn jobs::Job + 't206)>>, 
std::vec::Vec<std::boxed::Box<(dyn jobs::Job + 't207)>>, std::boxed::Box<(dyn jobs::Job 
+ 't208)>, (dyn jobs::Job + 't209), &'t210 mut (dyn jobs::Job + 't211), &'t212 mut (dyn 
jobs::Job + 't213), &'t214 mut (dyn jobs::Job + 't215), &'t216 jobs::Service, &'t217 
jobs::Service, auth::ClientInfo, impl core::future::future::Future, impl 
core::future::future::Future, impl core::future::future::Future, (), 
std::string::String, handler::Handler, &'t224 
std::collections::HashMap<std::string::String, (jobs::Service, usize)>, 
std::collections::HashMap<std::string::String, (jobs::Service, usize)>, 
std::string::String, &'t225 std::string::String, &'t226 std::string::String, 
std::option::Option<&'t227 (jobs::Service, usize)>, &'t228 jobs::Service, &'t229 usize, 
handler::Handler, &'t230 mut std::vec::Vec<std::boxed::Box<(dyn jobs::Job + 't231)>>, 
std::vec::Vec<std::boxed::Box<(dyn jobs::Job + 't232)>>, std::boxed::Box<(dyn jobs::Job 
+ 't233)>, (dyn jobs::Job + 't234), &'t235 mut (dyn jobs::Job + 't236), &'t237 mut (dyn 
jobs::Job + 't238), &'t239 mut (dyn jobs::Job + 't240), &'t241 jobs::Service, &'t242 
jobs::Service, auth::ClientInfo, impl core::future::future::Future, impl 
core::future::future::Future, impl core::future::future::Future, ()}`
    = note: required because it appears within the type `[static 
generator@src/handler.rs:137:32: 198:6 __arg0:handler::Handler 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, 't29, 't30, 't31, 
't32, 't33, 't34, 't35, 't36, 't37, 't38, 't39, 't40, 't41, 't42, 't43, 't44, 't45, 
't46, 't47, 't48, 't49, 't50, 't51, 't52, 't53, 't54, 't55, 't56, 't57, 't58, 't59, 
't60, 't61, 't62, 't63, 't64, 't65, 't66, 't67, 't68, 't69, 't70, 't71, 't72, 't73, 
't74, 't75, 't76, 't77, 't78, 't79, 't80, 't81, 't82, 't83, 't84, 't85, 't86, 't87, 
't88, 't89, 't90, 't91, 't92, 't93, 't94, 't95, 't96, 't97, 't98, 't99, 't100, 't101, 
't102, 't103, 't104, 't105, 't106, 't107, 't108, 't109, 't110, 't111, 't112, 't113, 
't114, 't115, 't116, 't117, 't118, 't119, 't120, 't121, 't122, 't123, 't124, 't125, 
't126, 't127, 't128, 't129, 't130, 't131, 't132, 't133, 't134, 't135, 't136, 't137, 
't138, 't139, 't140, 't141, 't142, 't143, 't144, 't145, 't146, 't147, 't148, 't149, 
't150, 't151, 't152, 't153, 't154, 't155, 't156, 't157, 't158, 't159, 't160, 't161, 
't162, 't163, 't164, 't165, 't166, 't167, 't168, 't169, 't170, 't171, 't172, 't173, 
't174, 't175, 't176, 't177, 't178, 't179, 't180, 't181, 't182, 't183, 't184, 't185, 
't186, 't187, 't188, 't189, 't190, 't191, 't192, 't193, 't194, 't195, 't196, 't197, 
't198, 't199, 't200, 't201, 't202, 't203, 't204, 't205, 't206, 't207, 't208, 't209, 
't210, 't211, 't212, 't213, 't214, 't215, 't216, 't217, 't218, 't219, 't220, 't221, 
't222, 't223, 't224, 't225, 't226, 't227, 't228, 't229, 't230, 't231, 't232, 't233, 
't234, 't235, 't236, 't237, 't238, 't239, 't240, 't241, 't242, 't243, 't244, 't245, 
't246, 't247, 't248> {handler::Handler, handler::Handler, handler::Handler, &'r mut 
tokio_sync::mpsc::bounded::Receiver<handler::Action>, 
tokio_sync::mpsc::bounded::Receiver<handler::Action>, 
futures_util::stream::next::Next<'s, 
tokio_sync::mpsc::bounded::Receiver<handler::Action>>, 
futures_util::stream::next::Next<'t0, 
tokio_sync::mpsc::bounded::Receiver<handler::Action>>, (), 
std::option::Option<handler::Action>, handler::Action, handler::Action, 
handler::Request, auth::ClientInfo, tokio_sync::oneshot::Sender<handler::Response>, 
handler::Request, std::collections::HashMap<std::string::String, handler::ServiceInfo>, 
handler::Handler, &'t1 std::collections::HashMap<std::string::String, (jobs::Service, 
usize)>, std::collections::HashMap<std::string::String, (jobs::Service, usize)>, 
std::collections::hash_map::Values<'t2, std::string::String, (jobs::Service, usize)>, 
std::collections::hash_map::Values<'t3, std::string::String, (jobs::Service, usize)>, 
std::collections::hash_map::Values<'t4, std::string::String, (jobs::Service, usize)>, 
&'t5 (jobs::Service, usize), &'t6 jobs::Service, &'t7 usize, handler::Handler, &'t8 
std::vec::Vec<std::boxed::Box<(dyn jobs::Job + 't9)>>, 
std::vec::Vec<std::boxed::Box<(dyn jobs::Job + 't10)>>, std::boxed::Box<(dyn jobs::Job + 
't11)>, (dyn jobs::Job + 't12), &'t13 (dyn jobs::Job + 't14), bool, bool, &'t15 mut 
handler::ServiceInfo, &'t16 mut (dyn jobs::Job + 't17), &'t18 (dyn jobs::Job + 't19), 
&'t20 jobs::Service, &'t21 jobs::Service, std::pin::Pin<std::boxed::Box<(dyn 
core::future::future::Future<Output = jobs::ExtStatus> + std::marker::Send + 't22)>>, 
std::pin::Pin<std::boxed::Box<(dyn core::future::future::Future<Output = 
jobs::ExtStatus> + std::marker::Send + 't23)>>, (), std::string::String, 
handler::Handler, &'t24 std::collections::HashMap<std::string::String, (jobs::Service, 
usize)>, std::collections::HashMap<std::string::String, (jobs::Service, usize)>, 
std::string::String, &'t25 std::string::String, &'t26 std::string::String, 
std::option::Option<&'t27 (jobs::Service, usize)>, &'t28 jobs::Service, &'t29 usize, 
handler::Handler, &'t30 mut std::vec::Vec<std::boxed::Box<(dyn jobs::Job + 't31)>>, 
std::vec::Vec<std::boxed::Box<(dyn jobs::Job + 't32)>>, std::boxed::Box<(dyn jobs::Job + 
't33)>, (dyn jobs::Job + 't34), &'t35 mut (dyn jobs::Job + 't36), &'t37 mut (dyn 
jobs::Job + 't38), &'t39 mut (dyn jobs::Job + 't40), &'t41 jobs::Service, &'t42 
jobs::Service, auth::ClientInfo, impl core::future::future::Future, impl 
core::future::future::Future, impl core::future::future::Future, (), 
std::string::String, handler::Handler, &'t49 
std::collections::HashMap<std::string::String, (jobs::Service, usize)>, 
std::collections::HashMap<std::string::String, (jobs::Service, usize)>, 
std::string::String, &'t50 std::string::String, &'t51 std::string::String, 
std::option::Option<&'t52 (jobs::Service, usize)>, &'t53 jobs::Service, &'t54 usize, 
handler::Handler, &'t55 mut std::vec::Vec<std::boxed::Box<(dyn jobs::Job + 't56)>>, 
std::vec::Vec<std::boxed::Box<(dyn jobs::Job + 't57)>>, std::boxed::Box<(dyn jobs::Job + 
't58)>, (dyn jobs::Job + 't59), &'t60 mut (dyn jobs::Job + 't61), &'t62 mut (dyn 
jobs::Job + 't63), &'t64 mut (dyn jobs::Job + 't65), &'t66 jobs::Service, &'t67 
jobs::Service, auth::ClientInfo, impl core::future::future::Future, impl 
core::future::future::Future, impl core::future::future::Future, (), 
std::string::String, handler::Handler, &'t74 
std::collections::HashMap<std::string::String, (jobs::Service, usize)>, 
std::collections::HashMap<std::string::String, (jobs::Service, usize)>, 
std::string::String, &'t75 std::string::String, &'t76 std::string::String, 
std::option::Option<&'t77 (jobs::Service, usize)>, &'t78 jobs::Service, &'t79 usize, 
handler::Handler, &'t80 mut std::vec::Vec<std::boxed::Box<(dyn jobs::Job + 't81)>>, 
std::vec::Vec<std::boxed::Box<(dyn jobs::Job + 't82)>>, std::boxed::Box<(dyn jobs::Job + 
't83)>, (dyn jobs::Job + 't84), &'t85 mut (dyn jobs::Job + 't86), &'t87 mut (dyn 
jobs::Job + 't88), &'t89 mut (dyn jobs::Job + 't90), &'t91 jobs::Service, &'t92 
jobs::Service, auth::ClientInfo, impl core::future::future::Future, impl 
core::future::future::Future, impl core::future::future::Future, (), 
std::string::String, handler::Handler, &'t99 
std::collections::HashMap<std::string::String, (jobs::Service, usize)>, 
std::collections::HashMap<std::string::String, (jobs::Service, usize)>, 
std::string::String, &'t100 std::string::String, &'t101 std::string::String, 
std::option::Option<&'t102 (jobs::Service, usize)>, &'t103 jobs::Service, &'t104 usize, 
handler::Handler, &'t105 mut std::vec::Vec<std::boxed::Box<(dyn jobs::Job + 't106)>>, 
std::vec::Vec<std::boxed::Box<(dyn jobs::Job + 't107)>>, std::boxed::Box<(dyn jobs::Job 
+ 't108)>, (dyn jobs::Job + 't109), &'t110 mut (dyn jobs::Job + 't111), &'t112 mut (dyn 
jobs::Job + 't113), &'t114 mut (dyn jobs::Job + 't115), &'t116 jobs::Service, &'t117 
jobs::Service, auth::ClientInfo, impl core::future::future::Future, impl 
core::future::future::Future, impl core::future::future::Future, (), 
std::string::String, handler::Handler, &'t124 
std::collections::HashMap<std::string::String, (jobs::Service, usize)>, 
std::collections::HashMap<std::string::String, (jobs::Service, usize)>, 
std::string::String, &'t125 std::string::String, &'t126 std::string::String, 
std::option::Option<&'t127 (jobs::Service, usize)>, &'t128 jobs::Service, &'t129 usize, 
handler::Handler, &'t130 mut std::vec::Vec<std::boxed::Box<(dyn jobs::Job + 't131)>>, 
std::vec::Vec<std::boxed::Box<(dyn jobs::Job + 't132)>>, std::boxed::Box<(dyn jobs::Job 
+ 't133)>, (dyn jobs::Job + 't134), &'t135 mut (dyn jobs::Job + 't136), &'t137 mut (dyn 
jobs::Job + 't138), &'t139 mut (dyn jobs::Job + 't140), &'t141 jobs::Service, &'t142 
jobs::Service, auth::ClientInfo, impl core::future::future::Future, impl 
core::future::future::Future, impl core::future::future::Future, (), 
std::string::String, std::string::String, std::string::String, handler::Handler, &'t149 
std::collections::HashMap<std::string::String, (jobs::Service, usize)>, 
std::collections::HashMap<std::string::String, (jobs::Service, usize)>, 
std::string::String, &'t150 std::string::String, &'t151 std::string::String, 
std::option::Option<&'t152 (jobs::Service, usize)>, &'t153 jobs::Service, &'t154 usize, 
handler::Handler, &'t155 mut std::vec::Vec<std::boxed::Box<(dyn jobs::Job + 't156)>>, 
std::vec::Vec<std::boxed::Box<(dyn jobs::Job + 't157)>>, std::boxed::Box<(dyn jobs::Job 
+ 't158)>, (dyn jobs::Job + 't159), &'t160 mut (dyn jobs::Job + 't161), &'t162 mut (dyn 
jobs::Job + 't163), &'t164 mut (dyn jobs::Job + 't165), &'t166 jobs::Service, &'t167 
jobs::Service, auth::ClientInfo, std::string::String, std::string::String, impl 
core::future::future::Future, impl core::future::future::Future, impl 
core::future::future::Future, (), std::string::String, handler::Handler, &'t174 
std::collections::HashMap<std::string::String, (jobs::Service, usize)>, 
std::collections::HashMap<std::string::String, (jobs::Service, usize)>, 
std::string::String, &'t175 std::string::String, &'t176 std::string::String, 
std::option::Option<&'t177 (jobs::Service, usize)>, &'t178 jobs::Service, &'t179 usize, 
handler::Handler, &'t180 mut std::vec::Vec<std::boxed::Box<(dyn jobs::Job + 't181)>>, 
std::vec::Vec<std::boxed::Box<(dyn jobs::Job + 't182)>>, std::boxed::Box<(dyn jobs::Job 
+ 't183)>, (dyn jobs::Job + 't184), &'t185 mut (dyn jobs::Job + 't186), &'t187 mut (dyn 
jobs::Job + 't188), &'t189 mut (dyn jobs::Job + 't190), &'t191 jobs::Service, &'t192 
jobs::Service, auth::ClientInfo, impl core::future::future::Future, impl 
core::future::future::Future, impl core::future::future::Future, (), 
std::string::String, handler::Handler, &'t199 
std::collections::HashMap<std::string::String, (jobs::Service, usize)>, 
std::collections::HashMap<std::string::String, (jobs::Service, usize)>, 
std::string::String, &'t200 std::string::String, &'t201 std::string::String, 
std::option::Option<&'t202 (jobs::Service, usize)>, &'t203 jobs::Service, &'t204 usize, 
handler::Handler, &'t205 mut std::vec::Vec<std::boxed::Box<(dyn jobs::Job + 't206)>>, 
std::vec::Vec<std::boxed::Box<(dyn jobs::Job + 't207)>>, std::boxed::Box<(dyn jobs::Job 
+ 't208)>, (dyn jobs::Job + 't209), &'t210 mut (dyn jobs::Job + 't211), &'t212 mut (dyn 
jobs::Job + 't213), &'t214 mut (dyn jobs::Job + 't215), &'t216 jobs::Service, &'t217 
jobs::Service, auth::ClientInfo, impl core::future::future::Future, impl 
core::future::future::Future, impl core::future::future::Future, (), 
std::string::String, handler::Handler, &'t224 
std::collections::HashMap<std::string::String, (jobs::Service, usize)>, 
std::collections::HashMap<std::string::String, (jobs::Service, usize)>, 
std::string::String, &'t225 std::string::String, &'t226 std::string::String, 
std::option::Option<&'t227 (jobs::Service, usize)>, &'t228 jobs::Service, &'t229 usize, 
handler::Handler, &'t230 mut std::vec::Vec<std::boxed::Box<(dyn jobs::Job + 't231)>>, 
std::vec::Vec<std::boxed::Box<(dyn jobs::Job + 't232)>>, std::boxed::Box<(dyn jobs::Job 
+ 't233)>, (dyn jobs::Job + 't234), &'t235 mut (dyn jobs::Job + 't236), &'t237 mut (dyn 
jobs::Job + 't238), &'t239 mut (dyn jobs::Job + 't240), &'t241 jobs::Service, &'t242 
jobs::Service, auth::ClientInfo, impl core::future::future::Future, impl 
core::future::future::Future, impl core::future::future::Future, ()}]`

    = note: required because it appears within the type `std::future::GenFuture<[static generator@src/handler.rs:137:32: 198:6 __arg0:handler::Handler 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, 't29, 't30, 't31, 't32, 't33, 't34, 't35, 't36, 't37, 't38, 't39, 't40, 't41, 't42, 't43, 't44, 't45, 't46, 't47, 't48, 't49, 't50, 't51, 't52, 't53, 't54, 't55, 't56, 't57, 't58, 't59, 't60, 't61, 't62, 't63, 't64, 't65, 't66, 't67, 't68, 't69, 't70, 't71, 't72, 't73, 't74, 't75, 't76, 't77, 't78, 't79, 't80, 't81, 't82, 't83, 't84, 't85, 't86, 't87, 't88, 't89, 't90, 't91, 't92, 't93, 't94, 't95, 't96, 't97, 't98, 't99, 't100, 't101, 't102, 't103, 't104, 't105, 't106, 't107, 't108, 't109, 't110, 't111, 't112, 't113, 't114, 't115, 't116, 't117, 't118, 't119, 't120, 't121, 't122, 't123, 't124, 't125, 't126, 't127, 't128, 't129, 't130, 't131, 't132, 't133, 't134, 't135, 't136, 't137, 't138, 't139, 't140, 't141, 't142, 't143, 't144, 't145, 't146, 't147, 't148, 't149, 't150, 't151, 't152, 't153, 't154, 't155, 't156, 't157, 't158, 't159, 't160, 't161, 't162, 't163, 't164, 't165, 't166, 't167, 't168, 't169, 't170, 't171, 't172, 't173, 't174, 't175, 't176, 't177, 't178, 't179, 't180, 't181, 't182, 't183, 't184, 't185, 't186, 't187, 't188, 't189, 't190, 't191, 't192, 't193, 't194, 't195, 't196, 't197, 't198, 't199, 't200, 't201, 't202, 't203, 't204, 't205, 't206, 't207, 't208, 't209, 't210, 't211, 't212, 't213, 't214, 't215, 't216, 't217, 't218, 't219, 't220, 't221, 't222, 't223, 't224, 't225, 't226, 't227, 't228, 't229, 't230, 't231, 't232, 't233, 't234, 't235, 't236, 't237, 't238, 't239, 't240, 't241, 't242, 't243, 't244, 't245, 't246, 't247, 't248> {handler::Handler, handler::Handler, handler::Handler, &'r mut tokio_sync::mpsc::bounded::Receiver<handler::Action>, tokio_sync::mpsc::bounded::Receiver<handler::Action>, futures_util::stream::next::Next<'s, tokio_sync::mpsc::bounded::Receiver<handler::Action>>, futures_util::stream::next::Next<'t0, tokio_sync::mpsc::bounded::Receiver<handler::Action>>, (), std::option::Option<handler::Action>, handler::Action, handler::Action, handler::Request, auth::ClientInfo, tokio_sync::oneshot::Sender<handler::Response>, handler::Request, std::collections::HashMap<std::string::String, handler::ServiceInfo>, handler::Handler, &'t1 std::collections::HashMap<std::string::String, (jobs::Service, usize)>, std::collections::HashMap<std::string::String, (jobs::Service, usize)>, std::collections::hash_map::Values<'t2, std::string::String, (jobs::Service, usize)>, std::collections::hash_map::Values<'t3, std::string::String, (jobs::Service, usize)>, std::collections::hash_map::Values<'t4, std::string::String, (jobs::Service, usize)>, &'t5 (jobs::Service, usize), &'t6 jobs::Service, &'t7 usize, handler::Handler, &'t8 std::vec::Vec<std::boxed::Box<(dyn jobs::Job + 't9)>>, std::vec::Vec<std::boxed::Box<(dyn jobs::Job + 't10)>>, std::boxed::Box<(dyn jobs::Job + 't11)>, (dyn jobs::Job + 't12), &'t13 (dyn jobs::Job + 't14), bool, bool, &'t15 mut handler::ServiceInfo, &'t16 mut (dyn jobs::Job + 't17), &'t18 (dyn jobs::Job + 't19), &'t20 jobs::Service, &'t21 jobs::Service, std::pin::Pin<std::boxed::Box<(dyn core::future::future::Future<Output = jobs::ExtStatus> + std::marker::Send + 't22)>>, std::pin::Pin<std::boxed::Box<(dyn core::future::future::Future<Output = jobs::ExtStatus> + std::marker::Send + 't23)>>, (), std::string::String, handler::Handler, &'t24 std::collections::HashMap<std::string::String, (jobs::Service, usize)>, std::collections::HashMap<std::string::String, (jobs::Service, usize)>, std::string::String, &'t25 std::string::String, &'t26 std::string::String, std::option::Option<&'t27 (jobs::Service, usize)>, &'t28 jobs::Service, &'t29 usize, handler::Handler, &'t30 mut std::vec::Vec<std::boxed::Box<(dyn jobs::Job + 't31)>>, std::vec::Vec<std::boxed::Box<(dyn jobs::Job + 't32)>>, std::boxed::Box<(dyn jobs::Job + 't33)>, (dyn jobs::Job + 't34), &'t35 mut (dyn jobs::Job + 't36), &'t37 mut (dyn jobs::Job + 't38), &'t39 mut (dyn jobs::Job + 't40), &'t41 jobs::Service, &'t42 jobs::Service, auth::ClientInfo, impl core::future::future::Future, impl core::future::future::Future, impl core::future::future::Future, (), std::string::String, handler::Handler, &'t49 std::collections::HashMap<std::string::String, (jobs::Service, usize)>, std::collections::HashMap<std::string::String, (jobs::Service, usize)>, std::string::String, &'t50 std::string::String, &'t51 std::string::String, std::option::Option<&'t52 (jobs::Service, usize)>, &'t53 jobs::Service, &'t54 usize, handler::Handler, &'t55 mut std::vec::Vec<std::boxed::Box<(dyn jobs::Job + 't56)>>, std::vec::Vec<std::boxed::Box<(dyn jobs::Job + 't57)>>, std::boxed::Box<(dyn jobs::Job + 't58)>, (dyn jobs::Job + 't59), &'t60 mut (dyn jobs::Job + 't61), &'t62 mut (dyn jobs::Job + 't63), &'t64 mut (dyn jobs::Job + 't65), &'t66 jobs::Service, &'t67 jobs::Service, auth::ClientInfo, impl core::future::future::Future, impl core::future::future::Future, impl core::future::future::Future, (), std::string::String, handler::Handler, &'t74 std::collections::HashMap<std::string::String, (jobs::Service, usize)>, std::collections::HashMap<std::string::String, (jobs::Service, usize)>, std::string::String, &'t75 std::string::String, &'t76 std::string::String, std::option::Option<&'t77 (jobs::Service, usize)>, &'t78 jobs::Service, &'t79 usize, handler::Handler, &'t80 mut std::vec::Vec<std::boxed::Box<(dyn jobs::Job + 't81)>>, std::vec::Vec<std::boxed::Box<(dyn jobs::Job + 't82)>>, std::boxed::Box<(dyn jobs::Job + 't83)>, (dyn jobs::Job + 't84), &'t85 mut (dyn jobs::Job + 't86), &'t87 mut (dyn jobs::Job + 't88), &'t89 mut (dyn jobs::Job + 't90), &'t91 jobs::Service, &'t92 jobs::Service, auth::ClientInfo, impl core::future::future::Future, impl core::future::future::Future, impl core::future::future::Future, (), std::string::String, handler::Handler, &'t99 std::collections::HashMap<std::string::String, (jobs::Service, usize)>, std::collections::HashMap<std::string::String, (jobs::Service, usize)>, std::string::String, &'t100 std::string::String, &'t101 std::string::String, std::option::Option<&'t102 (jobs::Service, usize)>, &'t103 jobs::Service, &'t104 usize, handler::Handler, &'t105 mut std::vec::Vec<std::boxed::Box<(dyn jobs::Job + 't106)>>, std::vec::Vec<std::boxed::Box<(dyn jobs::Job + 't107)>>, std::boxed::Box<(dyn jobs::Job + 't108)>, (dyn jobs::Job + 't109), &'t110 mut (dyn jobs::Job + 't111), &'t112 mut (dyn jobs::Job + 't113), &'t114 mut (dyn jobs::Job + 't115), &'t116 jobs::Service, &'t117 jobs::Service, auth::ClientInfo, impl core::future::future::Future, impl core::future::future::Future, impl core::future::future::Future, (), std::string::String, handler::Handler, &'t124 std::collections::HashMap<std::string::String, (jobs::Service, usize)>, std::collections::HashMap<std::string::String, (jobs::Service, usize)>, std::string::String, &'t125 std::string::String, &'t126 std::string::String, std::option::Option<&'t127 (jobs::Service, usize)>, &'t128 jobs::Service, &'t129 usize, handler::Handler, &'t130 mut std::vec::Vec<std::boxed::Box<(dyn jobs::Job + 't131)>>, std::vec::Vec<std::boxed::Box<(dyn jobs::Job + 't132)>>, std::boxed::Box<(dyn jobs::Job + 't133)>, (dyn jobs::Job + 't134), &'t135 mut (dyn jobs::Job + 't136), &'t137 mut (dyn jobs::Job + 't138), &'t139 mut (dyn jobs::Job + 't140), &'t141 jobs::Service, &'t142 jobs::Service, auth::ClientInfo, impl core::future::future::Future, impl core::future::future::Future, impl core::future::future::Future, (), std::string::String, std::string::String, std::string::String, handler::Handler, &'t149 std::collections::HashMap<std::string::String, (jobs::Service, usize)>, std::collections::HashMap<std::string::String, (jobs::Service, usize)>, std::string::String, &'t150 std::string::String, &'t151 std::string::String, std::option::Option<&'t152 (jobs::Service, usize)>, &'t153 jobs::Service, &'t154 usize, handler::Handler, &'t155 mut std::vec::Vec<std::boxed::Box<(dyn jobs::Job + 't156)>>, std::vec::Vec<std::boxed::Box<(dyn jobs::Job + 't157)>>, std::boxed::Box<(dyn jobs::Job + 't158)>, (dyn jobs::Job + 't159), &'t160 mut (dyn jobs::Job + 't161), &'t162 mut (dyn jobs::Job + 't163), &'t164 mut (dyn jobs::Job + 't165), &'t166 jobs::Service, &'t167 jobs::Service, auth::ClientInfo, std::string::String, std::string::String, impl core::future::future::Future, impl core::future::future::Future, impl core::future::future::Future, (), std::string::String, handler::Handler, &'t174 std::collections::HashMap<std::string::String, (jobs::Service, usize)>, std::collections::HashMap<std::string::String, (jobs::Service, usize)>, std::string::String, &'t175 std::string::String, &'t176 std::string::String, std::option::Option<&'t177 (jobs::Service, usize)>, &'t178 jobs::Service, &'t179 usize, handler::Handler, &'t180 mut std::vec::Vec<std::boxed::Box<(dyn jobs::Job + 't181)>>, std::vec::Vec<std::boxed::Box<(dyn jobs::Job + 't182)>>, std::boxed::Box<(dyn jobs::Job + 't183)>, (dyn jobs::Job + 't184), &'t185 mut (dyn jobs::Job + 't186), &'t187 mut (dyn jobs::Job + 't188), &'t189 mut (dyn jobs::Job + 't190), &'t191 jobs::Service, &'t192 jobs::Service, auth::ClientInfo, impl core::future::future::Future, impl core::future::future::Future, impl core::future::future::Future, (), std::string::String, handler::Handler, &'t199 std::collections::HashMap<std::string::String, (jobs::Service, usize)>, std::collections::HashMap<std::string::String, (jobs::Service, usize)>, std::string::String, &'t200 std::string::String, &'t201 std::string::String, std::option::Option<&'t202 (jobs::Service, usize)>, &'t203 jobs::Service, &'t204 usize, handler::Handler, &'t205 mut std::vec::Vec<std::boxed::Box<(dyn jobs::Job + 't206)>>, std::vec::Vec<std::boxed::Box<(dyn jobs::Job + 't207)>>, std::boxed::Box<(dyn jobs::Job + 't208)>, (dyn jobs::Job + 't209), &'t210 mut (dyn jobs::Job + 't211), &'t212 mut (dyn jobs::Job + 't213), &'t214 mut (dyn jobs::Job + 't215), &'t216 jobs::Service, &'t217 jobs::Service, auth::ClientInfo, impl core::future::future::Future, impl core::future::future::Future, impl core::future::future::Future, (), std::string::String, handler::Handler, &'t224 std::collections::HashMap<std::string::String, (jobs::Service, usize)>, std::collections::HashMap<std::string::String, (jobs::Service, usize)>, std::string::String, &'t225 std::string::String, &'t226 std::string::String, std::option::Option<&'t227 (jobs::Service, usize)>, &'t228 jobs::Service, &'t229 usize, handler::Handler, &'t230 mut std::vec::Vec<std::boxed::Box<(dyn jobs::Job + 't231)>>, std::vec::Vec<std::boxed::Box<(dyn jobs::Job + 't232)>>, std::boxed::Box<(dyn jobs::Job + 't233)>, (dyn jobs::Job + 't234), &'t235 mut (dyn jobs::Job + 't236), &'t237 mut (dyn jobs::Job + 't238), &'t239 mut (dyn jobs::Job + 't240), &'t241 jobs::Service, &'t242 jobs::Service, auth::ClientInfo, impl core::future::future::Future, impl core::future::future::Future, impl core::future::future::Future, ()}]>`

Metadata

Metadata

Assignees

No one assigned

    Labels

    A-async-awaitArea: Async & AwaitA-diagnosticsArea: Messages for errors, warnings, and lintsAsyncAwait-TriagedAsync-await issues that have been triaged during a working group meeting.C-enhancementCategory: An issue proposing an enhancement or a PR with one.D-verboseDiagnostics: Too much output caused by a single piece of incorrect code.T-compilerRelevant to the compiler team, which will review and decide on the PR/issue.

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions