22 lines
425 B
Rust
22 lines
425 B
Rust
//@ run-pass
|
|
|
|
// Fast path, main can see the concrete type returned.
|
|
fn before() -> impl FnMut(i32) {
|
|
let mut p = Box::new(0);
|
|
move |x| *p = x
|
|
}
|
|
|
|
fn send<T: Send>(_: T) {}
|
|
|
|
fn main() {
|
|
send(before());
|
|
send(after());
|
|
}
|
|
|
|
// Deferred path, main has to wait until typeck finishes,
|
|
// to check if the return type of after is Send.
|
|
fn after() -> impl FnMut(i32) {
|
|
let mut p = Box::new(0);
|
|
move |x| *p = x
|
|
}
|