30 lines
789 B
Rust
30 lines
789 B
Rust
|
|
// Repro for <https://github.com/rust-lang/rust/issues/124757#issue-2279603232>.
|
||
|
|
//@ edition: 2021
|
||
|
|
//@ revisions: assumptions no_assumptions
|
||
|
|
//@[assumptions] compile-flags: -Zhigher-ranked-assumptions
|
||
|
|
//@[assumptions] check-pass
|
||
|
|
//@[no_assumptions] known-bug: #110338
|
||
|
|
|
||
|
|
use std::collections::HashSet;
|
||
|
|
use std::future::Future;
|
||
|
|
|
||
|
|
trait MyTrait {
|
||
|
|
fn blah(&self, x: impl Iterator<Item = u32>) -> impl Future<Output = ()> + Send;
|
||
|
|
}
|
||
|
|
|
||
|
|
fn foo<T: MyTrait + Send + Sync>(
|
||
|
|
val: T,
|
||
|
|
unique_x: HashSet<u32>,
|
||
|
|
) -> impl Future<Output = ()> + Send {
|
||
|
|
let cached = HashSet::new();
|
||
|
|
async move {
|
||
|
|
let xs = unique_x.union(&cached)
|
||
|
|
// .copied() // works
|
||
|
|
.map(|x| *x) // error
|
||
|
|
;
|
||
|
|
let blah = val.blah(xs.into_iter()).await;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
fn main() {}
|