/// Asserts that a given configuration is set. /// /// # Examples /// /// A project will simply fail to compile if the given configuration is not set. /// /// ``` /// # #[macro_use] extern crate static_assertions; fn main() {} /// // We're not masochists /// # #[cfg(not(target_pointer_width = "16"))] // Just in case /// 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: /// /// ``` /// # #[macro_use] extern crate static_assertions; fn main() {} /// # #[cfg(any(unix, windows))] /// assert_cfg!(any(unix, windows), "There is only support for Unix or Windows"); /// /// // User needs to specify a database back-end /// # #[cfg(target_pointer_width = "0")] // Impossible /// 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: /// /// ```compile_fail /// # #[macro_use] extern crate static_assertions; fn main() {} /// assert_cfg!(all(target_os = "macos", /// target_os = "windows"), /// "No, that's not how it works! ಠ_ಠ"); /// ``` #[macro_export]
macro_rules! assert_cfg {
() => {};
($($cfg:meta)+, $msg:expr $(,)?) => { #[cfg(not($($cfg)+))]
compile_error!($msg);
};
($($cfg:tt)*) => { #[cfg(not($($cfg)*))]
compile_error!(concat!("Cfg does not pass: ", stringify!($($cfg)*)));
};
}
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.