Skip to content

Commit 56f1a67

Browse files
committed
Guide: Iterators, Macros and Unsafe wording fixes
1 parent cb943b7 commit 56f1a67

File tree

1 file changed

+16
-16
lines changed

1 file changed

+16
-16
lines changed

src/doc/guide.md

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -4418,7 +4418,7 @@ see why consumers matter.
44184418

44194419
As we've said before, an iterator is something that we can call the `.next()`
44204420
method on repeatedly, and it gives us a sequence of things. Because you need
4421-
to call the method, this means that iterators are **lazy**. This code, for
4421+
to call the method, this means that iterators can be **lazy** and don't need to generate all of the values upfront. This code, for
44224422
example, does not actually generate the numbers `1-100`, and just creates a
44234423
value that represents the sequence:
44244424

@@ -4427,7 +4427,7 @@ let nums = range(1i, 100i);
44274427
```
44284428

44294429
Since we didn't do anything with the range, it didn't generate the sequence.
4430-
Once we add the consumer:
4430+
Let's add the consumer:
44314431

44324432
```{rust}
44334433
let nums = range(1i, 100i).collect::<Vec<int>>();
@@ -4456,8 +4456,8 @@ std::iter::count(1i, 5i);
44564456
```
44574457

44584458
This iterator counts up from one, adding five each time. It will give
4459-
you a new integer every time, forever. Well, technically, until the
4460-
maximum number that an `int` can represent. But since iterators are lazy,
4459+
you a new integer every time, forever (well, technically, until it reaches the
4460+
maximum number representable by an `int`). But since iterators are lazy,
44614461
that's okay! You probably don't want to use `collect()` on it, though...
44624462

44634463
That's enough about iterators. Iterator adapters are the last concept
@@ -5199,8 +5199,8 @@ to do something that it can't currently do? You may be able to write a macro
51995199
to extend Rust's capabilities.
52005200

52015201
You've already used one macro extensively: `println!`. When we invoke
5202-
a Rust macro, we need to use the exclamation mark (`!`). There's two reasons
5203-
that this is true: the first is that it makes it clear when you're using a
5202+
a Rust macro, we need to use the exclamation mark (`!`). There are two reasons
5203+
why this is so: the first is that it makes it clear when you're using a
52045204
macro. The second is that macros allow for flexible syntax, and so Rust must
52055205
be able to tell where a macro starts and ends. The `!(...)` helps with this.
52065206

@@ -5215,7 +5215,7 @@ println!("x is: {}", x);
52155215

52165216
The `println!` macro does a few things:
52175217

5218-
1. It parses the string to find any `{}`s
5218+
1. It parses the string to find any `{}`s.
52195219
2. It checks that the number of `{}`s matches the number of other arguments.
52205220
3. It generates a bunch of Rust code, taking this in mind.
52215221

@@ -5224,8 +5224,8 @@ Rust will generate code that takes all of the types into account. If
52245224
`println!` was a function, it could still do this type checking, but it
52255225
would happen at run time rather than compile time.
52265226

5227-
We can check this out using a special flag to `rustc`. This code, in a file
5228-
`print.rs`:
5227+
We can check this out using a special flag to `rustc`. Put this code in a file
5228+
called `print.rs`:
52295229

52305230
```{rust}
52315231
fn main() {
@@ -5234,7 +5234,7 @@ fn main() {
52345234
}
52355235
```
52365236

5237-
Can have its macros expanded like this: `rustc print.rs --pretty=expanded`, will
5237+
You can have the macros expanded like this: `rustc print.rs --pretty=expanded` – which will
52385238
give us this huge result:
52395239

52405240
```{rust,ignore}
@@ -5273,12 +5273,12 @@ invoke the `println_args` function with the generated arguments.
52735273
This is the code that Rust actually compiles. You can see all of the extra
52745274
information that's here. We get all of the type safety and options that it
52755275
provides, but at compile time, and without needing to type all of this out.
5276-
This is how macros are powerful. Without them, you would need to type all of
5277-
this by hand to get a type checked `println`.
5276+
This is how macros are powerful: without them you would need to type all of
5277+
this by hand to get a type-checked `println`.
52785278

52795279
For more on macros, please consult [the Macros Guide](guide-macros.html).
5280-
Macros are a very advanced and still slightly experimental feature, but don't
5281-
require a deep understanding to call, since they look just like functions. The
5280+
Macros are a very advanced and still slightly experimental feature, but they don't
5281+
require a deep understanding to be called, since they look just like functions. The
52825282
Guide can help you if you want to write your own.
52835283

52845284
# Unsafe
@@ -5295,8 +5295,8 @@ keyword, which indicates that the function may not behave properly.
52955295

52965296
Second, if you'd like to create some sort of shared-memory data structure, Rust
52975297
won't allow it, because memory must be owned by a single owner. However, if
5298-
you're planning on making access to that shared memory safe, such as with a
5299-
mutex, _you_ know that it's safe, but Rust can't know. Writing an `unsafe`
5298+
you're planning on making access to that shared memory safe such as with a
5299+
mutex _you_ know that it's safe, but Rust can't know. Writing an `unsafe`
53005300
block allows you to ask the compiler to trust you. In this case, the _internal_
53015301
implementation of the mutex is considered unsafe, but the _external_ interface
53025302
we present is safe. This allows it to be effectively used in normal Rust, while

0 commit comments

Comments
 (0)