A closure was used but didn't implement the expected trait. Erroneous code example: ```compile_fail,E0525 struct X; fn foo(_: T) {} fn bar(_: T) {} fn main() { let x = X; let closure = |_| foo(x); // error: expected a closure that implements // the `Fn` trait, but this closure only // implements `FnOnce` bar(closure); } ``` In the example above, `closure` is an `FnOnce` closure whereas the `bar` function expected an `Fn` closure. In this case, it's simple to fix the issue, you just have to implement `Copy` and `Clone` traits on `struct X` and it'll be ok: ``` #[derive(Clone, Copy)] // We implement `Clone` and `Copy` traits. struct X; fn foo(_: T) {} fn bar(_: T) {} fn main() { let x = X; let closure = |_| foo(x); bar(closure); // ok! } ``` To understand better how closures work in Rust, read: https://doc.rust-lang.org/book/ch13-01-closures.html