Manual implementation of a `Fn*` trait. Erroneous code example: ```compile_fail,E0183 struct MyClosure { foo: i32 } impl FnOnce<()> for MyClosure { // error type Output = (); extern "rust-call" fn call_once(self, args: ()) -> Self::Output { println!("{}", self.foo); } } ``` Manually implementing `Fn`, `FnMut` or `FnOnce` is unstable and requires `#![feature(fn_traits, unboxed_closures)]`. ``` #![feature(fn_traits, unboxed_closures)] struct MyClosure { foo: i32 } impl FnOnce<()> for MyClosure { // ok! type Output = (); extern "rust-call" fn call_once(self, args: ()) -> Self::Output { println!("{}", self.foo); } } ``` The arguments must be a tuple representing the argument list. For more info, see the [tracking issue][iss29625]: [iss29625]: https://github.com/rust-lang/rust/issues/29625