Skip to content

Commit

Permalink
Add explanation of main to rustdoc docs
Browse files Browse the repository at this point in the history
Fixes #17554
  • Loading branch information
steveklabnik committed Jan 15, 2015
1 parent b21a6da commit 462dd64
Showing 1 changed file with 29 additions and 0 deletions.
29 changes: 29 additions & 0 deletions src/doc/rustdoc.md
Original file line number Diff line number Diff line change
Expand Up @@ -217,6 +217,35 @@ spawn(move || { fib(200); })
The documentation online would look like `spawn(move || { fib(200); })`, but when
testing this code, the `fib` function will be included (so it can compile).

Rustdoc will automatically add a `main()` wrapper around your code, and in the right
place. For example:

```
/// ```
/// use std::rc::Rc;
///
/// let five = Rc::new(5);
/// ```
# fn foo() {}
```

This will end up testing:

```
fn main() {
use std::rc::Rc;
let five = Rc::new(5);
}
```

Here's the full algorithm:

1. Given a code block, if it does not contain `fn main`, it is wrapped in `fn main() { your_code }`
2. Given that result, if it contains no `extern crate` directives but it also
contains the name of the crate being tested, then `extern crate <name>` is
injected at the top.
3. Some common `allow` attributes are added for documentation examples at the top.

## Running tests (advanced)

Running tests often requires some special configuration to filter tests, find
Expand Down

0 comments on commit 462dd64

Please sign in to comment.