Rust errors / Types and traits
Rust compiler error · checked with rustc 1.99.0
Rust error E0183: manual implementations of `FnOnce` are experimental
What it meansManual implementation of a Fn* trait.
What rustc prints
error[E0183]: manual implementations of `FnOnce` are experimental --> main.rs:5:6 | 5 | impl FnOnce<()> for MyClosure { // error | ^^^^^^^^^^ manual implementations of `FnOnce` are experimental | = help: add `#![feature(unboxed_closures)]` to the crate attributes to enable
Real output of rustc 1.99.0 compiling the official example below (2021 edition). Your names and line numbers will differ; the first line is the part to match.
The compiler team's explanation
Manual implementation of a Fn* trait.
Erroneous code example:
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:
From rustc --explain E0183 (1.99.0), part of the Rust project, MIT or Apache-2.0. Official page.
Related errors
- E0308mismatched types
- E0277the trait bound is not satisfied
- E0599no method named X found in the current scope
- E0433failed to resolve
- E0170pattern binding `GET` is named the same as one of the variants of the type `Method`
- E0178expected a path on the left-hand side of `+`
- E0184the trait `Copy` cannot be implemented for this type; the type has a destructor
- E0185method `foo` has a `&self` declaration in the impl, but not in the trait
Up next
Often hit nextE0308: mismatched typesA related error from the same family.Read it next →Did this answer your question?