diff options
| author | Alex Crichton <alex@alexcrichton.com> | 2014-01-15 14:44:47 -0800 |
|---|---|---|
| committer | Alex Crichton <alex@alexcrichton.com> | 2014-01-16 09:48:59 -0800 |
| commit | 421d24582d278c510fcaa8a3918d4eeff739f556 (patch) | |
| tree | 43a8b514733c74532338db6803e4894d2689457d /doc | |
| parent | 7bebdbd96826cc70c8e39d025a64b76cd64a2ee7 (diff) | |
| download | rust-421d24582d278c510fcaa8a3918d4eeff739f556.tar.gz rust-421d24582d278c510fcaa8a3918d4eeff739f556.zip | |
Document blocks and use statements a little more
Closes #3862
Diffstat (limited to 'doc')
| -rw-r--r-- | doc/rust.md | 22 |
1 files changed, 17 insertions, 5 deletions
diff --git a/doc/rust.md b/doc/rust.md index ac0f64acca9..ad93964d6aa 100644 --- a/doc/rust.md +++ b/doc/rust.md @@ -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. @@ -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} |
