Skip to content

Commit 15a0299

Browse files
authored
many small grammatical and stylistic changes
grammatical: "Here's" should be "Here are", "rules" is plural. stylistic: "rules for" is more idiomatic than "rules about". grammatical: No verb in "One or the other"; changed to "It's one or the other". code: added implied `fn main() { ... }` because it is referenced in "note: previous borrow ends here" semantic: "But" seems like the wrong word here, there is now, contrast, only further explanation. "so", "thus" or "therefor" is clearer. grammatical: Another misuse of "Here's", should be "Here are" (or possibly "Here're"). grammatical: "use" should be capitalized. All other subheadings capitalize the first word.
1 parent 9dd5540 commit 15a0299

File tree

1 file changed

+21
-17
lines changed

1 file changed

+21
-17
lines changed

src/doc/book/references-and-borrowing.md

Lines changed: 21 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -179,7 +179,7 @@ As it turns out, there are rules.
179179

180180
# The Rules
181181

182-
Here’s the rules about borrowing in Rust:
182+
Here are the rules for borrowing in Rust:
183183

184184
First, any borrow must last for a scope no greater than that of the owner.
185185
Second, you may have one or the other of these two kinds of borrows, but not
@@ -208,12 +208,14 @@ With this in mind, let’s consider our example again.
208208
Here’s the code:
209209

210210
```rust,ignore
211-
let mut x = 5;
212-
let y = &mut x;
211+
fn main() {
212+
let mut x = 5;
213+
let y = &mut x;
213214
214-
*y += 1;
215+
*y += 1;
215216
216-
println!("{}", x);
217+
println!("{}", x);
218+
}
217219
```
218220

219221
This code gives us this error:
@@ -225,7 +227,7 @@ error: cannot borrow `x` as immutable because it is also borrowed as mutable
225227
```
226228

227229
This is because we’ve violated the rules: we have a `&mut T` pointing to `x`,
228-
and so we aren’t allowed to create any `&T`s. One or the other. The note
230+
and so we aren’t allowed to create any `&T`s. It's one or the other. The note
229231
hints at how to think about this problem:
230232

231233
```text
@@ -243,14 +245,16 @@ In Rust, borrowing is tied to the scope that the borrow is valid for. And our
243245
scopes look like this:
244246

245247
```rust,ignore
246-
let mut x = 5;
247-
248-
let y = &mut x; // -+ &mut borrow of x starts here
249-
// |
250-
*y += 1; // |
251-
// |
252-
println!("{}", x); // -+ - try to borrow x here
253-
// -+ &mut borrow of x ends here
248+
fn main() {
249+
let mut x = 5;
250+
251+
let y = &mut x; // -+ &mut borrow of x starts here
252+
// |
253+
*y += 1; // |
254+
// |
255+
println!("{}", x); // -+ - try to borrow x here
256+
} // -+ &mut borrow of x ends here
257+
254258
```
255259

256260
The scopes conflict: we can’t make an `&x` while `y` is in scope.
@@ -269,12 +273,12 @@ println!("{}", x); // <- try to borrow x here
269273
```
270274

271275
There’s no problem. Our mutable borrow goes out of scope before we create an
272-
immutable one. But scope is the key to seeing how long a borrow lasts for.
276+
immutable one. So scope is the key to seeing how long a borrow lasts for.
273277

274278
## Issues borrowing prevents
275279

276280
Why have these restrictive rules? Well, as we noted, these rules prevent data
277-
races. What kinds of issues do data races cause? Here’s a few.
281+
races. What kinds of issues do data races cause? Here are a few.
278282

279283
### Iterator invalidation
280284

@@ -323,7 +327,7 @@ for i in &v {
323327

324328
We can’t modify `v` because it’s borrowed by the loop.
325329

326-
### use after free
330+
### Use after free
327331

328332
References must not live longer than the resource they refer to. Rust will
329333
check the scopes of your references to ensure that this is true.

0 commit comments

Comments
 (0)