rust/doc
bors 5aca7d6aef auto merge of #5137 : yjh0502/rust/empty_struct, r=nikomatsakis
The fix is straight-forward, but there are several changes
while fixing the issue.

1) disallow `mut` keyword when making a new struct

In code base, there are following code,

```rust
struct Foo { mut a: int };
let a = Foo { mut a: 1 };
```

This is because of structural record, which is
deprecated corrently (see issue #3089) In structural
record, `mut` keyword should be allowd to control
mutability. But without structural record, we don't
need to allow `mut` keyword while constructing struct.

2) disallow structural records in parser level
This is related to 1). With structural records, there
is an ambiguity between empty block and empty struct
To solve the problem, I change parser to stop parsing
structural records. I think this is not a problem,
because structural records are not compiled already.

Misc. issues

There is an ambiguity between empty struct vs. empty match stmt.
with following code,

```rust
match x{} {}
```

Two interpretation is possible, which is listed blow

```rust
match (x{}) {} //  matching with newly-constructed empty struct
(match x{}) {}  //  matching with empty enum(or struct) x
                //  and then empty block
```

It seems that there is no such code in rust code base, but
there is one test which uses empty match statement:
https://github.com/mozilla/rust/blob/incoming/src/test/run-pass/issue-3037.rs

All other cases could be distinguished with look-ahead,
but this can't be. One possible solution is wrapping with
parentheses when matching with an uninhabited type.

```rust
enum what { }
fn match_with_empty(x: what) -> ~str {
    match (x) { //use parentheses to remove the ambiguity
    }
}
```
2013-03-02 04:21:38 -08:00
..
lib Remove fail keyword from lexer & parser and clean up remaining calls to 2013-02-01 00:15:42 -08:00
lib.css
manual.css Display the full TOC in the manual. Closes #4194 2012-12-14 18:06:21 -08:00
prep.js fix escape 2012-10-05 12:41:00 -07:00
README Added a readme explaining how to generate html from markdown docs w/o node 2012-11-18 09:08:31 -08:00
rust.css docs: Tweak style 2012-09-30 21:35:32 -07:00
rust.md auto merge of #5137 : yjh0502/rust/empty_struct, r=nikomatsakis 2013-03-02 04:21:38 -08:00
tutorial-borrowed-ptr.md Remove REC, change related tests/docs 2013-03-02 12:57:05 +09:00
tutorial-ffi.md doc: Remove references to mut fields. rs=demuting 2013-02-26 10:02:36 -08:00
tutorial-macros.md remove die definition and use in doc tests 2013-02-14 17:33:16 -08:00
tutorial-tasks.md Fix unused imports in the tutorials 2013-02-26 17:52:16 -05:00
tutorial.md librustc: Enforce cross-crate method privacy 2013-02-28 11:32:26 -08:00
version_info.html.template

The markdown docs are only generated by make when node is installed (use
`make doc`). If you don't have node installed you can generate them yourself. 
Unfortunately there's no real standard for markdown and all the tools work 
differently. pandoc is one that seems to work well.

To generate an html version of a doc do something like:
pandoc --from=markdown --to=html --number-sections -o build/doc/rust.html doc/rust.md && git web--browse build/doc/rust.html

The syntax for pandoc flavored markdown can be found at:
http://johnmacfarlane.net/pandoc/README.html#pandocs-markdown

A nice quick reference (for non-pandoc markdown) is at:
http://kramdown.rubyforge.org/quickref.html