about summary refs log tree commit diff
diff options
context:
space:
mode:
authorSteve Klabnik <steve@steveklabnik.com>2015-03-23 17:05:45 -0400
committerSteve Klabnik <steve@steveklabnik.com>2015-03-23 17:05:45 -0400
commit71b9ba1e5b243e52b7c2828e35137eeba378d43f (patch)
tree5310a054a46477b1e696a513ba9b19bf7ef4dfb3
parent8b6c0fd410ac118e5159b727f33649af5d5442fa (diff)
parentfbc823d1e337e546b5bf7e6fc53f26b51a8583f2 (diff)
downloadrust-71b9ba1e5b243e52b7c2828e35137eeba378d43f.tar.gz
rust-71b9ba1e5b243e52b7c2828e35137eeba378d43f.zip
Rollup merge of #23618 - steveklabnik:gh23571, r=alexcrichton
Fixes #23571
-rw-r--r--src/doc/trpl/documentation.md35
1 files changed, 35 insertions, 0 deletions
diff --git a/src/doc/trpl/documentation.md b/src/doc/trpl/documentation.md
index 8e5b3b6a7f0..7300753cc66 100644
--- a/src/doc/trpl/documentation.md
+++ b/src/doc/trpl/documentation.md
@@ -333,6 +333,41 @@ By repeating all parts of the example, you can ensure that your example still
 compiles, while only showing the parts that are relevant to that part of your
 explanation.
 
+### Documenting macros
+
+Here’s an example of documenting a macro:
+
+```
+/// Panic with a given message unless an expression evaluates to true.
+///
+/// # Examples
+///
+/// ```
+/// # #[macro_use] extern crate foo;
+/// # fn main() {
+/// panic_unless!(1 + 1 == 2, “Math is broken.”);
+/// # }
+/// ```
+///
+/// ```should_fail
+/// # #[macro_use] extern crate foo;
+/// # fn main() {
+/// panic_unless!(true == false, “I’m broken.”);
+/// # }
+/// ```
+#[macro_export]
+macro_rules! panic_unless {
+    ($condition:expr, $($rest:expr),+) => ({ if ! $condition { panic!($($rest),+); } });
+} 
+```
+
+You’ll note three things: we need to add our own `extern crate` line, so that
+we can add the `#[macro_use]` attribute. Second, we’ll need to add our own
+`main()` as well. Finally, a judicious use of `#` to comment out those two
+things, so they don’t show up in the output.
+
+### Running documentation tests
+
 To run the tests, either
 
 ```bash