| //@ run-pass | |
| #![allow(unused)] | |
| fn foo<F>(f: F) | |
| where F: FnOnce() | |
| { | |
| } | |
| fn main() { | |
| // Test that this closure is inferred to `FnOnce` | |
| // because it moves from `y.as<Option::Some>.0`: | |
| let x = Some(vec![1, 2, 3]); | |
| foo(|| { | |
| match x { | |
| Some(y) => { } | |
| None => { } | |
| } | |
| }); | |
| // Test that this closure is inferred to `FnOnce` | |
| // because it moves from `y.0`: | |
| let y = (vec![1, 2, 3], 0); | |
| foo(|| { | |
| let x = y.0; | |
| }); | |
| } |