Skip to content

book: miscellaneous improvements to "dining philosophers" example #29651

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
Nov 28, 2015
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 8 additions & 5 deletions src/doc/book/dining-philosophers.md
Original file line number Diff line number Diff line change
Expand Up @@ -148,7 +148,7 @@ short strings anyway.
One last thing you’ll notice: we just define a `Philosopher`, and seemingly
don’t do anything with it. Rust is an ‘expression based’ language, which means
that almost everything in Rust is an expression which returns a value. This is
true of functions as well, the last expression is automatically returned. Since
true of functions as well the last expression is automatically returned. Since
we create a new `Philosopher` as the last expression of this function, we end
up returning it.

Expand Down Expand Up @@ -178,8 +178,8 @@ fn main() {
}
```

Here, we create five variable bindings with five new philosophers. These are my
favorite five, but you can substitute anyone you want. If we _didn’t_ define
Here, we create five variable bindings with five new philosophers.
If we _didn’t_ define
that `new()` function, it would look like this:

```rust
Expand Down Expand Up @@ -440,10 +440,13 @@ closure as an argument and calls that closure on each element in turn.
Here’s where the concurrency happens. The `thread::spawn` function takes a closure
as an argument and executes that closure in a new thread. This closure needs
an extra annotation, `move`, to indicate that the closure is going to take
ownership of the values it’s capturing. Primarily, the `p` variable of the
ownership of the values it’s capturing. In this case, it's the `p` variable of the
`map` function.

Inside the thread, all we do is call `eat()` on `p`. Also note that the call to `thread::spawn` lacks a trailing semicolon, making this an expression. This distinction is important, yielding the correct return value. For more details, read [Expressions vs. Statements][es].
Inside the thread, all we do is call `eat()` on `p`. Also note that
the call to `thread::spawn` lacks a trailing semicolon, making this an
expression. This distinction is important, yielding the correct return
value. For more details, read [Expressions vs. Statements][es].

[es]: functions.html#expressions-vs-statements

Expand Down