Skip to content

Commit

Permalink
auto merge of rust-lang#11584 : alexcrichton/rust/issue-3862, r=brson
Browse files Browse the repository at this point in the history
Turns out there is no documentation of a block expression in the rust manual currently! I deleted the "record expressions" section to make room for a "block expressions" section.

Closes rust-lang#3862
  • Loading branch information
bors committed Jan 17, 2014
2 parents 80a3f45 + 421d245 commit 58a15f3
Showing 1 changed file with 17 additions and 5 deletions.
22 changes: 17 additions & 5 deletions doc/rust.md
Original file line number Diff line number Diff line change
Expand Up @@ -806,7 +806,9 @@ path_glob : ident [ "::" path_glob ] ?

A _use declaration_ creates one or more local name bindings synonymous
with some other [path](#paths).
Usually a `use` declaration is used to shorten the path required to refer to a module item.
Usually a `use` declaration is used to shorten the path required to refer to a
module item. These declarations may appear at the top of [modules](#modules) and
[blocks](#blocks).

*Note*: Unlike in many languages,
`use` declarations in Rust do *not* declare linkage dependency with external crates.
Expand Down Expand Up @@ -2318,14 +2320,24 @@ let base = Point3d {x: 1, y: 2, z: 3};
Point3d {y: 0, z: 10, .. base};
~~~~

### Record expressions
### Block expressions

~~~~ {.ebnf .gram}
rec_expr : '{' ident ':' expr
[ ',' ident ':' expr ] *
[ ".." expr ] '}'
block_expr : '{' [ view_item ] *
[ stmt ';' | item ] *
[ expr ] '}'
~~~~

A _block expression_ is similar to a module in terms of the declarations that
are possible. Each block conceptually introduces a new namespace scope. View
items can bring new names into scopes and declared items are in scope for only
the block itself.

A block will execute each statement sequentially, and then execute the
expression (if given). If the final expression is omitted, the type and return
value of the block are `()`, but if it is provided, the type and return value
of the block are that of the expression itself.

### Method-call expressions

~~~~ {.ebnf .gram}
Expand Down

0 comments on commit 58a15f3

Please sign in to comment.