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:
parent
7150d3cd9e
commit
0bc6fe5ea0
1 changed files with 15 additions and 17 deletions
|
|
@ -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, we’ve used `*`,
|
||||
which means that we’ll 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. [Cargo’s documentation][cargodoc] contains more details.
|
||||
crates you have, and what versions you require. In this case, we’ve 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. [Cargo’s 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, let’s 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 you’ll 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, we’ll stay at `0.3.8`
|
||||
have a repeatable build automatically. In other words, we’ll 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
|
||||
|
||||
Let’s get on to actually _using_ `rand`. Here’s our next step:
|
||||
Let’s get on to actually _using_ `rand`. Keep the version as `0.3.0` for this
|
||||
project. Here’s our next step:
|
||||
|
||||
```rust,ignore
|
||||
extern crate rand;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue