Use new Cargo file syntax

This commit is contained in:
Eduardo Bautista 2014-08-13 17:25:13 -05:00
parent 6d189220d1
commit c9284cedeb

View File

@ -342,7 +342,7 @@ Once you have this file in place, we should be ready to build! Try this:
```{bash}
$ cargo build
Compiling hello_world v0.1.0 (file:/home/yourname/projects/hello_world)
Compiling hello_world v0.1.0 (file:///home/yourname/projects/hello_world)
$ ./target/hello_world
Hello, world!
```
@ -486,7 +486,7 @@ You can use `cargo build` on the command line to build it. You'll get a warning,
but it will still print "Hello, world!":
```{ignore,notrust}
Compiling hello_world v0.1.0 (file:/home/you/projects/hello_world)
Compiling hello_world v0.1.0 (file:///home/you/projects/hello_world)
src/hello_world.rs:2:9: 2:10 warning: unused variable: `x`, #[warn(unused_variable)] on by default
src/hello_world.rs:2 let x: int;
^
@ -508,7 +508,7 @@ And try to build it. You'll get an error:
```{bash}
$ cargo build
Compiling hello_world v0.1.0 (file:/home/you/projects/hello_world)
Compiling hello_world v0.1.0 (file:///home/you/projects/hello_world)
src/hello_world.rs:4:39: 4:40 error: use of possibly uninitialized variable: `x`
src/hello_world.rs:4 println!("The value of x is: {}", x);
^
@ -1788,7 +1788,7 @@ Let's try compiling what Cargo gave us:
```{bash}
$ cargo build
Compiling guessing_game v0.0.1 (file:/home/you/projects/guessing_game)
Compiling guessing_game v0.0.1 (file:///home/you/projects/guessing_game)
$
```
@ -1901,7 +1901,7 @@ Let's try to compile this using `cargo build`:
```{notrust,no_run}
$ cargo build
Compiling guessing_game v0.0.1 (file:/home/you/projects/guessing_game)
Compiling guessing_game v0.0.1 (file:///home/you/projects/guessing_game)
src/main.rs:7:26: 7:34 error: the type of this value must be known in this context
src/main.rs:7 let secret_number = (rand::random() % 100i) + 1i;
^~~~~~~~
@ -1949,7 +1949,7 @@ fn main() {
```{notrust,ignore}
$ cargo build
Compiling guessing_game v0.0.1 (file:/home/you/projects/guessing_game)
Compiling guessing_game v0.0.1 (file:///home/you/projects/guessing_game)
$
```
@ -2008,7 +2008,7 @@ And trying it out:
```{notrust,ignore}
$ cargo build
Compiling guessing_game v0.0.1 (file:/home/you/projects/guessing_game)
Compiling guessing_game v0.0.1 (file:///home/you/projects/guessing_game)
$ ./target/guessing_game
Guess the number!
The secret number is: 57
@ -2063,7 +2063,7 @@ If we try to compile, we'll get some errors:
```{notrust,ignore}
$ cargo build
Compiling guessing_game v0.0.1 (file:/home/you/projects/guessing_game)
Compiling guessing_game v0.0.1 (file:///home/you/projects/guessing_game)
src/main.rs:20:15: 20:20 error: mismatched types: expected `int` but found `collections::string::String` (expected int but found struct collections::string::String)
src/main.rs:20 match cmp(input, secret_number) {
^~~~~
@ -2117,7 +2117,7 @@ And try compiling again:
```{notrust,ignore}
$ cargo build
Compiling guessing_game v0.0.1 (file:/home/you/projects/guessing_game)
Compiling guessing_game v0.0.1 (file:///home/you/projects/guessing_game)
src/main.rs:20:15: 20:20 error: mismatched types: expected `uint` but found `collections::string::String` (expected uint but found struct collections::string::String)
src/main.rs:20 match cmp(input, secret_number) {
^~~~~
@ -2220,7 +2220,7 @@ Let's try it out!
```{notrust,ignore}
$ cargo build
Compiling guessing_game v0.0.1 (file:/home/you/projects/guessing_game)
Compiling guessing_game v0.0.1 (file:///home/you/projects/guessing_game)
src/main.rs:22:15: 22:24 error: mismatched types: expected `uint` but found `core::option::Option<uint>` (expected uint but found enum core::option::Option)
src/main.rs:22 match cmp(input_num, secret_number) {
^~~~~~~~~
@ -2279,8 +2279,8 @@ print an error message and return. Let's give this a shot:
```{notrust,ignore}
$ cargo build
Compiling guessing_game v0.1.0 (file:/home/you/projects/guessing_game)
$ ./target/guessing_game
Compiling guessing_game v0.1.0 (file:///home/you/projects/guessing_game)
$ ./target/guessing_game
Guess the number!
The secret number is: 17
Please input your guess.
@ -2345,7 +2345,7 @@ Let's try it!
```{notrust,ignore}
$ cargo build
Compiling guessing_game v0.0.1 (file:/home/you/projects/guessing_game)
Compiling guessing_game v0.0.1 (file:///home/you/projects/guessing_game)
$ ./target/guessing_game
Guess the number!
The secret number is: 58
@ -2423,7 +2423,7 @@ that `return`? If we give a non-number answer, we'll `return` and quit. Observe:
```{notrust,ignore}
$ cargo build
Compiling guessing_game v0.0.1 (file:/home/you/projects/guessing_game)
Compiling guessing_game v0.0.1 (file:///home/you/projects/guessing_game)
$ ./target/guessing_game
Guess the number!
The secret number is: 59
@ -2556,7 +2556,7 @@ Now we should be good! Let's try:
```{rust,ignore}
$ cargo build
Compiling guessing_game v0.0.1 (file:/home/you/projects/guessing_game)
Compiling guessing_game v0.0.1 (file:///home/you/projects/guessing_game)
$ ./target/guessing_game
Guess the number!
The secret number is: 61
@ -2671,7 +2671,7 @@ Let's double check our work by compiling:
```{bash,ignore}
$ cargo build
Compiling modules v0.1.0 (file:/home/you/projects/modules)
Compiling modules v0.1.0 (file:///home/you/projects/modules)
$ ./target/modules
Hello, world!
```
@ -2732,7 +2732,7 @@ mod hello {
It gives an error:
```{notrust,ignore}
Compiling modules v0.1.0 (file:/home/you/projects/modules)
Compiling modules v0.1.0 (file:///home/you/projects/modules)
src/main.rs:2:5: 2:23 error: function `print_hello` is private
src/main.rs:2 hello::print_hello();
^~~~~~~~~~~~~~~~~~
@ -2754,9 +2754,19 @@ mod hello {
This will work:
```{notrust,ignore}
$ cargo build
Compiling modules v0.1.0 (file:///home/you/projects/modules)
$
```
Before we move on, let me show you one more Cargo command: `run`. `cargo run`
is kind of like `cargo build`, but it also then runs the produced exectuable.
Try it out:
```{notrust,ignore}
$ cargo run
Compiling modules v0.1.0 (file:/home/steve/tmp/modules)
Compiling modules v0.1.0 (file:///home/steve/tmp/modules)
Running `target/modules`
Hello, world!
$
@ -2806,7 +2816,7 @@ This doesn't _quite_ work yet. Try it:
```{notrust,ignore}
$ cargo build
Compiling modules v0.1.0 (file:/home/you/projects/modules)
Compiling modules v0.1.0 (file:///home/you/projects/modules)
/home/you/projects/modules/src/lib.rs:2:5: 4:6 warning: code is never used: `print_hello`, #[warn(dead_code)] on by default
/home/you/projects/modules/src/lib.rs:2 pub fn print_hello() {
/home/you/projects/modules/src/lib.rs:3 println!("Hello, world!");
@ -2842,7 +2852,7 @@ And everything should work:
```{notrust,ignore}
$ cargo run
Compiling modules v0.1.0 (file:/home/you/projects/modules)
Compiling modules v0.1.0 (file:///home/you/projects/modules)
Running `target/modules`
Hello, world!
```
@ -2908,7 +2918,7 @@ This should all compile as usual:
```{notrust,ignore}
$ cargo build
Compiling modules v0.1.0 (file:/home/you/projects/modules)
Compiling modules v0.1.0 (file:///home/you/projects/modules)
$
```
@ -3080,7 +3090,7 @@ And try it out:
```{notrust,ignore}
$ cargo run
Compiling testing v0.1.0 (file:/home/you/projects/testing)
Compiling testing v0.1.0 (file:///home/you/projects/testing)
Running `target/testing`
Hello, world!
$
@ -3113,7 +3123,7 @@ it `false`, so this test should fail. Let's try it!
```{notrust,ignore}
$ cargo test
Compiling testing v0.1.0 (file:/home/you/projects/testing)
Compiling testing v0.1.0 (file:///home/you/projects/testing)
/home/you/projects/testing/src/main.rs:1:1: 3:2 warning: code is never used: `main`, #[warn(dead_code)] on by default
/home/you/projects/testing/src/main.rs:1 fn main() {
/home/you/projects/testing/src/main.rs:2 println!("Hello, world");
@ -3146,7 +3156,7 @@ Lots of output! Let's break this down:
```{notrust,ignore}
$ cargo test
Compiling testing v0.1.0 (file:/home/you/projects/testing)
Compiling testing v0.1.0 (file:///home/you/projects/testing)
```
You can run all of your tests with `cargo test`. This runs both your tests in
@ -3221,7 +3231,7 @@ And then try to run our tests again:
```{notrust,ignore}
$ cargo test
Compiling testing v0.1.0 (file:/home/you/projects/testing)
Compiling testing v0.1.0 (file:///home/you/projects/testing)
/home/you/projects/testing/src/main.rs:1:1: 3:2 warning: code is never used: `main`, #[warn(dead_code)] on by default
/home/you/projects/testing/src/main.rs:1 fn main() {
/home/you/projects/testing/src/main.rs:2 println!("Hello, world");
@ -3260,7 +3270,7 @@ With this attribute, we won't get the warning:
```{notrust,ignore}
$ cargo test
Compiling testing v0.1.0 (file:/home/you/projects/testing)
Compiling testing v0.1.0 (file:///home/you/projects/testing)
running 0 tests
@ -3289,7 +3299,7 @@ And try to run the test:
```{notrust,ignore}
$ cargo test
Compiling testing v0.1.0 (file:/home/youg/projects/testing)
Compiling testing v0.1.0 (file:///home/youg/projects/testing)
/home/youg/projects/testing/tests/lib.rs:3:18: 3:38 error: unresolved name `add_three_times_four`.
/home/youg/projects/testing/tests/lib.rs:3 let result = add_three_times_four(5i);
^~~~~~~~~~~~~~~~~~~~
@ -3348,7 +3358,7 @@ Let's give it a run:
```{ignore,notrust}
$ cargo test
Compiling testing v0.1.0 (file:/home/you/projects/testing)
Compiling testing v0.1.0 (file:///home/you/projects/testing)
running 0 tests
@ -3388,7 +3398,7 @@ If you run `cargo test`, you should get the same output:
```{ignore,notrust}
$ cargo test
Compiling testing v0.1.0 (file:/home/you/projects/testing)
Compiling testing v0.1.0 (file:///home/you/projects/testing)
running 0 tests
@ -3432,7 +3442,7 @@ fn test_add_three() {
We'd get this error:
```{notrust,ignore}
Compiling testing v0.1.0 (file:/home/you/projects/testing)
Compiling testing v0.1.0 (file:///home/you/projects/testing)
/home/you/projects/testing/tests/lib.rs:3:5: 3:24 error: function `add_three` is private
/home/you/projects/testing/tests/lib.rs:3 use testing::add_three;
^~~~~~~~~~~~~~~~~~~
@ -3475,7 +3485,7 @@ Let's give it a shot:
```{ignore,notrust}
$ cargo test
Compiling testing v0.1.0 (file:/home/you/projects/testing)
Compiling testing v0.1.0 (file:///home/you/projects/testing)
running 1 test
test test::test_times_four ... ok