Skip to content

Commit 2b5e81c

Browse files
committed
Reword some things in the macro tutorial.
1 parent 7f8e302 commit 2b5e81c

File tree

1 file changed

+9
-8
lines changed

1 file changed

+9
-8
lines changed

doc/tutorial-macros.md

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -25,9 +25,9 @@ match input_2 {
2525
# }
2626
~~~~
2727

28-
This code could become tiresome if repeated many times. However, there is no
29-
straightforward way to rewrite it without the repeated code, using functions
30-
alone. There is a solution, though: defining a macro to solve the problem. Macros are
28+
This code could become tiresome if repeated many times. However, no function
29+
can capture its functionality to make it possible to rewrite the repetition
30+
away. Rust's macro system, however, can eliminate the repetition. Macros are
3131
lightweight custom syntax extensions, themselves defined using the
3232
`macro_rules!` syntax extension. The following `early_return` macro captures
3333
the pattern in the above code:
@@ -65,7 +65,7 @@ macro. It appears on the left-hand side of the `=>` in a macro definition. It
6565
conforms to the following rules:
6666

6767
1. It must be surrounded by parentheses.
68-
2. `$` has special meaning.
68+
2. `$` has special meaning (described below).
6969
3. The `()`s, `[]`s, and `{}`s it contains must balance. For example, `([)` is
7070
forbidden.
7171

@@ -118,10 +118,11 @@ expression, `() => (let $x=$val)` is a macro that expands to a statement, and
118118
`() => (1,2,3)` is a macro that expands to a syntax errror).
119119

120120
Except for permissibility of `$name` (and `$(...)*`, discussed below), the
121-
right-hand side of a macro definition follows the same rules as ordinary
122-
Rust syntax. In particular, macro invocations (including invocations of the
123-
macro currently being defined) are permitted in expression, statement, and
124-
item locations.
121+
right-hand side of a macro definition is ordinary Rust syntax. In particular,
122+
macro invocations (including invocations of the macro currently being defined)
123+
are permitted in expression, statement, and item locations. However, nothing
124+
else about the code is examined or executed by the macro system; execution
125+
still has to wait until runtime.
125126

126127
## Interpolation location
127128

0 commit comments

Comments
 (0)