1.20.0[][src]Macro std::compile_error

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

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!, but emits an error during compilation rather than at runtime.

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
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy