@@ -213,8 +213,8 @@ Let's discuss our sample example documentation:
213
213
```
214
214
215
215
You'll notice that you don't need a ` fn main() ` or anything here. ` rustdoc ` will
216
- automatically add a ` main() ` wrapper around your code, and in the right place.
217
- For example:
216
+ automatically add a ` main() ` wrapper around your code, using heuristics to attempt
217
+ to put it in the right place. For example:
218
218
219
219
``` rust
220
220
/// ```
@@ -242,11 +242,18 @@ Here's the full algorithm rustdoc uses to preprocess examples:
242
242
` unused_attributes ` , and ` dead_code ` . Small examples often trigger
243
243
these lints.
244
244
3 . If the example does not contain ` extern crate ` , then `extern crate
245
- <mycrate >;` is inserted.
246
- 2 . Finally, if the example does not contain ` fn main ` , the remainder of the
247
- text is wrapped in ` fn main() { your_code } `
248
-
249
- Sometimes, this isn't enough, though. For example, all of these code samples
245
+ <mycrate >;` is inserted (note the lack of ` #[ macro_use] `).
246
+ 4 . Finally, if the example does not contain ` fn main ` , the remainder of the
247
+ text is wrapped in ` fn main() { your_code } ` .
248
+
249
+ This generated ` fn main ` can be a problem! If you have ` extern crate ` or a ` mod `
250
+ statements in the example code that are referred to by ` use ` statements, they will
251
+ fail to resolve unless you include at least ` fn main() {} ` to inhibit step 4.
252
+ ` #[macro_use] extern crate ` also does not work except at the crate root, so when
253
+ testing macros an explicit ` main ` is always required. It doesn't have to clutter
254
+ up your docs, though -- keep reading!
255
+
256
+ Sometimes this algorithm isn't enough, though. For example, all of these code samples
250
257
with ` /// ` we've been talking about? The raw text:
251
258
252
259
``` text
@@ -370,8 +377,8 @@ macro_rules! panic_unless {
370
377
371
378
You’ll note three things: we need to add our own ` extern crate ` line, so that
372
379
we can add the ` #[macro_use] ` attribute. Second, we’ll need to add our own
373
- ` main() ` as well. Finally, a judicious use of ` # ` to comment out those two
374
- things, so they don’t show up in the output.
380
+ ` main() ` as well (for reasons discussed above) . Finally, a judicious use of
381
+ ` # ` to comment out those two things, so they don’t show up in the output.
375
382
376
383
Another case where the use of ` # ` is handy is when you want to ignore
377
384
error handling. Lets say you want the following,
0 commit comments