Skip to content

Commit ad4afd2

Browse files
committed
Rollup merge of #51153 - ogham:panic-and-compile_error-docs, r=GuillaumeGomez
Link panic and compile_error docs This adds documentation links between `panic!()` and `compile_error!()` as per #47275, which points out that they’re similar. It also adds a sentence to the `compile_error()` docs I thought could be added.
2 parents cc3f603 + 1d7a0df commit ad4afd2

File tree

1 file changed

+10
-2
lines changed

1 file changed

+10
-2
lines changed

src/libstd/macros.rs

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,10 +38,13 @@
3838
/// The multi-argument form of this macro panics with a string and has the
3939
/// [`format!`] syntax for building a string.
4040
///
41+
/// See also the macro [`compile_error!`], for raising errors during compilation.
42+
///
4143
/// [runwrap]: ../std/result/enum.Result.html#method.unwrap
4244
/// [`Option`]: ../std/option/enum.Option.html#method.unwrap
4345
/// [`Result`]: ../std/result/enum.Result.html
4446
/// [`format!`]: ../std/macro.format.html
47+
/// [`compile_error!`]: ../std/macro.compile_error.html
4548
/// [book]: ../book/second-edition/ch09-01-unrecoverable-errors-with-panic.html
4649
///
4750
/// # Current implementation
@@ -286,13 +289,16 @@ pub mod builtin {
286289
/// Unconditionally causes compilation to fail with the given error message when encountered.
287290
///
288291
/// This macro should be used when a crate uses a conditional compilation strategy to provide
289-
/// better error messages for erroneous conditions.
292+
/// better error messages for erroneous conditions. It's the compiler-level form of [`panic!`],
293+
/// which emits an error at *runtime*, rather than during compilation.
290294
///
291295
/// # Examples
292296
///
293297
/// Two such examples are macros and `#[cfg]` environments.
294298
///
295-
/// Emit better compiler error if a macro is passed invalid values.
299+
/// Emit better compiler error if a macro is passed invalid values. Without the final branch,
300+
/// the compiler would still emit an error, but the error's message would not mention the two
301+
/// valid values.
296302
///
297303
/// ```compile_fail
298304
/// macro_rules! give_me_foo_or_bar {
@@ -313,6 +319,8 @@ pub mod builtin {
313319
/// #[cfg(not(any(feature = "foo", feature = "bar")))]
314320
/// compile_error!("Either feature \"foo\" or \"bar\" must be enabled for this crate.")
315321
/// ```
322+
///
323+
/// [`panic!`]: ../std/macro.panic.html
316324
#[stable(feature = "compile_error_macro", since = "1.20.0")]
317325
#[macro_export]
318326
macro_rules! compile_error {

0 commit comments

Comments
 (0)