Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Error code E0789

This error code is internal to the compiler and will not be emitted with normal Rust code.

The internal rustc_allowed_through_unstable_modules attribute must be used on an item with a stable attribute.

Erroneous code example:

#![allow(unused)] fn main() { // NOTE: both of these attributes are perma-unstable and should *never* be // used outside of the compiler and standard library. #![feature(rustc_attrs)] #![feature(staged_api)] #![allow(internal_features)] #![unstable(feature = "foo_module", reason = "...", issue = "123")] #[rustc_allowed_through_unstable_modules = "deprecation message"] // #[stable(feature = "foo", since = "1.0")] struct Foo; // ^^^ error: `rustc_allowed_through_unstable_modules` attribute must be // paired with a `stable` attribute }

Typically when an item is marked with a stable attribute, the modules that enclose the item must also be marked with stable attributes, otherwise the item becomes de facto unstable. #[rustc_allowed_through_unstable_modules] is a workaround which allows an item to "escape" its unstable parent modules. This error occurs when an item is marked with #[rustc_allowed_through_unstable_modules] but no supplementary stable attribute exists. See #99288 for an example of #[rustc_allowed_through_unstable_modules] in use.