# 1.20.0[−][src]Macro std::compile_error

    macro_rules! compile_error {
        ($msg:expr) => { ... };
        ($msg:expr,) => { ... };
    }

Unconditionally causes compilation to fail with the given error message when encountered.

This macro should be used when a crate uses a conditional compilation strategy to provide better error messages for erroneous conditions. It's the compiler-level form of `panic!`, which emits an error at runtime, rather than during compilation.

# Examples

Two such examples are macros and `#[cfg]` environments.

Emit better compiler error if a macro is passed invalid values. Without the final branch, the compiler would still emit an error, but the error's message would not mention the two valid values.

ⓘThis example deliberately fails to compile

    macro_rules! give_me_foo_or_bar {
        (foo) => {};
        (bar) => {};
        ($x:ident) => {
            compile_error!("This macro only accepts `foo` or `bar`");
        }
    }

    give_me_foo_or_bar!(neither);
    // ^ will fail at compile time with message "This macro only accepts `foo` or `bar`"Run

Emit compiler error if one of a number of features isn't available.

ⓘThis example deliberately fails to compile

    #[cfg(not(any(feature = "foo", feature = "bar")))]
    compile_error!("Either feature \"foo\" or \"bar\" must be enabled for this crate.")Run

# Help

## Keyboard Shortcuts

`?`
  Show this help dialog
`S`
  Focus the search field
`↑`
  Move up in search results
`↓`
  Move down in search results
`↹`
  Switch tab
`⏎`
  Go to active search result
`+`
  Expand all sections
`-`
  Collapse all sections

## Search Tricks

Prefix searches with a type followed by a colon (e.g. `fn:`) to restrict the search to a given type.

Accepted types are: `fn`, `mod`, `struct`, `enum`, `trait`, `type`, `macro`, and `const`.

Search functions by type signature (e.g. `vec -> usize` or `* -> vec`)

Search multiple things at once by splitting your query with comma (e.g. `str,u8` or `String,struct:Vec,test`)