static_assertions

Macro assert_cfg

Source
macro_rules! assert_cfg {
    () => { ... };
    ($($cfg:meta)+, $msg:expr $(,)?) => { ... };
    ($($cfg:tt)*) => { ... };
}
Expand description

Asserts that a given configuration is set.

§Examples

A project will simply fail to compile if the given configuration is not set.

// We're not masochists
assert_cfg!(not(target_pointer_width = "16"));

If a project does not support a set of configurations, you may want to report why. There is the option of providing a compile error message string:

assert_cfg!(any(unix, windows), "There is only support for Unix or Windows");

// User needs to specify a database back-end
assert_cfg!(all(not(all(feature = "mysql", feature = "mongodb")),
                any(    feature = "mysql", feature = "mongodb")),
            "Must exclusively use MySQL or MongoDB as database back-end");

Some configurations are impossible. For example, we can’t be compiling for both macOS and Windows simultaneously:

assert_cfg!(all(target_os = "macos",
                target_os = "windows"),
            "No, that's not how it works! ಠ_ಠ");