diff --git a/src/librustc_typeck/error_codes.rs b/src/librustc_typeck/error_codes.rs index 6dd3c0113cdcd..0d28e6184ae09 100644 --- a/src/librustc_typeck/error_codes.rs +++ b/src/librustc_typeck/error_codes.rs @@ -1588,6 +1588,48 @@ fn bar(foo: Foo) -> u32 { ``` "##, +E0183: r##" +Manually implementing `Fn*` traits is experimental. +See [tracking issue #29625][iss29625] for the status of the feature. + +Erroneous code example: + +```compile_fail,E0183 +#![feature(unboxed_closures)] +struct Echo {} + +impl FnOnce<(A,)> for Echo { + type Output = A; + extern "rust-call" fn call_once(self, args: (A,)) -> Self::Output { + args.0 + } +} +``` + +To fix this error the feature `fn_traits` must be enabled with: + +``` +#![feature(fn_traits)] +``` + +Here's the above example fixed: + +``` +#![feature(unboxed_closures, fn_traits)] +struct Echo {} + +impl FnOnce<(A,)> for Echo { + type Output = A; + extern "rust-call" fn call_once(self, args: (A,)) -> Self::Output { + args.0 + } +} +``` + +[1]: https://doc.rust-lang.org/unstable-book/library-features/fn-traits.html +[iss29625]: https://github.com/rust-lang/rust/issues/29625 +"##, + E0184: r##" Explicitly implementing both Drop and Copy for a type is currently disallowed. This feature can make some sense in theory, but the current implementation is @@ -4671,7 +4713,6 @@ register_diagnostics! { // E0173, // manual implementations of unboxed closure traits are experimental // E0174, // E0182, // merged into E0229 - E0183, // E0187, // can't infer the kind of the closure // E0188, // can not cast an immutable reference to a mutable pointer // E0189, // deprecated: can only cast a boxed pointer to a boxed object