From 44c343be45ef0ef68f456eeb8f5a07fa46eb599b Mon Sep 17 00:00:00 2001 From: Havvy Date: Mon, 4 Dec 2017 21:55:24 -0800 Subject: [PATCH] Give compile_error macro examples --- src/libcore/macros.rs | 4 ++-- src/libstd/macros.rs | 21 +++++++++++++++++++-- 2 files changed, 21 insertions(+), 4 deletions(-) diff --git a/src/libcore/macros.rs b/src/libcore/macros.rs index 6e3dbcbec9d..fe2df226115 100644 --- a/src/libcore/macros.rs +++ b/src/libcore/macros.rs @@ -596,9 +596,9 @@ mod builtin { /// Unconditionally causes compilation to fail with the given error message when encountered. /// - /// For more information, see the [RFC]. + /// For more information, see the documentation for [`std::compile_error!`]. /// - /// [RFC]: https://github.com/rust-lang/rfcs/blob/master/text/1695-add-error-macro.md + /// [`std::compile_error!`]: ../std/macro.compile_error.html #[stable(feature = "compile_error_macro", since = "1.20.0")] #[macro_export] #[cfg(dox)] diff --git a/src/libstd/macros.rs b/src/libstd/macros.rs index 7d62f94056f..85785270811 100644 --- a/src/libstd/macros.rs +++ b/src/libstd/macros.rs @@ -282,9 +282,26 @@ pub mod builtin { /// Unconditionally causes compilation to fail with the given error message when encountered. /// - /// For more information, see the [RFC]. + /// This macro should be used when a crate uses a conditional compilation strategy to provide + /// better error messages for errornous conditions. /// - /// [RFC]: https://github.com/rust-lang/rfcs/blob/master/text/1695-add-error-macro.md + /// # Examples + /// Two such examples are macros and `#[cfg]` environments. + /// + /// ``` + /// macro_rules! give_me_foo_or_bar { + /// (foo) => {}; + /// (bar) => {}; + /// ($x:ident) => { + /// compile_error!("This macro only accepts `foo` or `bar`"); + /// } + /// } + /// ``` + /// + /// ```compile_fail + /// #[cfg(not(any(feature = "foo", feature = "bar")))] + /// compile_error!("Either feature \"foo\" or \"bar\" must be enabled for this crate.") + /// ``` #[stable(feature = "compile_error_macro", since = "1.20.0")] #[macro_export] macro_rules! compile_error { ($msg:expr) => ({ /* compiler built-in */ }) }