Skip to content

Instantly share code, notes, and snippets.

@Nashenas88
Created October 4, 2019 18:45
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Nashenas88/f39c143daf2147d3d599ec78c5f6c961 to your computer and use it in GitHub Desktop.
Save Nashenas88/f39c143daf2147d3d599ec78c5f6c961 to your computer and use it in GitHub Desktop.
futures mutex guard send error
error[E0277]: `std::sync::MutexGuard<'_, rusoto_s3::generated::S3Client>` cannot be sent between threads safely
--> src/main.rs:604:14
|
604 | .boxed()
| ^^^^^ `std::sync::MutexGuard<'_, rusoto_s3::generated::S3Client>` cannot be sent between threads safely
|
= help: within `impl core::future::future::Future`, the trait `std::marker::Send` is not implemented for `std::sync::MutexGuard<'_, rusoto_s3::generated::S3Client>`
= 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> {std::sync::Arc<std::sync::Mutex<rusoto_s3::generated::S3Client>>, &'r str, gcs::Bucket, &'s gcs::GCSCredentialProvider<'t0>, &'t1 str, u64, &'t2 mut indicatif::progress::ProgressBar, fn(std::result::Result<rusoto_s3::generated::GetObjectOutput, failure::error::Error>) -> std::result::Result<<std::result::Result<rusoto_s3::generated::GetObjectOutput, failure::error::Error> as std::ops::Try>::Ok, <std::result::Result<rusoto_s3::generated::GetObjectOutput, failure::error::Error> as std::ops::Try>::Error> {<std::result::Result<rusoto_s3::generated::GetObjectOutput, failure::error::Error> as std::ops::Try>::into_result}, &'t3 std::sync::Mutex<rusoto_s3::generated::S3Client>, std::sync::Arc<std::sync::Mutex<rusoto_s3::generated::S3Client>>, std::result::Result<std::sync::MutexGuard<'t4, rusoto_s3::generated::S3Client>, std::sync::PoisonError<std::sync::MutexGuard<'t5, rusoto_s3::generated::S3Client>>>, &'t6 rusoto_s3::generated::S3Client, std::sync::MutexGuard<'t7, rusoto_s3::generated::S3Client>, &'t8 str, &'t9 str, std::string::String, &'t10 str, &'t11 str, std::string::String, fn() -> rusoto_s3::generated::GetObjectRequest {<rusoto_s3::generated::GetObjectRequest as std::default::Default>::default}, rusoto_s3::generated::GetObjectRequest, rusoto_s3::generated::GetObjectRequest, rusoto_core::future::RusotoFuture<rusoto_s3::generated::GetObjectOutput, rusoto_s3::generated::GetObjectError>, futures_util::compat::compat01as03::Compat01As03<rusoto_core::future::RusotoFuture<rusoto_s3::generated::GetObjectOutput, rusoto_s3::generated::GetObjectError>>, futures_util::compat::compat01as03::Compat01As03<rusoto_core::future::RusotoFuture<rusoto_s3::generated::GetObjectOutput, rusoto_s3::generated::GetObjectError>>, (), rusoto_s3::generated::GetObjectOutput, u64, rusoto_core::stream::ByteStream, fn(std::result::Result<std::vec::Vec<bytes::bytes::Bytes>, failure::error::Error>) -> std::result::Result<<std::result::Result<std::vec::Vec<bytes::bytes::Bytes>, failure::error::Error> as std::ops::Try>::Ok, <std::result::Result<std::vec::Vec<bytes::bytes::Bytes>, failure::error::Error> as std::ops::Try>::Error> {<std::result::Result<std::vec::Vec<bytes::bytes::Bytes>, failure::error::Error> as std::ops::Try>::into_result}, rusoto_core::stream::ByteStream, [closure@src/main.rs:634:29: 637:6 size:&'t12 u64, downloaded:&'t13 mut u64, pb:&'t14 &'t15 mut indicatif::progress::ProgressBar], futures::stream::inspect::Inspect<rusoto_core::stream::ByteStream, [closure@src/main.rs:634:29: 637:6 size:&'t16 u64, downloaded:&'t17 mut u64, pb:&'t18 &'t19 mut indicatif::progress::ProgressBar]>, futures::stream::collect::Collect<futures::stream::inspect::Inspect<rusoto_core::stream::ByteStream, [closure@src/main.rs:634:29: 637:6 size:&'t20 u64, downloaded:&'t21 mut u64, pb:&'t22 &'t23 mut indicatif::progress::ProgressBar]>>, futures_util::compat::compat01as03::Compat01As03<futures::stream::collect::Collect<futures::stream::inspect::Inspect<rusoto_core::stream::ByteStream, [closure@src/main.rs:634:29: 637:6 size:&'t24 u64, downloaded:&'t25 mut u64, pb:&'t26 &'t27 mut indicatif::progress::ProgressBar]>>>, futures_util::compat::compat01as03::Compat01As03<futures::stream::collect::Collect<futures::stream::inspect::Inspect<rusoto_core::stream::ByteStream, [closure@src/main.rs:634:29: 637:6 size:&'t28 u64, downloaded:&'t29 mut u64, pb:&'t30 &'t31 mut indicatif::progress::ProgressBar]>>>, (), std::vec::Vec<bytes::bytes::Bytes>, std::vec::Vec<u8>, &'t32 gcs::Bucket, gcs::Bucket, &'t33 str, &'t34 str, &'t35 &'t36 str, u64, std::vec::Vec<u8>, &'t37 gcs::GCSCredentialProvider<'t38>, &'t39 gcs::GCSCredentialProvider<'t40>, &'t41 &'t42 gcs::GCSCredentialProvider<'t43>, impl core::future::future::Future, impl core::future::future::Future, ()}`
= note: required because it appears within the type `[static generator@src/main.rs:619:17: 646:2 s3_client:std::sync::Arc<std::sync::Mutex<rusoto_s3::generated::S3Client>>, s3_bucket_name:&str, gcs_bucket:gcs::Bucket, cred_provider:&gcs::GCSCredentialProvider<'_>, key:&str, size:u64, pb:&mut indicatif::progress::ProgressBar 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> {std::sync::Arc<std::sync::Mutex<rusoto_s3::generated::S3Client>>, &'r str, gcs::Bucket, &'s gcs::GCSCredentialProvider<'t0>, &'t1 str, u64, &'t2 mut indicatif::progress::ProgressBar, fn(std::result::Result<rusoto_s3::generated::GetObjectOutput, failure::error::Error>) -> std::result::Result<<std::result::Result<rusoto_s3::generated::GetObjectOutput, failure::error::Error> as std::ops::Try>::Ok, <std::result::Result<rusoto_s3::generated::GetObjectOutput, failure::error::Error> as std::ops::Try>::Error> {<std::result::Result<rusoto_s3::generated::GetObjectOutput, failure::error::Error> as std::ops::Try>::into_result}, &'t3 std::sync::Mutex<rusoto_s3::generated::S3Client>, std::sync::Arc<std::sync::Mutex<rusoto_s3::generated::S3Client>>, std::result::Result<std::sync::MutexGuard<'t4, rusoto_s3::generated::S3Client>, std::sync::PoisonError<std::sync::MutexGuard<'t5, rusoto_s3::generated::S3Client>>>, &'t6 rusoto_s3::generated::S3Client, std::sync::MutexGuard<'t7, rusoto_s3::generated::S3Client>, &'t8 str, &'t9 str, std::string::String, &'t10 str, &'t11 str, std::string::String, fn() -> rusoto_s3::generated::GetObjectRequest {<rusoto_s3::generated::GetObjectRequest as std::default::Default>::default}, rusoto_s3::generated::GetObjectRequest, rusoto_s3::generated::GetObjectRequest, rusoto_core::future::RusotoFuture<rusoto_s3::generated::GetObjectOutput, rusoto_s3::generated::GetObjectError>, futures_util::compat::compat01as03::Compat01As03<rusoto_core::future::RusotoFuture<rusoto_s3::generated::GetObjectOutput, rusoto_s3::generated::GetObjectError>>, futures_util::compat::compat01as03::Compat01As03<rusoto_core::future::RusotoFuture<rusoto_s3::generated::GetObjectOutput, rusoto_s3::generated::GetObjectError>>, (), rusoto_s3::generated::GetObjectOutput, u64, rusoto_core::stream::ByteStream, fn(std::result::Result<std::vec::Vec<bytes::bytes::Bytes>, failure::error::Error>) -> std::result::Result<<std::result::Result<std::vec::Vec<bytes::bytes::Bytes>, failure::error::Error> as std::ops::Try>::Ok, <std::result::Result<std::vec::Vec<bytes::bytes::Bytes>, failure::error::Error> as std::ops::Try>::Error> {<std::result::Result<std::vec::Vec<bytes::bytes::Bytes>, failure::error::Error> as std::ops::Try>::into_result}, rusoto_core::stream::ByteStream, [closure@src/main.rs:634:29: 637:6 size:&'t12 u64, downloaded:&'t13 mut u64, pb:&'t14 &'t15 mut indicatif::progress::ProgressBar], futures::stream::inspect::Inspect<rusoto_core::stream::ByteStream, [closure@src/main.rs:634:29: 637:6 size:&'t16 u64, downloaded:&'t17 mut u64, pb:&'t18 &'t19 mut indicatif::progress::ProgressBar]>, futures::stream::collect::Collect<futures::stream::inspect::Inspect<rusoto_core::stream::ByteStream, [closure@src/main.rs:634:29: 637:6 size:&'t20 u64, downloaded:&'t21 mut u64, pb:&'t22 &'t23 mut indicatif::progress::ProgressBar]>>, futures_util::compat::compat01as03::Compat01As03<futures::stream::collect::Collect<futures::stream::inspect::Inspect<rusoto_core::stream::ByteStream, [closure@src/main.rs:634:29: 637:6 size:&'t24 u64, downloaded:&'t25 mut u64, pb:&'t26 &'t27 mut indicatif::progress::ProgressBar]>>>, futures_util::compat::compat01as03::Compat01As03<futures::stream::collect::Collect<futures::stream::inspect::Inspect<rusoto_core::stream::ByteStream, [closure@src/main.rs:634:29: 637:6 size:&'t28 u64, downloaded:&'t29 mut u64, pb:&'t30 &'t31 mut indicatif::progress::ProgressBar]>>>, (), std::vec::Vec<bytes::bytes::Bytes>, std::vec::Vec<u8>, &'t32 gcs::Bucket, gcs::Bucket, &'t33 str, &'t34 str, &'t35 &'t36 str, u64, std::vec::Vec<u8>, &'t37 gcs::GCSCredentialProvider<'t38>, &'t39 gcs::GCSCredentialProvider<'t40>, &'t41 &'t42 gcs::GCSCredentialProvider<'t43>, impl core::future::future::Future, impl core::future::future::Future, ()}]`
= note: required because it appears within the type `std::future::GenFuture<[static generator@src/main.rs:619:17: 646:2 s3_client:std::sync::Arc<std::sync::Mutex<rusoto_s3::generated::S3Client>>, s3_bucket_name:&str, gcs_bucket:gcs::Bucket, cred_provider:&gcs::GCSCredentialProvider<'_>, key:&str, size:u64, pb:&mut indicatif::progress::ProgressBar 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> {std::sync::Arc<std::sync::Mutex<rusoto_s3::generated::S3Client>>, &'r str, gcs::Bucket, &'s gcs::GCSCredentialProvider<'t0>, &'t1 str, u64, &'t2 mut indicatif::progress::ProgressBar, fn(std::result::Result<rusoto_s3::generated::GetObjectOutput, failure::error::Error>) -> std::result::Result<<std::result::Result<rusoto_s3::generated::GetObjectOutput, failure::error::Error> as std::ops::Try>::Ok, <std::result::Result<rusoto_s3::generated::GetObjectOutput, failure::error::Error> as std::ops::Try>::Error> {<std::result::Result<rusoto_s3::generated::GetObjectOutput, failure::error::Error> as std::ops::Try>::into_result}, &'t3 std::sync::Mutex<rusoto_s3::generated::S3Client>, std::sync::Arc<std::sync::Mutex<rusoto_s3::generated::S3Client>>, std::result::Result<std::sync::MutexGuard<'t4, rusoto_s3::generated::S3Client>, std::sync::PoisonError<std::sync::MutexGuard<'t5, rusoto_s3::generated::S3Client>>>, &'t6 rusoto_s3::generated::S3Client, std::sync::MutexGuard<'t7, rusoto_s3::generated::S3Client>, &'t8 str, &'t9 str, std::string::String, &'t10 str, &'t11 str, std::string::String, fn() -> rusoto_s3::generated::GetObjectRequest {<rusoto_s3::generated::GetObjectRequest as std::default::Default>::default}, rusoto_s3::generated::GetObjectRequest, rusoto_s3::generated::GetObjectRequest, rusoto_core::future::RusotoFuture<rusoto_s3::generated::GetObjectOutput, rusoto_s3::generated::GetObjectError>, futures_util::compat::compat01as03::Compat01As03<rusoto_core::future::RusotoFuture<rusoto_s3::generated::GetObjectOutput, rusoto_s3::generated::GetObjectError>>, futures_util::compat::compat01as03::Compat01As03<rusoto_core::future::RusotoFuture<rusoto_s3::generated::GetObjectOutput, rusoto_s3::generated::GetObjectError>>, (), rusoto_s3::generated::GetObjectOutput, u64, rusoto_core::stream::ByteStream, fn(std::result::Result<std::vec::Vec<bytes::bytes::Bytes>, failure::error::Error>) -> std::result::Result<<std::result::Result<std::vec::Vec<bytes::bytes::Bytes>, failure::error::Error> as std::ops::Try>::Ok, <std::result::Result<std::vec::Vec<bytes::bytes::Bytes>, failure::error::Error> as std::ops::Try>::Error> {<std::result::Result<std::vec::Vec<bytes::bytes::Bytes>, failure::error::Error> as std::ops::Try>::into_result}, rusoto_core::stream::ByteStream, [closure@src/main.rs:634:29: 637:6 size:&'t12 u64, downloaded:&'t13 mut u64, pb:&'t14 &'t15 mut indicatif::progress::ProgressBar], futures::stream::inspect::Inspect<rusoto_core::stream::ByteStream, [closure@src/main.rs:634:29: 637:6 size:&'t16 u64, downloaded:&'t17 mut u64, pb:&'t18 &'t19 mut indicatif::progress::ProgressBar]>, futures::stream::collect::Collect<futures::stream::inspect::Inspect<rusoto_core::stream::ByteStream, [closure@src/main.rs:634:29: 637:6 size:&'t20 u64, downloaded:&'t21 mut u64, pb:&'t22 &'t23 mut indicatif::progress::ProgressBar]>>, futures_util::compat::compat01as03::Compat01As03<futures::stream::collect::Collect<futures::stream::inspect::Inspect<rusoto_core::stream::ByteStream, [closure@src/main.rs:634:29: 637:6 size:&'t24 u64, downloaded:&'t25 mut u64, pb:&'t26 &'t27 mut indicatif::progress::ProgressBar]>>>, futures_util::compat::compat01as03::Compat01As03<futures::stream::collect::Collect<futures::stream::inspect::Inspect<rusoto_core::stream::ByteStream, [closure@src/main.rs:634:29: 637:6 size:&'t28 u64, downloaded:&'t29 mut u64, pb:&'t30 &'t31 mut indicatif::progress::ProgressBar]>>>, (), std::vec::Vec<bytes::bytes::Bytes>, std::vec::Vec<u8>, &'t32 gcs::Bucket, gcs::Bucket, &'t33 str, &'t34 str, &'t35 &'t36 str, u64, std::vec::Vec<u8>, &'t37 gcs::GCSCredentialProvider<'t38>, &'t39 gcs::GCSCredentialProvider<'t40>, &'t41 &'t42 gcs::GCSCredentialProvider<'t43>, 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 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, '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> {std::string::String, bool, bool, for<'_, '_, 'f, '_, '_> fn(std::sync::Arc<std::sync::Mutex<rusoto_s3::generated::S3Client>>, &str, gcs::Bucket, &gcs::GCSCredentialProvider<'f>, &str, u64, &mut indicatif::progress::ProgressBar) -> impl core::future::future::Future {copy_over}, for<'t48> fn(&'t48 std::sync::Arc<std::sync::Mutex<rusoto_s3::generated::S3Client>>) -> std::sync::Arc<std::sync::Mutex<rusoto_s3::generated::S3Client>> {<std::sync::Arc<std::sync::Mutex<rusoto_s3::generated::S3Client>> as std::clone::Clone>::clone}, std::sync::Arc<std::sync::Mutex<rusoto_s3::generated::S3Client>>, &'r std::sync::Arc<std::sync::Mutex<rusoto_s3::generated::S3Client>>, &'s std::sync::Arc<std::sync::Mutex<rusoto_s3::generated::S3Client>>, std::sync::Arc<std::sync::Mutex<rusoto_s3::generated::S3Client>>, std::string::String, &'t0 str, &'t1 std::string::String, &'t2 gcs::Bucket, gcs::Bucket, gcs::Bucket, std::sync::Arc<gcs::GCSCredentialProvider<'t3>>, &'t4 gcs::GCSCredentialProvider<'t5>, &'t6 std::sync::Arc<gcs::GCSCredentialProvider<'t7>>, std::string::String, &'t8 str, &'t9 std::string::String, i64, u64, indicatif::progress::ProgressBar, &'t10 mut indicatif::progress::ProgressBar, &'t11 mut indicatif::progress::ProgressBar, impl core::future::future::Future, impl core::future::future::Future, (), std::result::Result<(), failure::error::Error>, std::result::Result<(), failure::error::Error>, failure::error::Error, std::string::String, failure::error::Error, std::result::Result<rusoto_core::error::RusotoError<rusoto_s3::generated::GetObjectError>, failure::error::Error>, std::string::String, for<'_, '_, 'f, '_, '_> fn(std::sync::Arc<std::sync::Mutex<rusoto_s3::generated::S3Client>>, &str, gcs::Bucket, &gcs::GCSCredentialProvider<'f>, &str, u64, &mut indicatif::progress::ProgressBar) -> impl core::future::future::Future {copy_over}, std::sync::Arc<std::sync::Mutex<rusoto_s3::generated::S3Client>>, std::string::String, &'t22 str, &'t23 std::string::String, gcs::Bucket, std::sync::Arc<gcs::GCSCredentialProvider<'t24>>, &'t25 gcs::GCSCredentialProvider<'t26>, &'t27 std::sync::Arc<gcs::GCSCredentialProvider<'t28>>, std::string::String, &'t29 str, &'t30 std::string::String, i64, u64, indicatif::progress::ProgressBar, &'t31 mut indicatif::progress::ProgressBar, &'t32 mut indicatif::progress::ProgressBar, impl core::future::future::Future, impl core::future::future::Future, (), for<'_> fn(std::sync::Arc<std::sync::Mutex<rusoto_s3::generated::S3Client>>, std::string::String, std::sync::Arc<std::collections::HashMap<std::string::String, std::string::String>>, std::string::String, u64, &mut indicatif::progress::ProgressBar) -> impl core::future::future::Future {download_and_compare}, std::sync::Arc<std::sync::Mutex<rusoto_s3::generated::S3Client>>, std::string::String, std::sync::Arc<std::collections::HashMap<std::string::String, std::string::String>>, &'t43 std::string::String, std::string::String, std::string::String, i64, u64, indicatif::progress::ProgressBar, &'t44 mut indicatif::progress::ProgressBar, &'t45 mut indicatif::progress::ProgressBar, impl core::future::future::Future, impl core::future::future::Future, ()}`
= note: required because it appears within the type `[static generator@src/main.rs:518:28: 583:18 total_spawned_cloned:std::sync::Arc<std::sync::atomic::AtomicUsize>, key:std::string::String, should_sync:bool, fut_s3_client:std::sync::Arc<std::sync::Mutex<rusoto_s3::generated::S3Client>>, fut_bucket_name:std::string::String, fut_gcs_bucket:gcs::Bucket, cred_provider:std::sync::Arc<gcs::GCSCredentialProvider<'_>>, size:i64, pb:indicatif::progress::ProgressBar, fut_total_failures:std::sync::Arc<std::sync::atomic::AtomicUsize>, progress_bars:std::sync::Arc<std::sync::Mutex<std::vec::Vec<std::option::Option<indicatif::progress::ProgressBar>>>>, fut_validated:std::sync::Arc<std::sync::atomic::AtomicUsize>, fut_all_gcs_keys:std::sync::Arc<std::collections::HashMap<std::string::String, std::string::String>>, tx:std::sync::mpsc::Sender<Completed>, count_pb:std::sync::Arc<std::sync::Mutex<indicatif::progress::ProgressBar>> 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> {std::string::String, bool, bool, for<'_, '_, 'f, '_, '_> fn(std::sync::Arc<std::sync::Mutex<rusoto_s3::generated::S3Client>>, &str, gcs::Bucket, &gcs::GCSCredentialProvider<'f>, &str, u64, &mut indicatif::progress::ProgressBar) -> impl core::future::future::Future {copy_over}, for<'t48> fn(&'t48 std::sync::Arc<std::sync::Mutex<rusoto_s3::generated::S3Client>>) -> std::sync::Arc<std::sync::Mutex<rusoto_s3::generated::S3Client>> {<std::sync::Arc<std::sync::Mutex<rusoto_s3::generated::S3Client>> as std::clone::Clone>::clone}, std::sync::Arc<std::sync::Mutex<rusoto_s3::generated::S3Client>>, &'r std::sync::Arc<std::sync::Mutex<rusoto_s3::generated::S3Client>>, &'s std::sync::Arc<std::sync::Mutex<rusoto_s3::generated::S3Client>>, std::sync::Arc<std::sync::Mutex<rusoto_s3::generated::S3Client>>, std::string::String, &'t0 str, &'t1 std::string::String, &'t2 gcs::Bucket, gcs::Bucket, gcs::Bucket, std::sync::Arc<gcs::GCSCredentialProvider<'t3>>, &'t4 gcs::GCSCredentialProvider<'t5>, &'t6 std::sync::Arc<gcs::GCSCredentialProvider<'t7>>, std::string::String, &'t8 str, &'t9 std::string::String, i64, u64, indicatif::progress::ProgressBar, &'t10 mut indicatif::progress::ProgressBar, &'t11 mut indicatif::progress::ProgressBar, impl core::future::future::Future, impl core::future::future::Future, (), std::result::Result<(), failure::error::Error>, std::result::Result<(), failure::error::Error>, failure::error::Error, std::string::String, failure::error::Error, std::result::Result<rusoto_core::error::RusotoError<rusoto_s3::generated::GetObjectError>, failure::error::Error>, std::string::String, for<'_, '_, 'f, '_, '_> fn(std::sync::Arc<std::sync::Mutex<rusoto_s3::generated::S3Client>>, &str, gcs::Bucket, &gcs::GCSCredentialProvider<'f>, &str, u64, &mut indicatif::progress::ProgressBar) -> impl core::future::future::Future {copy_over}, std::sync::Arc<std::sync::Mutex<rusoto_s3::generated::S3Client>>, std::string::String, &'t22 str, &'t23 std::string::String, gcs::Bucket, std::sync::Arc<gcs::GCSCredentialProvider<'t24>>, &'t25 gcs::GCSCredentialProvider<'t26>, &'t27 std::sync::Arc<gcs::GCSCredentialProvider<'t28>>, std::string::String, &'t29 str, &'t30 std::string::String, i64, u64, indicatif::progress::ProgressBar, &'t31 mut indicatif::progress::ProgressBar, &'t32 mut indicatif::progress::ProgressBar, impl core::future::future::Future, impl core::future::future::Future, (), for<'_> fn(std::sync::Arc<std::sync::Mutex<rusoto_s3::generated::S3Client>>, std::string::String, std::sync::Arc<std::collections::HashMap<std::string::String, std::string::String>>, std::string::String, u64, &mut indicatif::progress::ProgressBar) -> impl core::future::future::Future {download_and_compare}, std::sync::Arc<std::sync::Mutex<rusoto_s3::generated::S3Client>>, std::string::String, std::sync::Arc<std::collections::HashMap<std::string::String, std::string::String>>, &'t43 std::string::String, std::string::String, std::string::String, i64, u64, indicatif::progress::ProgressBar, &'t44 mut indicatif::progress::ProgressBar, &'t45 mut indicatif::progress::ProgressBar, impl core::future::future::Future, impl core::future::future::Future, ()}]`
= note: required because it appears within the type `std::future::GenFuture<[static generator@src/main.rs:518:28: 583:18 total_spawned_cloned:std::sync::Arc<std::sync::atomic::AtomicUsize>, key:std::string::String, should_sync:bool, fut_s3_client:std::sync::Arc<std::sync::Mutex<rusoto_s3::generated::S3Client>>, fut_bucket_name:std::string::String, fut_gcs_bucket:gcs::Bucket, cred_provider:std::sync::Arc<gcs::GCSCredentialProvider<'_>>, size:i64, pb:indicatif::progress::ProgressBar, fut_total_failures:std::sync::Arc<std::sync::atomic::AtomicUsize>, progress_bars:std::sync::Arc<std::sync::Mutex<std::vec::Vec<std::option::Option<indicatif::progress::ProgressBar>>>>, fut_validated:std::sync::Arc<std::sync::atomic::AtomicUsize>, fut_all_gcs_keys:std::sync::Arc<std::collections::HashMap<std::string::String, std::string::String>>, tx:std::sync::mpsc::Sender<Completed>, count_pb:std::sync::Arc<std::sync::Mutex<indicatif::progress::ProgressBar>> 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> {std::string::String, bool, bool, for<'_, '_, 'f, '_, '_> fn(std::sync::Arc<std::sync::Mutex<rusoto_s3::generated::S3Client>>, &str, gcs::Bucket, &gcs::GCSCredentialProvider<'f>, &str, u64, &mut indicatif::progress::ProgressBar) -> impl core::future::future::Future {copy_over}, for<'t48> fn(&'t48 std::sync::Arc<std::sync::Mutex<rusoto_s3::generated::S3Client>>) -> std::sync::Arc<std::sync::Mutex<rusoto_s3::generated::S3Client>> {<std::sync::Arc<std::sync::Mutex<rusoto_s3::generated::S3Client>> as std::clone::Clone>::clone}, std::sync::Arc<std::sync::Mutex<rusoto_s3::generated::S3Client>>, &'r std::sync::Arc<std::sync::Mutex<rusoto_s3::generated::S3Client>>, &'s std::sync::Arc<std::sync::Mutex<rusoto_s3::generated::S3Client>>, std::sync::Arc<std::sync::Mutex<rusoto_s3::generated::S3Client>>, std::string::String, &'t0 str, &'t1 std::string::String, &'t2 gcs::Bucket, gcs::Bucket, gcs::Bucket, std::sync::Arc<gcs::GCSCredentialProvider<'t3>>, &'t4 gcs::GCSCredentialProvider<'t5>, &'t6 std::sync::Arc<gcs::GCSCredentialProvider<'t7>>, std::string::String, &'t8 str, &'t9 std::string::String, i64, u64, indicatif::progress::ProgressBar, &'t10 mut indicatif::progress::ProgressBar, &'t11 mut indicatif::progress::ProgressBar, impl core::future::future::Future, impl core::future::future::Future, (), std::result::Result<(), failure::error::Error>, std::result::Result<(), failure::error::Error>, failure::error::Error, std::string::String, failure::error::Error, std::result::Result<rusoto_core::error::RusotoError<rusoto_s3::generated::GetObjectError>, failure::error::Error>, std::string::String, for<'_, '_, 'f, '_, '_> fn(std::sync::Arc<std::sync::Mutex<rusoto_s3::generated::S3Client>>, &str, gcs::Bucket, &gcs::GCSCredentialProvider<'f>, &str, u64, &mut indicatif::progress::ProgressBar) -> impl core::future::future::Future {copy_over}, std::sync::Arc<std::sync::Mutex<rusoto_s3::generated::S3Client>>, std::string::String, &'t22 str, &'t23 std::string::String, gcs::Bucket, std::sync::Arc<gcs::GCSCredentialProvider<'t24>>, &'t25 gcs::GCSCredentialProvider<'t26>, &'t27 std::sync::Arc<gcs::GCSCredentialProvider<'t28>>, std::string::String, &'t29 str, &'t30 std::string::String, i64, u64, indicatif::progress::ProgressBar, &'t31 mut indicatif::progress::ProgressBar, &'t32 mut indicatif::progress::ProgressBar, impl core::future::future::Future, impl core::future::future::Future, (), for<'_> fn(std::sync::Arc<std::sync::Mutex<rusoto_s3::generated::S3Client>>, std::string::String, std::sync::Arc<std::collections::HashMap<std::string::String, std::string::String>>, std::string::String, u64, &mut indicatif::progress::ProgressBar) -> impl core::future::future::Future {download_and_compare}, std::sync::Arc<std::sync::Mutex<rusoto_s3::generated::S3Client>>, std::string::String, std::sync::Arc<std::collections::HashMap<std::string::String, std::string::String>>, &'t43 std::string::String, std::string::String, std::string::String, i64, u64, indicatif::progress::ProgressBar, &'t44 mut indicatif::progress::ProgressBar, &'t45 mut indicatif::progress::ProgressBar, 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 because of the requirements on the impl of `std::marker::Send` for `futures_util::stream::futures_unordered::FuturesUnordered<impl core::future::future::Future>`
= note: required because it appears within the type `futures_util::stream::for_each_concurrent::ForEachConcurrent<futures_util::stream::iter::Iter<std::iter::Enumerate<std::vec::IntoIter<(std::string::String, i64)>>>, impl core::future::future::Future, [closure@src/main.rs:488:96: 584:14 cred_provider:&std::sync::Arc<gcs::GCSCredentialProvider<'_>>, s3_client:&std::sync::Arc<std::sync::Mutex<rusoto_s3::generated::S3Client>>, gcs_bucket:&gcs::Bucket, s3_bucket_name:&std::string::String, all_gcs_keys:&std::sync::Arc<std::collections::HashMap<std::string::String, std::string::String>>, validated:&std::sync::Arc<std::sync::atomic::AtomicUsize>, total_failures:&std::sync::Arc<std::sync::atomic::AtomicUsize>, tx:&std::sync::Arc<std::sync::Mutex<std::sync::mpsc::Sender<Completed>>>, total_spawned_cloned:&std::sync::Arc<std::sync::atomic::AtomicUsize>, count_pb:&std::sync::Arc<std::sync::Mutex<indicatif::progress::ProgressBar>>, progress_bars:&std::sync::Arc<std::sync::Mutex<std::vec::Vec<std::option::Option<indicatif::progress::ProgressBar>>>>, padding:&usize, should_sync:&bool]>`
= 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> {bool, bool, for<'_, '_, '_> fn(&gcs::Bucket, &gcs::GCSCredentialProvider<'_>) -> impl core::future::future::Future {fix_missing}, gcs::Bucket, &'r gcs::Bucket, &'s gcs::Bucket, gcs::GCSCredentialProvider<'t0>, &'t1 gcs::GCSCredentialProvider<'t2>, &'t3 gcs::GCSCredentialProvider<'t4>, impl core::future::future::Future, impl core::future::future::Future, (), std::result::Result<(), failure::error::Error>, for<'_, '_, '_> fn(&gcs::Bucket, &gcs::GCSCredentialProvider<'_>) -> impl core::future::future::Future {cleanup_to_delete}, gcs::Bucket, &'t11 gcs::Bucket, &'t12 gcs::Bucket, gcs::GCSCredentialProvider<'t13>, &'t14 gcs::GCSCredentialProvider<'t15>, &'t16 gcs::GCSCredentialProvider<'t17>, impl core::future::future::Future, impl core::future::future::Future, (), std::collections::HashMap<std::string::String, std::string::String>, std::option::Option<GCSCachedMetadata>, std::option::Option<std::collections::HashMap<std::string::String, std::string::String>>, std::option::Option<std::collections::HashMap<std::string::String, std::string::String>>, fn(std::result::Result<std::collections::HashMap<std::string::String, std::string::String>, failure::error::Error>) -> std::result::Result<<std::result::Result<std::collections::HashMap<std::string::String, std::string::String>, failure::error::Error> as std::ops::Try>::Ok, <std::result::Result<std::collections::HashMap<std::string::String, std::string::String>, failure::error::Error> as std::ops::Try>::Error> {<std::result::Result<std::collections::HashMap<std::string::String, std::string::String>, failure::error::Error> as std::ops::Try>::into_result}, fn([static generator@src/main.rs:340:138: 349:18 gcs_bucket:&'t24 gcs::Bucket, cred_provider:&'t25 gcs::GCSCredentialProvider<'t26> for<'t92, 't93, 't94, 't95, 't96, 't97, 't98, 't99> {indicatif::progress::ProgressBar, &'t92 gcs::Bucket, gcs::Bucket, gcs::GCSCredentialProvider<'t93>, &'t94 gcs::GCSCredentialProvider<'t95>, &'t96 gcs::GCSCredentialProvider<'t97>, indicatif::progress::ProgressBar, impl core::future::future::Future, impl core::future::future::Future, ()}]) -> impl core::future::future::Future {std::future::from_generator::<[static generator@src/main.rs:340:138: 349:18 gcs_bucket:&'t24 gcs::Bucket, cred_provider:&'t25 gcs::GCSCredentialProvider<'t26> for<'t92, 't93, 't94, 't95, 't96, 't97, 't98, 't99> {indicatif::progress::ProgressBar, &'t92 gcs::Bucket, gcs::Bucket, gcs::GCSCredentialProvider<'t93>, &'t94 gcs::GCSCredentialProvider<'t95>, &'t96 gcs::GCSCredentialProvider<'t97>, indicatif::progress::ProgressBar, impl core::future::future::Future, impl core::future::future::Future, ()}]>}, [static generator@src/main.rs:340:138: 349:18 gcs_bucket:&'t27 gcs::Bucket, cred_provider:&'t28 gcs::GCSCredentialProvider<'t29> for<'t92, 't93, 't94, 't95, 't96, 't97, 't98, 't99> {indicatif::progress::ProgressBar, &'t92 gcs::Bucket, gcs::Bucket, gcs::GCSCredentialProvider<'t93>, &'t94 gcs::GCSCredentialProvider<'t95>, &'t96 gcs::GCSCredentialProvider<'t97>, indicatif::progress::ProgressBar, impl core::future::future::Future, impl core::future::future::Future, ()}], impl core::future::future::Future, impl core::future::future::Future, (), std::collections::HashMap<std::string::String, std::string::String>, std::vec::Vec<(gcs::Fix, i64)>, std::option::Option<S3CachedMetadata>, std::option::Option<std::vec::Vec<(gcs::Fix, i64)>>, std::option::Option<std::vec::Vec<(gcs::Fix, i64)>>, fn(std::result::Result<std::vec::Vec<(gcs::Fix, i64)>, failure::error::Error>) -> std::result::Result<<std::result::Result<std::vec::Vec<(gcs::Fix, i64)>, failure::error::Error> as std::ops::Try>::Ok, <std::result::Result<std::vec::Vec<(gcs::Fix, i64)>, failure::error::Error> as std::ops::Try>::Error> {<std::result::Result<std::vec::Vec<(gcs::Fix, i64)>, failure::error::Error> as std::ops::Try>::into_result}, fn([static generator@src/main.rs:361:127: 369:18 s3_client:&'t36 rusoto_s3::generated::S3Client, s3_bucket_name:&'t37 std::string::String {}]) -> impl core::future::future::Future {std::future::from_generator::<[static generator@src/main.rs:361:127: 369:18 s3_client:&'t36 rusoto_s3::generated::S3Client, s3_bucket_name:&'t37 std::string::String {}]>}, [static generator@src/main.rs:361:127: 369:18 s3_client:&'t38 rusoto_s3::generated::S3Client, s3_bucket_name:&'t39 std::string::String {}], impl core::future::future::Future, impl core::future::future::Future, (), std::vec::Vec<(gcs::Fix, i64)>, std::vec::Vec<gcs::Fix>, std::collections::HashSet<std::string::String>, std::vec::Vec<std::string::String>, std::vec::Vec<(std::string::String, i64)>, std::sync::Arc<std::sync::Mutex<rusoto_s3::generated::S3Client>>, std::sync::Arc<std::collections::HashMap<std::string::String, std::string::String>>, std::sync::Arc<gcs::GCSCredentialProvider<'t44>>, std::sync::Arc<std::sync::atomic::AtomicUsize>, std::sync::Arc<std::sync::Mutex<std::sync::mpsc::Sender<Completed>>>, indicatif::progress::MultiProgress, indicatif::progress::ProgressBar, indicatif::style::ProgressStyle, usize, std::vec::Vec<std::option::Option<indicatif::progress::ProgressBar>>, std::sync::Arc<std::sync::Mutex<indicatif::progress::ProgressBar>>, std::sync::Arc<std::sync::Mutex<std::vec::Vec<std::option::Option<indicatif::progress::ProgressBar>>>>, std::thread::JoinHandle<()>, usize, fn(std::iter::Enumerate<std::vec::IntoIter<(std::string::String, i64)>>) -> futures_util::stream::iter::Iter<<std::iter::Enumerate<std::vec::IntoIter<(std::string::String, i64)>> as std::iter::IntoIterator>::IntoIter> {futures_util::stream::iter::iter::<std::iter::Enumerate<std::vec::IntoIter<(std::string::String, i64)>>>}, std::vec::Vec<(std::string::String, i64)>, std::vec::IntoIter<(std::string::String, i64)>, std::iter::Enumerate<std::vec::IntoIter<(std::string::String, i64)>>, futures_util::stream::iter::Iter<std::iter::Enumerate<std::vec::IntoIter<(std::string::String, i64)>>>, usize, [closure@src/main.rs:488:96: 584:14 cred_provider:&'t46 std::sync::Arc<gcs::GCSCredentialProvider<'t47>>, s3_client:&'t48 std::sync::Arc<std::sync::Mutex<rusoto_s3::generated::S3Client>>, gcs_bucket:&'t49 gcs::Bucket, s3_bucket_name:&'t50 std::string::String, all_gcs_keys:&'t51 std::sync::Arc<std::collections::HashMap<std::string::String, std::string::String>>, validated:&'t52 std::sync::Arc<std::sync::atomic::AtomicUsize>, total_failures:&'t53 std::sync::Arc<std::sync::atomic::AtomicUsize>, tx:&'t54 std::sync::Arc<std::sync::Mutex<std::sync::mpsc::Sender<Completed>>>, total_spawned_cloned:&'t55 std::sync::Arc<std::sync::atomic::AtomicUsize>, count_pb:&'t56 std::sync::Arc<std::sync::Mutex<indicatif::progress::ProgressBar>>, progress_bars:&'t57 std::sync::Arc<std::sync::Mutex<std::vec::Vec<std::option::Option<indicatif::progress::ProgressBar>>>>, padding:&'t58 usize, should_sync:&'t59 bool], futures_util::stream::for_each_concurrent::ForEachConcurrent<futures_util::stream::iter::Iter<std::iter::Enumerate<std::vec::IntoIter<(std::string::String, i64)>>>, impl core::future::future::Future, [closure@src/main.rs:488:96: 584:14 cred_provider:&'t62 std::sync::Arc<gcs::GCSCredentialProvider<'t63>>, s3_client:&'t64 std::sync::Arc<std::sync::Mutex<rusoto_s3::generated::S3Client>>, gcs_bucket:&'t65 gcs::Bucket, s3_bucket_name:&'t66 std::string::String, all_gcs_keys:&'t67 std::sync::Arc<std::collections::HashMap<std::string::String, std::string::String>>, validated:&'t68 std::sync::Arc<std::sync::atomic::AtomicUsize>, total_failures:&'t69 std::sync::Arc<std::sync::atomic::AtomicUsize>, tx:&'t70 std::sync::Arc<std::sync::Mutex<std::sync::mpsc::Sender<Completed>>>, total_spawned_cloned:&'t71 std::sync::Arc<std::sync::atomic::AtomicUsize>, count_pb:&'t72 std::sync::Arc<std::sync::Mutex<indicatif::progress::ProgressBar>>, progress_bars:&'t73 std::sync::Arc<std::sync::Mutex<std::vec::Vec<std::option::Option<indicatif::progress::ProgressBar>>>>, padding:&'t74 usize, should_sync:&'t75 bool]>, futures_util::stream::for_each_concurrent::ForEachConcurrent<futures_util::stream::iter::Iter<std::iter::Enumerate<std::vec::IntoIter<(std::string::String, i64)>>>, impl core::future::future::Future, [closure@src/main.rs:488:96: 584:14 cred_provider:&'t78 std::sync::Arc<gcs::GCSCredentialProvider<'t79>>, s3_client:&'t80 std::sync::Arc<std::sync::Mutex<rusoto_s3::generated::S3Client>>, gcs_bucket:&'t81 gcs::Bucket, s3_bucket_name:&'t82 std::string::String, all_gcs_keys:&'t83 std::sync::Arc<std::collections::HashMap<std::string::String, std::string::String>>, validated:&'t84 std::sync::Arc<std::sync::atomic::AtomicUsize>, total_failures:&'t85 std::sync::Arc<std::sync::atomic::AtomicUsize>, tx:&'t86 std::sync::Arc<std::sync::Mutex<std::sync::mpsc::Sender<Completed>>>, total_spawned_cloned:&'t87 std::sync::Arc<std::sync::atomic::AtomicUsize>, count_pb:&'t88 std::sync::Arc<std::sync::Mutex<indicatif::progress::ProgressBar>>, progress_bars:&'t89 std::sync::Arc<std::sync::Mutex<std::vec::Vec<std::option::Option<indicatif::progress::ProgressBar>>>>, padding:&'t90 usize, should_sync:&'t91 bool]>, ()}`
= note: required because it appears within the type `[static generator@src/main.rs:330:20: 602:10 should_fix:bool, gcs_bucket:gcs::Bucket, cred_provider:gcs::GCSCredentialProvider<'_>, should_sync:bool, s3_bucket_name:std::string::String, s3_client:rusoto_s3::generated::S3Client, completed:std::collections::HashSet<std::string::String>, validated:std::sync::Arc<std::sync::atomic::AtomicUsize>, total_spawned:std::sync::Arc<std::sync::atomic::AtomicUsize>, tx:std::sync::mpsc::Sender<Completed>, total_failures:std::sync::Arc<std::sync::atomic::AtomicUsize> 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> {bool, bool, for<'_, '_, '_> fn(&gcs::Bucket, &gcs::GCSCredentialProvider<'_>) -> impl core::future::future::Future {fix_missing}, gcs::Bucket, &'r gcs::Bucket, &'s gcs::Bucket, gcs::GCSCredentialProvider<'t0>, &'t1 gcs::GCSCredentialProvider<'t2>, &'t3 gcs::GCSCredentialProvider<'t4>, impl core::future::future::Future, impl core::future::future::Future, (), std::result::Result<(), failure::error::Error>, for<'_, '_, '_> fn(&gcs::Bucket, &gcs::GCSCredentialProvider<'_>) -> impl core::future::future::Future {cleanup_to_delete}, gcs::Bucket, &'t11 gcs::Bucket, &'t12 gcs::Bucket, gcs::GCSCredentialProvider<'t13>, &'t14 gcs::GCSCredentialProvider<'t15>, &'t16 gcs::GCSCredentialProvider<'t17>, impl core::future::future::Future, impl core::future::future::Future, (), std::collections::HashMap<std::string::String, std::string::String>, std::option::Option<GCSCachedMetadata>, std::option::Option<std::collections::HashMap<std::string::String, std::string::String>>, std::option::Option<std::collections::HashMap<std::string::String, std::string::String>>, fn(std::result::Result<std::collections::HashMap<std::string::String, std::string::String>, failure::error::Error>) -> std::result::Result<<std::result::Result<std::collections::HashMap<std::string::String, std::string::String>, failure::error::Error> as std::ops::Try>::Ok, <std::result::Result<std::collections::HashMap<std::string::String, std::string::String>, failure::error::Error> as std::ops::Try>::Error> {<std::result::Result<std::collections::HashMap<std::string::String, std::string::String>, failure::error::Error> as std::ops::Try>::into_result}, fn([static generator@src/main.rs:340:138: 349:18 gcs_bucket:&'t24 gcs::Bucket, cred_provider:&'t25 gcs::GCSCredentialProvider<'t26> for<'t92, 't93, 't94, 't95, 't96, 't97, 't98, 't99> {indicatif::progress::ProgressBar, &'t92 gcs::Bucket, gcs::Bucket, gcs::GCSCredentialProvider<'t93>, &'t94 gcs::GCSCredentialProvider<'t95>, &'t96 gcs::GCSCredentialProvider<'t97>, indicatif::progress::ProgressBar, impl core::future::future::Future, impl core::future::future::Future, ()}]) -> impl core::future::future::Future {std::future::from_generator::<[static generator@src/main.rs:340:138: 349:18 gcs_bucket:&'t24 gcs::Bucket, cred_provider:&'t25 gcs::GCSCredentialProvider<'t26> for<'t92, 't93, 't94, 't95, 't96, 't97, 't98, 't99> {indicatif::progress::ProgressBar, &'t92 gcs::Bucket, gcs::Bucket, gcs::GCSCredentialProvider<'t93>, &'t94 gcs::GCSCredentialProvider<'t95>, &'t96 gcs::GCSCredentialProvider<'t97>, indicatif::progress::ProgressBar, impl core::future::future::Future, impl core::future::future::Future, ()}]>}, [static generator@src/main.rs:340:138: 349:18 gcs_bucket:&'t27 gcs::Bucket, cred_provider:&'t28 gcs::GCSCredentialProvider<'t29> for<'t92, 't93, 't94, 't95, 't96, 't97, 't98, 't99> {indicatif::progress::ProgressBar, &'t92 gcs::Bucket, gcs::Bucket, gcs::GCSCredentialProvider<'t93>, &'t94 gcs::GCSCredentialProvider<'t95>, &'t96 gcs::GCSCredentialProvider<'t97>, indicatif::progress::ProgressBar, impl core::future::future::Future, impl core::future::future::Future, ()}], impl core::future::future::Future, impl core::future::future::Future, (), std::collections::HashMap<std::string::String, std::string::String>, std::vec::Vec<(gcs::Fix, i64)>, std::option::Option<S3CachedMetadata>, std::option::Option<std::vec::Vec<(gcs::Fix, i64)>>, std::option::Option<std::vec::Vec<(gcs::Fix, i64)>>, fn(std::result::Result<std::vec::Vec<(gcs::Fix, i64)>, failure::error::Error>) -> std::result::Result<<std::result::Result<std::vec::Vec<(gcs::Fix, i64)>, failure::error::Error> as std::ops::Try>::Ok, <std::result::Result<std::vec::Vec<(gcs::Fix, i64)>, failure::error::Error> as std::ops::Try>::Error> {<std::result::Result<std::vec::Vec<(gcs::Fix, i64)>, failure::error::Error> as std::ops::Try>::into_result}, fn([static generator@src/main.rs:361:127: 369:18 s3_client:&'t36 rusoto_s3::generated::S3Client, s3_bucket_name:&'t37 std::string::String {}]) -> impl core::future::future::Future {std::future::from_generator::<[static generator@src/main.rs:361:127: 369:18 s3_client:&'t36 rusoto_s3::generated::S3Client, s3_bucket_name:&'t37 std::string::String {}]>}, [static generator@src/main.rs:361:127: 369:18 s3_client:&'t38 rusoto_s3::generated::S3Client, s3_bucket_name:&'t39 std::string::String {}], impl core::future::future::Future, impl core::future::future::Future, (), std::vec::Vec<(gcs::Fix, i64)>, std::vec::Vec<gcs::Fix>, std::collections::HashSet<std::string::String>, std::vec::Vec<std::string::String>, std::vec::Vec<(std::string::String, i64)>, std::sync::Arc<std::sync::Mutex<rusoto_s3::generated::S3Client>>, std::sync::Arc<std::collections::HashMap<std::string::String, std::string::String>>, std::sync::Arc<gcs::GCSCredentialProvider<'t44>>, std::sync::Arc<std::sync::atomic::AtomicUsize>, std::sync::Arc<std::sync::Mutex<std::sync::mpsc::Sender<Completed>>>, indicatif::progress::MultiProgress, indicatif::progress::ProgressBar, indicatif::style::ProgressStyle, usize, std::vec::Vec<std::option::Option<indicatif::progress::ProgressBar>>, std::sync::Arc<std::sync::Mutex<indicatif::progress::ProgressBar>>, std::sync::Arc<std::sync::Mutex<std::vec::Vec<std::option::Option<indicatif::progress::ProgressBar>>>>, std::thread::JoinHandle<()>, usize, fn(std::iter::Enumerate<std::vec::IntoIter<(std::string::String, i64)>>) -> futures_util::stream::iter::Iter<<std::iter::Enumerate<std::vec::IntoIter<(std::string::String, i64)>> as std::iter::IntoIterator>::IntoIter> {futures_util::stream::iter::iter::<std::iter::Enumerate<std::vec::IntoIter<(std::string::String, i64)>>>}, std::vec::Vec<(std::string::String, i64)>, std::vec::IntoIter<(std::string::String, i64)>, std::iter::Enumerate<std::vec::IntoIter<(std::string::String, i64)>>, futures_util::stream::iter::Iter<std::iter::Enumerate<std::vec::IntoIter<(std::string::String, i64)>>>, usize, [closure@src/main.rs:488:96: 584:14 cred_provider:&'t46 std::sync::Arc<gcs::GCSCredentialProvider<'t47>>, s3_client:&'t48 std::sync::Arc<std::sync::Mutex<rusoto_s3::generated::S3Client>>, gcs_bucket:&'t49 gcs::Bucket, s3_bucket_name:&'t50 std::string::String, all_gcs_keys:&'t51 std::sync::Arc<std::collections::HashMap<std::string::String, std::string::String>>, validated:&'t52 std::sync::Arc<std::sync::atomic::AtomicUsize>, total_failures:&'t53 std::sync::Arc<std::sync::atomic::AtomicUsize>, tx:&'t54 std::sync::Arc<std::sync::Mutex<std::sync::mpsc::Sender<Completed>>>, total_spawned_cloned:&'t55 std::sync::Arc<std::sync::atomic::AtomicUsize>, count_pb:&'t56 std::sync::Arc<std::sync::Mutex<indicatif::progress::ProgressBar>>, progress_bars:&'t57 std::sync::Arc<std::sync::Mutex<std::vec::Vec<std::option::Option<indicatif::progress::ProgressBar>>>>, padding:&'t58 usize, should_sync:&'t59 bool], futures_util::stream::for_each_concurrent::ForEachConcurrent<futures_util::stream::iter::Iter<std::iter::Enumerate<std::vec::IntoIter<(std::string::String, i64)>>>, impl core::future::future::Future, [closure@src/main.rs:488:96: 584:14 cred_provider:&'t62 std::sync::Arc<gcs::GCSCredentialProvider<'t63>>, s3_client:&'t64 std::sync::Arc<std::sync::Mutex<rusoto_s3::generated::S3Client>>, gcs_bucket:&'t65 gcs::Bucket, s3_bucket_name:&'t66 std::string::String, all_gcs_keys:&'t67 std::sync::Arc<std::collections::HashMap<std::string::String, std::string::String>>, validated:&'t68 std::sync::Arc<std::sync::atomic::AtomicUsize>, total_failures:&'t69 std::sync::Arc<std::sync::atomic::AtomicUsize>, tx:&'t70 std::sync::Arc<std::sync::Mutex<std::sync::mpsc::Sender<Completed>>>, total_spawned_cloned:&'t71 std::sync::Arc<std::sync::atomic::AtomicUsize>, count_pb:&'t72 std::sync::Arc<std::sync::Mutex<indicatif::progress::ProgressBar>>, progress_bars:&'t73 std::sync::Arc<std::sync::Mutex<std::vec::Vec<std::option::Option<indicatif::progress::ProgressBar>>>>, padding:&'t74 usize, should_sync:&'t75 bool]>, futures_util::stream::for_each_concurrent::ForEachConcurrent<futures_util::stream::iter::Iter<std::iter::Enumerate<std::vec::IntoIter<(std::string::String, i64)>>>, impl core::future::future::Future, [closure@src/main.rs:488:96: 584:14 cred_provider:&'t78 std::sync::Arc<gcs::GCSCredentialProvider<'t79>>, s3_client:&'t80 std::sync::Arc<std::sync::Mutex<rusoto_s3::generated::S3Client>>, gcs_bucket:&'t81 gcs::Bucket, s3_bucket_name:&'t82 std::string::String, all_gcs_keys:&'t83 std::sync::Arc<std::collections::HashMap<std::string::String, std::string::String>>, validated:&'t84 std::sync::Arc<std::sync::atomic::AtomicUsize>, total_failures:&'t85 std::sync::Arc<std::sync::atomic::AtomicUsize>, tx:&'t86 std::sync::Arc<std::sync::Mutex<std::sync::mpsc::Sender<Completed>>>, total_spawned_cloned:&'t87 std::sync::Arc<std::sync::atomic::AtomicUsize>, count_pb:&'t88 std::sync::Arc<std::sync::Mutex<indicatif::progress::ProgressBar>>, progress_bars:&'t89 std::sync::Arc<std::sync::Mutex<std::vec::Vec<std::option::Option<indicatif::progress::ProgressBar>>>>, padding:&'t90 usize, should_sync:&'t91 bool]>, ()}]`
= note: required because it appears within the type `std::future::GenFuture<[static generator@src/main.rs:330:20: 602:10 should_fix:bool, gcs_bucket:gcs::Bucket, cred_provider:gcs::GCSCredentialProvider<'_>, should_sync:bool, s3_bucket_name:std::string::String, s3_client:rusoto_s3::generated::S3Client, completed:std::collections::HashSet<std::string::String>, validated:std::sync::Arc<std::sync::atomic::AtomicUsize>, total_spawned:std::sync::Arc<std::sync::atomic::AtomicUsize>, tx:std::sync::mpsc::Sender<Completed>, total_failures:std::sync::Arc<std::sync::atomic::AtomicUsize> 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> {bool, bool, for<'_, '_, '_> fn(&gcs::Bucket, &gcs::GCSCredentialProvider<'_>) -> impl core::future::future::Future {fix_missing}, gcs::Bucket, &'r gcs::Bucket, &'s gcs::Bucket, gcs::GCSCredentialProvider<'t0>, &'t1 gcs::GCSCredentialProvider<'t2>, &'t3 gcs::GCSCredentialProvider<'t4>, impl core::future::future::Future, impl core::future::future::Future, (), std::result::Result<(), failure::error::Error>, for<'_, '_, '_> fn(&gcs::Bucket, &gcs::GCSCredentialProvider<'_>) -> impl core::future::future::Future {cleanup_to_delete}, gcs::Bucket, &'t11 gcs::Bucket, &'t12 gcs::Bucket, gcs::GCSCredentialProvider<'t13>, &'t14 gcs::GCSCredentialProvider<'t15>, &'t16 gcs::GCSCredentialProvider<'t17>, impl core::future::future::Future, impl core::future::future::Future, (), std::collections::HashMap<std::string::String, std::string::String>, std::option::Option<GCSCachedMetadata>, std::option::Option<std::collections::HashMap<std::string::String, std::string::String>>, std::option::Option<std::collections::HashMap<std::string::String, std::string::String>>, fn(std::result::Result<std::collections::HashMap<std::string::String, std::string::String>, failure::error::Error>) -> std::result::Result<<std::result::Result<std::collections::HashMap<std::string::String, std::string::String>, failure::error::Error> as std::ops::Try>::Ok, <std::result::Result<std::collections::HashMap<std::string::String, std::string::String>, failure::error::Error> as std::ops::Try>::Error> {<std::result::Result<std::collections::HashMap<std::string::String, std::string::String>, failure::error::Error> as std::ops::Try>::into_result}, fn([static generator@src/main.rs:340:138: 349:18 gcs_bucket:&'t24 gcs::Bucket, cred_provider:&'t25 gcs::GCSCredentialProvider<'t26> for<'t92, 't93, 't94, 't95, 't96, 't97, 't98, 't99> {indicatif::progress::ProgressBar, &'t92 gcs::Bucket, gcs::Bucket, gcs::GCSCredentialProvider<'t93>, &'t94 gcs::GCSCredentialProvider<'t95>, &'t96 gcs::GCSCredentialProvider<'t97>, indicatif::progress::ProgressBar, impl core::future::future::Future, impl core::future::future::Future, ()}]) -> impl core::future::future::Future {std::future::from_generator::<[static generator@src/main.rs:340:138: 349:18 gcs_bucket:&'t24 gcs::Bucket, cred_provider:&'t25 gcs::GCSCredentialProvider<'t26> for<'t92, 't93, 't94, 't95, 't96, 't97, 't98, 't99> {indicatif::progress::ProgressBar, &'t92 gcs::Bucket, gcs::Bucket, gcs::GCSCredentialProvider<'t93>, &'t94 gcs::GCSCredentialProvider<'t95>, &'t96 gcs::GCSCredentialProvider<'t97>, indicatif::progress::ProgressBar, impl core::future::future::Future, impl core::future::future::Future, ()}]>}, [static generator@src/main.rs:340:138: 349:18 gcs_bucket:&'t27 gcs::Bucket, cred_provider:&'t28 gcs::GCSCredentialProvider<'t29> for<'t92, 't93, 't94, 't95, 't96, 't97, 't98, 't99> {indicatif::progress::ProgressBar, &'t92 gcs::Bucket, gcs::Bucket, gcs::GCSCredentialProvider<'t93>, &'t94 gcs::GCSCredentialProvider<'t95>, &'t96 gcs::GCSCredentialProvider<'t97>, indicatif::progress::ProgressBar, impl core::future::future::Future, impl core::future::future::Future, ()}], impl core::future::future::Future, impl core::future::future::Future, (), std::collections::HashMap<std::string::String, std::string::String>, std::vec::Vec<(gcs::Fix, i64)>, std::option::Option<S3CachedMetadata>, std::option::Option<std::vec::Vec<(gcs::Fix, i64)>>, std::option::Option<std::vec::Vec<(gcs::Fix, i64)>>, fn(std::result::Result<std::vec::Vec<(gcs::Fix, i64)>, failure::error::Error>) -> std::result::Result<<std::result::Result<std::vec::Vec<(gcs::Fix, i64)>, failure::error::Error> as std::ops::Try>::Ok, <std::result::Result<std::vec::Vec<(gcs::Fix, i64)>, failure::error::Error> as std::ops::Try>::Error> {<std::result::Result<std::vec::Vec<(gcs::Fix, i64)>, failure::error::Error> as std::ops::Try>::into_result}, fn([static generator@src/main.rs:361:127: 369:18 s3_client:&'t36 rusoto_s3::generated::S3Client, s3_bucket_name:&'t37 std::string::String {}]) -> impl core::future::future::Future {std::future::from_generator::<[static generator@src/main.rs:361:127: 369:18 s3_client:&'t36 rusoto_s3::generated::S3Client, s3_bucket_name:&'t37 std::string::String {}]>}, [static generator@src/main.rs:361:127: 369:18 s3_client:&'t38 rusoto_s3::generated::S3Client, s3_bucket_name:&'t39 std::string::String {}], impl core::future::future::Future, impl core::future::future::Future, (), std::vec::Vec<(gcs::Fix, i64)>, std::vec::Vec<gcs::Fix>, std::collections::HashSet<std::string::String>, std::vec::Vec<std::string::String>, std::vec::Vec<(std::string::String, i64)>, std::sync::Arc<std::sync::Mutex<rusoto_s3::generated::S3Client>>, std::sync::Arc<std::collections::HashMap<std::string::String, std::string::String>>, std::sync::Arc<gcs::GCSCredentialProvider<'t44>>, std::sync::Arc<std::sync::atomic::AtomicUsize>, std::sync::Arc<std::sync::Mutex<std::sync::mpsc::Sender<Completed>>>, indicatif::progress::MultiProgress, indicatif::progress::ProgressBar, indicatif::style::ProgressStyle, usize, std::vec::Vec<std::option::Option<indicatif::progress::ProgressBar>>, std::sync::Arc<std::sync::Mutex<indicatif::progress::ProgressBar>>, std::sync::Arc<std::sync::Mutex<std::vec::Vec<std::option::Option<indicatif::progress::ProgressBar>>>>, std::thread::JoinHandle<()>, usize, fn(std::iter::Enumerate<std::vec::IntoIter<(std::string::String, i64)>>) -> futures_util::stream::iter::Iter<<std::iter::Enumerate<std::vec::IntoIter<(std::string::String, i64)>> as std::iter::IntoIterator>::IntoIter> {futures_util::stream::iter::iter::<std::iter::Enumerate<std::vec::IntoIter<(std::string::String, i64)>>>}, std::vec::Vec<(std::string::String, i64)>, std::vec::IntoIter<(std::string::String, i64)>, std::iter::Enumerate<std::vec::IntoIter<(std::string::String, i64)>>, futures_util::stream::iter::Iter<std::iter::Enumerate<std::vec::IntoIter<(std::string::String, i64)>>>, usize, [closure@src/main.rs:488:96: 584:14 cred_provider:&'t46 std::sync::Arc<gcs::GCSCredentialProvider<'t47>>, s3_client:&'t48 std::sync::Arc<std::sync::Mutex<rusoto_s3::generated::S3Client>>, gcs_bucket:&'t49 gcs::Bucket, s3_bucket_name:&'t50 std::string::String, all_gcs_keys:&'t51 std::sync::Arc<std::collections::HashMap<std::string::String, std::string::String>>, validated:&'t52 std::sync::Arc<std::sync::atomic::AtomicUsize>, total_failures:&'t53 std::sync::Arc<std::sync::atomic::AtomicUsize>, tx:&'t54 std::sync::Arc<std::sync::Mutex<std::sync::mpsc::Sender<Completed>>>, total_spawned_cloned:&'t55 std::sync::Arc<std::sync::atomic::AtomicUsize>, count_pb:&'t56 std::sync::Arc<std::sync::Mutex<indicatif::progress::ProgressBar>>, progress_bars:&'t57 std::sync::Arc<std::sync::Mutex<std::vec::Vec<std::option::Option<indicatif::progress::ProgressBar>>>>, padding:&'t58 usize, should_sync:&'t59 bool], futures_util::stream::for_each_concurrent::ForEachConcurrent<futures_util::stream::iter::Iter<std::iter::Enumerate<std::vec::IntoIter<(std::string::String, i64)>>>, impl core::future::future::Future, [closure@src/main.rs:488:96: 584:14 cred_provider:&'t62 std::sync::Arc<gcs::GCSCredentialProvider<'t63>>, s3_client:&'t64 std::sync::Arc<std::sync::Mutex<rusoto_s3::generated::S3Client>>, gcs_bucket:&'t65 gcs::Bucket, s3_bucket_name:&'t66 std::string::String, all_gcs_keys:&'t67 std::sync::Arc<std::collections::HashMap<std::string::String, std::string::String>>, validated:&'t68 std::sync::Arc<std::sync::atomic::AtomicUsize>, total_failures:&'t69 std::sync::Arc<std::sync::atomic::AtomicUsize>, tx:&'t70 std::sync::Arc<std::sync::Mutex<std::sync::mpsc::Sender<Completed>>>, total_spawned_cloned:&'t71 std::sync::Arc<std::sync::atomic::AtomicUsize>, count_pb:&'t72 std::sync::Arc<std::sync::Mutex<indicatif::progress::ProgressBar>>, progress_bars:&'t73 std::sync::Arc<std::sync::Mutex<std::vec::Vec<std::option::Option<indicatif::progress::ProgressBar>>>>, padding:&'t74 usize, should_sync:&'t75 bool]>, futures_util::stream::for_each_concurrent::ForEachConcurrent<futures_util::stream::iter::Iter<std::iter::Enumerate<std::vec::IntoIter<(std::string::String, i64)>>>, impl core::future::future::Future, [closure@src/main.rs:488:96: 584:14 cred_provider:&'t78 std::sync::Arc<gcs::GCSCredentialProvider<'t79>>, s3_client:&'t80 std::sync::Arc<std::sync::Mutex<rusoto_s3::generated::S3Client>>, gcs_bucket:&'t81 gcs::Bucket, s3_bucket_name:&'t82 std::string::String, all_gcs_keys:&'t83 std::sync::Arc<std::collections::HashMap<std::string::String, std::string::String>>, validated:&'t84 std::sync::Arc<std::sync::atomic::AtomicUsize>, total_failures:&'t85 std::sync::Arc<std::sync::atomic::AtomicUsize>, tx:&'t86 std::sync::Arc<std::sync::Mutex<std::sync::mpsc::Sender<Completed>>>, total_spawned_cloned:&'t87 std::sync::Arc<std::sync::atomic::AtomicUsize>, count_pb:&'t88 std::sync::Arc<std::sync::Mutex<indicatif::progress::ProgressBar>>, progress_bars:&'t89 std::sync::Arc<std::sync::Mutex<std::vec::Vec<std::option::Option<indicatif::progress::ProgressBar>>>>, padding:&'t90 usize, should_sync:&'t91 bool]>, ()}]>`
= note: required because it appears within the type `impl core::future::future::Future`
= note: required because it appears within the type `futures_util::try_future::map_err::MapErr<impl core::future::future::Future, [closure@src/main.rs:603:22: 603:70]>`
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment