Refactor to keep rand version 0.3.0

changed paragraphs with discussion of Cargo.lock file to agree with rand version 0.3.0 in the Cargo.tom file.
This commit is contained in:
Ben Gesoff 2015-05-07 14:48:44 +01:00
parent 7150d3cd9e
commit 0bc6fe5ea0

View file

@ -352,17 +352,16 @@ add these few lines at the bottom:
```toml
[dependencies]
rand="*"
rand="0.3.0"
```
The `[dependencies]` section of `Cargo.toml` is like the `[package]` section:
everything that follows it is part of it, until the next section starts.
Cargo uses the dependencies section to know what dependencies on external
crates you have, and what versions you require. In this case, weve used `*`,
which means that well use the latest version of `rand`. Cargo understands
[Semantic Versioning][semver], which is a standard for writing version
numbers. If we wanted a specific version or range of versions, we could be
more specific here. [Cargos documentation][cargodoc] contains more details.
crates you have, and what versions you require. In this case, weve used version `0.3.0`.
Cargo understands [Semantic Versioning][semver], which is a standard for writing version
numbers. If we wanted to use the latest version we could use `*` or we could use a range
of versions. [Cargos documentation][cargodoc] contains more details.
[semver]: http://semver.org
[cargodoc]: http://doc.crates.io/crates-io.html
@ -372,15 +371,13 @@ Now, without changing any of our code, lets build our project:
```bash
$ cargo build
Updating registry `https://github.com/rust-lang/crates.io-index`
Downloading rand v0.3.8
Downloading rand v0.3.0
Downloading libc v0.1.6
Compiling libc v0.1.6
Compiling rand v0.3.8
Compiling rand v0.3.0
Compiling guessing_game v0.1.0 (file:///home/you/projects/guessing_game)
```
(You may see different versions, of course.)
Lots of new output! Now that we have an external dependency, Cargo fetches the
latest versions of everything from the registry, which is a copy of data from
[Crates.io][cratesio]. Crates.io is where people in the Rust ecosystem
@ -410,11 +407,11 @@ $ cargo build
Compiling guessing_game v0.1.0 (file:///home/you/projects/guessing_game)
```
So, we told Cargo we wanted any version of `rand`, and so it fetched the latest
version at the time this was written, `v0.3.8`. But what happens when next
week, version `v0.3.9` comes out, with an important bugfix? While getting
bugfixes is important, what if `0.3.9` contains a regression that breaks our
code?
Let's pretend that we told Cargo we wanted the latest version of `rand` (using `*`)
for a bit. It would have fetched `v0.3.8` (at the time this was written).
But what happens when next week, version `v0.3.9` comes out, with an important
bugfix? While getting bugfixes is important, what if `0.3.9` contains a regression
that breaks our code?
The answer to this problem is the `Cargo.lock` file youll now find in your
project directory. When you build your project for the first time, Cargo
@ -422,7 +419,7 @@ figures out all of the versions that fit your criteria, and then writes them
to the `Cargo.lock` file. When you build your project in the future, Cargo
will see that the `Cargo.lock` file exists, and then use that specific version
rather than do all the work of figuring out versions again. This lets you
have a repeatable build automatically. In other words, well stay at `0.3.8`
have a repeatable build automatically. In other words, well stay at `0.3.0`
until we explicitly upgrade, and so will anyone who we share our code with,
thanks to the lock file.
@ -442,7 +439,8 @@ projects which are assembled out of a number of sub-packages.
[doccargo]: http://doc.crates.io
[doccratesio]: http://doc.crates.io/crates-io.html
Lets get on to actually _using_ `rand`. Heres our next step:
Lets get on to actually _using_ `rand`. Keep the version as `0.3.0` for this
project. Heres our next step:
```rust,ignore
extern crate rand;