mirror of
https://github.com/rust-lang/rust
synced 2024-09-15 22:50:55 +00:00
Update docs to reflect new export forms
This commit is contained in:
parent
368daf8b5a
commit
cd9b344f7b
38
doc/rust.md
38
doc/rust.md
|
@ -761,7 +761,9 @@ fn main() {
|
||||||
##### Export declarations
|
##### Export declarations
|
||||||
|
|
||||||
~~~~~~~~ {.ebnf .gram}
|
~~~~~~~~ {.ebnf .gram}
|
||||||
export_decl : "export" ident [ ',' ident ] * ;
|
export_decl : "export" ident [ ',' ident ] *
|
||||||
|
| "export" ident "::{}"
|
||||||
|
| "export" ident '{' ident [ ',' ident ] * '}' ;
|
||||||
~~~~~~~~
|
~~~~~~~~
|
||||||
|
|
||||||
An _export declaration_ restricts the set of local names within a module that
|
An _export declaration_ restricts the set of local names within a module that
|
||||||
|
@ -813,6 +815,40 @@ mod foo {
|
||||||
}
|
}
|
||||||
~~~~~~~~
|
~~~~~~~~
|
||||||
|
|
||||||
|
When exporting the name of an `enum` type `t`, by default, the module also
|
||||||
|
implicitly exports all of `t`'s constructors. For example:
|
||||||
|
|
||||||
|
~~~~~~~~
|
||||||
|
mod foo {
|
||||||
|
export t;
|
||||||
|
|
||||||
|
enum t {a, b, c};
|
||||||
|
}
|
||||||
|
~~~~~~~~
|
||||||
|
|
||||||
|
Here, `foo` imports `t`, `a`, `b`, and `c`.
|
||||||
|
|
||||||
|
The second and third forms of export declaration can be used to export
|
||||||
|
an `enum` item without exporting all of its constructors. These two
|
||||||
|
forms can only be used to export an `enum` item. The second form
|
||||||
|
exports the `enum` type name without exporting any of its
|
||||||
|
constructors, achieving a simple kind of data abstraction. The third
|
||||||
|
form exports an `enum` type name along with a subset of its
|
||||||
|
constructors. For example:
|
||||||
|
|
||||||
|
~~~~~~~~
|
||||||
|
mod foo {
|
||||||
|
export abstract{};
|
||||||
|
export slightly_abstract{a, b};
|
||||||
|
|
||||||
|
enum abstract {x, y, z}
|
||||||
|
enum slightly_abstract {a, b, c, d}
|
||||||
|
}
|
||||||
|
~~~~~~~~
|
||||||
|
|
||||||
|
Module `foo` exports the types `abstract` and `slightly_abstract`, as well as
|
||||||
|
constructors `a` and `b`, but doesn't export constructors `x`, `y`, `z`, `c`,
|
||||||
|
or `d`.
|
||||||
|
|
||||||
### Functions
|
### Functions
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue