mirror of
https://github.com/KaiserY/trpl-zh-cn
synced 2024-11-09 08:51:18 +08:00
update to ch02-00 & update listings
This commit is contained in:
parent
fef1dba8b0
commit
fbdc47c405
@ -1,5 +1,7 @@
|
||||
# This file is automatically @generated by Cargo.
|
||||
# It is not intended for manual editing.
|
||||
version = 3
|
||||
|
||||
[[package]]
|
||||
name = "cfg-if"
|
||||
version = "1.0.0"
|
||||
@ -8,9 +10,9 @@ checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
|
||||
|
||||
[[package]]
|
||||
name = "getrandom"
|
||||
version = "0.2.2"
|
||||
version = "0.2.7"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "c9495705279e7140bf035dde1f6e750c162df8b625267cd52cc44e0b156732c8"
|
||||
checksum = "4eb1a864a501629691edf6c15a593b7a51eebaa1e8468e9ddc623de7c9b58ec6"
|
||||
dependencies = [
|
||||
"cfg-if",
|
||||
"libc",
|
||||
@ -26,33 +28,32 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "libc"
|
||||
version = "0.2.86"
|
||||
version = "0.2.127"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "b7282d924be3275cec7f6756ff4121987bc6481325397dde6ba3e7802b1a8b1c"
|
||||
checksum = "505e71a4706fa491e9b1b55f51b95d4037d0821ee40131190475f692b35b009b"
|
||||
|
||||
[[package]]
|
||||
name = "ppv-lite86"
|
||||
version = "0.2.10"
|
||||
version = "0.2.16"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "ac74c624d6b2d21f425f752262f42188365d7b8ff1aff74c82e45136510a4857"
|
||||
checksum = "eb9f9e6e233e5c4a35559a617bf40a4ec447db2e84c20b55a6f83167b7e57872"
|
||||
|
||||
[[package]]
|
||||
name = "rand"
|
||||
version = "0.8.3"
|
||||
version = "0.8.5"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "0ef9e7e66b4468674bfcb0c81af8b7fa0bb154fa9f28eb840da5c447baeb8d7e"
|
||||
checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404"
|
||||
dependencies = [
|
||||
"libc",
|
||||
"rand_chacha",
|
||||
"rand_core",
|
||||
"rand_hc",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "rand_chacha"
|
||||
version = "0.3.0"
|
||||
version = "0.3.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "e12735cf05c9e10bf21534da50a147b924d555dc7a547c42e6bb2d5b6017ae0d"
|
||||
checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88"
|
||||
dependencies = [
|
||||
"ppv-lite86",
|
||||
"rand_core",
|
||||
@ -60,24 +61,15 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "rand_core"
|
||||
version = "0.6.2"
|
||||
version = "0.6.3"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "34cf66eb183df1c5876e2dcf6b13d57340741e8dc255b48e40a26de954d06ae7"
|
||||
checksum = "d34f1408f55294453790c48b2f1ebbb1c5b4b7563eb1f418bcfcfdbb06ebb4e7"
|
||||
dependencies = [
|
||||
"getrandom",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "rand_hc"
|
||||
version = "0.3.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "3190ef7066a446f2e7f42e239d161e905420ccab01eb967c9eb27d21b2322a73"
|
||||
dependencies = [
|
||||
"rand_core",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "wasi"
|
||||
version = "0.10.2+wasi-snapshot-preview1"
|
||||
version = "0.11.0+wasi-snapshot-preview1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "fd6fbd9a79829dd1ad0cc20627bf1ed606756a7f77edff7b66b7064f9cb327c6"
|
||||
checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423"
|
||||
|
@ -6,4 +6,4 @@ edition = "2021"
|
||||
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
|
||||
|
||||
[dependencies]
|
||||
rand = "0.8.3"
|
||||
rand = "0.8.5"
|
||||
|
@ -1,5 +1,7 @@
|
||||
# This file is automatically @generated by Cargo.
|
||||
# It is not intended for manual editing.
|
||||
version = 3
|
||||
|
||||
[[package]]
|
||||
name = "cfg-if"
|
||||
version = "1.0.0"
|
||||
@ -38,14 +40,13 @@ checksum = "ac74c624d6b2d21f425f752262f42188365d7b8ff1aff74c82e45136510a4857"
|
||||
|
||||
[[package]]
|
||||
name = "rand"
|
||||
version = "0.8.3"
|
||||
version = "0.8.5"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "0ef9e7e66b4468674bfcb0c81af8b7fa0bb154fa9f28eb840da5c447baeb8d7e"
|
||||
checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404"
|
||||
dependencies = [
|
||||
"libc",
|
||||
"rand_chacha",
|
||||
"rand_core",
|
||||
"rand_hc",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@ -67,15 +68,6 @@ dependencies = [
|
||||
"getrandom",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "rand_hc"
|
||||
version = "0.3.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "3190ef7066a446f2e7f42e239d161e905420ccab01eb967c9eb27d21b2322a73"
|
||||
dependencies = [
|
||||
"rand_core",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "wasi"
|
||||
version = "0.10.2+wasi-snapshot-preview1"
|
||||
|
@ -6,4 +6,4 @@ edition = "2021"
|
||||
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
|
||||
|
||||
[dependencies]
|
||||
rand = "0.8.3"
|
||||
rand = "0.8.5"
|
||||
|
@ -1,5 +1,7 @@
|
||||
# This file is automatically @generated by Cargo.
|
||||
# It is not intended for manual editing.
|
||||
version = 3
|
||||
|
||||
[[package]]
|
||||
name = "cfg-if"
|
||||
version = "1.0.0"
|
||||
@ -38,14 +40,13 @@ checksum = "ac74c624d6b2d21f425f752262f42188365d7b8ff1aff74c82e45136510a4857"
|
||||
|
||||
[[package]]
|
||||
name = "rand"
|
||||
version = "0.8.3"
|
||||
version = "0.8.5"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "0ef9e7e66b4468674bfcb0c81af8b7fa0bb154fa9f28eb840da5c447baeb8d7e"
|
||||
checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404"
|
||||
dependencies = [
|
||||
"libc",
|
||||
"rand_chacha",
|
||||
"rand_core",
|
||||
"rand_hc",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@ -67,15 +68,6 @@ dependencies = [
|
||||
"getrandom",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "rand_hc"
|
||||
version = "0.3.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "3190ef7066a446f2e7f42e239d161e905420ccab01eb967c9eb27d21b2322a73"
|
||||
dependencies = [
|
||||
"rand_core",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "wasi"
|
||||
version = "0.10.2+wasi-snapshot-preview1"
|
||||
|
@ -6,4 +6,4 @@ edition = "2021"
|
||||
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
|
||||
|
||||
[dependencies]
|
||||
rand = "0.8.3"
|
||||
rand = "0.8.5"
|
||||
|
@ -5,41 +5,19 @@ $ cargo build
|
||||
Compiling ppv-lite86 v0.2.10
|
||||
Compiling rand_core v0.6.2
|
||||
Compiling rand_chacha v0.3.0
|
||||
Compiling rand v0.8.3
|
||||
Compiling rand v0.8.5
|
||||
Compiling guessing_game v0.1.0 (file:///projects/guessing_game)
|
||||
error[E0308]: mismatched types
|
||||
--> src/main.rs:22:21
|
||||
|
|
||||
22 | match guess.cmp(&secret_number) {
|
||||
| ^^^^^^^^^^^^^^ expected struct `String`, found integer
|
||||
| --- ^^^^^^^^^^^^^^ expected struct `String`, found integer
|
||||
| |
|
||||
| arguments to this function are incorrect
|
||||
|
|
||||
= note: expected reference `&String`
|
||||
found reference `&{integer}`
|
||||
note: associated function defined here
|
||||
|
||||
error[E0283]: type annotations needed for `{integer}`
|
||||
--> src/main.rs:8:44
|
||||
|
|
||||
8 | let secret_number = rand::thread_rng().gen_range(1..=100);
|
||||
| ------------- ^^^^^^^^^ cannot infer type for type `{integer}`
|
||||
| |
|
||||
| consider giving `secret_number` a type
|
||||
|
|
||||
= note: multiple `impl`s satisfying `{integer}: SampleUniform` found in the `rand` crate:
|
||||
- impl SampleUniform for i128;
|
||||
- impl SampleUniform for i16;
|
||||
- impl SampleUniform for i32;
|
||||
- impl SampleUniform for i64;
|
||||
and 8 more
|
||||
note: required by a bound in `gen_range`
|
||||
--> /Users/carolnichols/.cargo/registry/src/github.com-1ecc6299db9ec823/rand-0.8.3/src/rng.rs:129:12
|
||||
|
|
||||
129 | T: SampleUniform,
|
||||
| ^^^^^^^^^^^^^ required by this bound in `gen_range`
|
||||
help: consider specifying the type arguments in the function call
|
||||
|
|
||||
8 | let secret_number = rand::thread_rng().gen_range::<T, R>(1..=100);
|
||||
| ++++++++
|
||||
|
||||
Some errors have detailed explanations: E0283, E0308.
|
||||
For more information about an error, try `rustc --explain E0283`.
|
||||
error: could not compile `guessing_game` due to 2 previous errors
|
||||
For more information about this error, try `rustc --explain E0308`.
|
||||
error: could not compile `guessing_game` due to previous error
|
||||
|
@ -1,5 +1,7 @@
|
||||
# This file is automatically @generated by Cargo.
|
||||
# It is not intended for manual editing.
|
||||
version = 3
|
||||
|
||||
[[package]]
|
||||
name = "cfg-if"
|
||||
version = "1.0.0"
|
||||
@ -38,14 +40,13 @@ checksum = "ac74c624d6b2d21f425f752262f42188365d7b8ff1aff74c82e45136510a4857"
|
||||
|
||||
[[package]]
|
||||
name = "rand"
|
||||
version = "0.8.3"
|
||||
version = "0.8.5"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "0ef9e7e66b4468674bfcb0c81af8b7fa0bb154fa9f28eb840da5c447baeb8d7e"
|
||||
checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404"
|
||||
dependencies = [
|
||||
"libc",
|
||||
"rand_chacha",
|
||||
"rand_core",
|
||||
"rand_hc",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@ -67,15 +68,6 @@ dependencies = [
|
||||
"getrandom",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "rand_hc"
|
||||
version = "0.3.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "3190ef7066a446f2e7f42e239d161e905420ccab01eb967c9eb27d21b2322a73"
|
||||
dependencies = [
|
||||
"rand_core",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "wasi"
|
||||
version = "0.10.2+wasi-snapshot-preview1"
|
||||
|
@ -6,4 +6,4 @@ edition = "2021"
|
||||
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
|
||||
|
||||
[dependencies]
|
||||
rand = "0.8.3"
|
||||
rand = "0.8.5"
|
||||
|
@ -1,5 +1,7 @@
|
||||
# This file is automatically @generated by Cargo.
|
||||
# It is not intended for manual editing.
|
||||
version = 3
|
||||
|
||||
[[package]]
|
||||
name = "cfg-if"
|
||||
version = "1.0.0"
|
||||
@ -38,14 +40,13 @@ checksum = "ac74c624d6b2d21f425f752262f42188365d7b8ff1aff74c82e45136510a4857"
|
||||
|
||||
[[package]]
|
||||
name = "rand"
|
||||
version = "0.8.3"
|
||||
version = "0.8.5"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "0ef9e7e66b4468674bfcb0c81af8b7fa0bb154fa9f28eb840da5c447baeb8d7e"
|
||||
checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404"
|
||||
dependencies = [
|
||||
"libc",
|
||||
"rand_chacha",
|
||||
"rand_core",
|
||||
"rand_hc",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@ -67,15 +68,6 @@ dependencies = [
|
||||
"getrandom",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "rand_hc"
|
||||
version = "0.3.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "3190ef7066a446f2e7f42e239d161e905420ccab01eb967c9eb27d21b2322a73"
|
||||
dependencies = [
|
||||
"rand_core",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "wasi"
|
||||
version = "0.10.2+wasi-snapshot-preview1"
|
||||
|
@ -6,4 +6,4 @@ edition = "2021"
|
||||
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
|
||||
|
||||
[dependencies]
|
||||
rand = "0.8.3"
|
||||
rand = "0.8.5"
|
||||
|
@ -1,5 +1,7 @@
|
||||
# This file is automatically @generated by Cargo.
|
||||
# It is not intended for manual editing.
|
||||
version = 3
|
||||
|
||||
[[package]]
|
||||
name = "cfg-if"
|
||||
version = "1.0.0"
|
||||
@ -38,14 +40,13 @@ checksum = "ac74c624d6b2d21f425f752262f42188365d7b8ff1aff74c82e45136510a4857"
|
||||
|
||||
[[package]]
|
||||
name = "rand"
|
||||
version = "0.8.3"
|
||||
version = "0.8.5"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "0ef9e7e66b4468674bfcb0c81af8b7fa0bb154fa9f28eb840da5c447baeb8d7e"
|
||||
checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404"
|
||||
dependencies = [
|
||||
"libc",
|
||||
"rand_chacha",
|
||||
"rand_core",
|
||||
"rand_hc",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@ -67,15 +68,6 @@ dependencies = [
|
||||
"getrandom",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "rand_hc"
|
||||
version = "0.3.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "3190ef7066a446f2e7f42e239d161e905420ccab01eb967c9eb27d21b2322a73"
|
||||
dependencies = [
|
||||
"rand_core",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "wasi"
|
||||
version = "0.10.2+wasi-snapshot-preview1"
|
||||
|
@ -6,4 +6,4 @@ edition = "2021"
|
||||
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
|
||||
|
||||
[dependencies]
|
||||
rand = "0.8.3"
|
||||
rand = "0.8.5"
|
||||
|
@ -1,5 +1,7 @@
|
||||
# This file is automatically @generated by Cargo.
|
||||
# It is not intended for manual editing.
|
||||
version = 3
|
||||
|
||||
[[package]]
|
||||
name = "cfg-if"
|
||||
version = "1.0.0"
|
||||
@ -38,14 +40,13 @@ checksum = "ac74c624d6b2d21f425f752262f42188365d7b8ff1aff74c82e45136510a4857"
|
||||
|
||||
[[package]]
|
||||
name = "rand"
|
||||
version = "0.8.3"
|
||||
version = "0.8.5"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "0ef9e7e66b4468674bfcb0c81af8b7fa0bb154fa9f28eb840da5c447baeb8d7e"
|
||||
checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404"
|
||||
dependencies = [
|
||||
"libc",
|
||||
"rand_chacha",
|
||||
"rand_core",
|
||||
"rand_hc",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@ -67,15 +68,6 @@ dependencies = [
|
||||
"getrandom",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "rand_hc"
|
||||
version = "0.3.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "3190ef7066a446f2e7f42e239d161e905420ccab01eb967c9eb27d21b2322a73"
|
||||
dependencies = [
|
||||
"rand_core",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "wasi"
|
||||
version = "0.10.2+wasi-snapshot-preview1"
|
||||
|
@ -6,4 +6,4 @@ edition = "2021"
|
||||
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
|
||||
|
||||
[dependencies]
|
||||
rand = "0.8.3"
|
||||
rand = "0.8.5"
|
||||
|
@ -1,5 +1,7 @@
|
||||
# This file is automatically @generated by Cargo.
|
||||
# It is not intended for manual editing.
|
||||
version = 3
|
||||
|
||||
[[package]]
|
||||
name = "cfg-if"
|
||||
version = "1.0.0"
|
||||
@ -38,14 +40,13 @@ checksum = "ac74c624d6b2d21f425f752262f42188365d7b8ff1aff74c82e45136510a4857"
|
||||
|
||||
[[package]]
|
||||
name = "rand"
|
||||
version = "0.8.3"
|
||||
version = "0.8.5"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "0ef9e7e66b4468674bfcb0c81af8b7fa0bb154fa9f28eb840da5c447baeb8d7e"
|
||||
checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404"
|
||||
dependencies = [
|
||||
"libc",
|
||||
"rand_chacha",
|
||||
"rand_core",
|
||||
"rand_hc",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@ -67,15 +68,6 @@ dependencies = [
|
||||
"getrandom",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "rand_hc"
|
||||
version = "0.3.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "3190ef7066a446f2e7f42e239d161e905420ccab01eb967c9eb27d21b2322a73"
|
||||
dependencies = [
|
||||
"rand_core",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "wasi"
|
||||
version = "0.10.2+wasi-snapshot-preview1"
|
||||
|
@ -6,4 +6,4 @@ edition = "2021"
|
||||
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
|
||||
|
||||
[dependencies]
|
||||
rand = "0.8.3"
|
||||
rand = "0.8.5"
|
||||
|
@ -10,7 +10,7 @@ fn main() {
|
||||
|
||||
// division
|
||||
let quotient = 56.7 / 32.2;
|
||||
let floored = 2 / 3; // Results in 0
|
||||
let truncated = -5 / 3; // 结果为 -1
|
||||
|
||||
// remainder
|
||||
let remainder = 43 % 5;
|
||||
|
@ -1,5 +1,11 @@
|
||||
$ cargo run
|
||||
Compiling functions v0.1.0 (file:///projects/functions)
|
||||
error: expected expression, found `let` statement
|
||||
--> src/main.rs:2:14
|
||||
|
|
||||
2 | let x = (let y = 6);
|
||||
| ^^^
|
||||
|
||||
error: expected expression, found statement (`let`)
|
||||
--> src/main.rs:2:14
|
||||
|
|
||||
@ -27,8 +33,8 @@ help: remove these parentheses
|
||||
|
|
||||
2 - let x = (let y = 6);
|
||||
2 + let x = let y = 6;
|
||||
|
|
||||
|
|
||||
|
||||
For more information about this error, try `rustc --explain E0658`.
|
||||
warning: `functions` (bin "functions") generated 1 warning
|
||||
error: could not compile `functions` due to 2 previous errors; 1 warning emitted
|
||||
error: could not compile `functions` due to 3 previous errors; 1 warning emitted
|
||||
|
@ -8,7 +8,7 @@ error[E0308]: mismatched types
|
||||
| |
|
||||
| implicitly returns `()` as its body has no tail or `return` expression
|
||||
8 | x + 1;
|
||||
| - help: consider removing this semicolon
|
||||
| - help: remove this semicolon
|
||||
|
||||
For more information about this error, try `rustc --explain E0308`.
|
||||
error: could not compile `functions` due to previous error
|
||||
|
@ -4,7 +4,12 @@ error[E0282]: type annotations needed
|
||||
--> src/main.rs:2:9
|
||||
|
|
||||
2 | let guess = "42".parse().expect("Not a number!");
|
||||
| ^^^^^ consider giving `guess` a type
|
||||
| ^^^^^
|
||||
|
|
||||
help: consider giving `guess` an explicit type
|
||||
|
|
||||
2 | let guess: _ = "42".parse().expect("Not a number!");
|
||||
| +++
|
||||
|
||||
For more information about this error, try `rustc --explain E0282`.
|
||||
error: could not compile `no_type_annotations` due to previous error
|
||||
|
@ -7,9 +7,11 @@ error[E0382]: borrow of moved value: `s1`
|
||||
| -- move occurs because `s1` has type `String`, which does not implement the `Copy` trait
|
||||
3 | let s2 = s1;
|
||||
| -- value moved here
|
||||
4 |
|
||||
4 |
|
||||
5 | println!("{}, world!", s1);
|
||||
| ^^ value borrowed here after move
|
||||
|
|
||||
= note: this error originates in the macro `$crate::format_args_nl` which comes from the expansion of the macro `println` (in Nightly builds, run with -Z macro-backtrace for more info)
|
||||
|
||||
For more information about this error, try `rustc --explain E0382`.
|
||||
error: could not compile `ownership` due to previous error
|
||||
|
@ -7,7 +7,7 @@ error[E0499]: cannot borrow `s` as mutable more than once at a time
|
||||
| ------ first mutable borrow occurs here
|
||||
5 | let r2 = &mut s;
|
||||
| ^^^^^^ second mutable borrow occurs here
|
||||
6 |
|
||||
6 |
|
||||
7 | println!("{}, {}", r1, r2);
|
||||
| -- first borrow later used here
|
||||
|
||||
|
@ -8,7 +8,7 @@ error[E0502]: cannot borrow `s` as mutable because it is also borrowed as immuta
|
||||
5 | let r2 = &s; // no problem
|
||||
6 | let r3 = &mut s; // BIG PROBLEM
|
||||
| ^^^^^^ mutable borrow occurs here
|
||||
7 |
|
||||
7 |
|
||||
8 | println!("{}, {}, and {}", r1, r2, r3);
|
||||
| -- immutable borrow later used here
|
||||
|
||||
|
@ -10,7 +10,7 @@ error[E0106]: missing lifetime specifier
|
||||
help: consider using the `'static` lifetime
|
||||
|
|
||||
5 | fn dangle() -> &'static String {
|
||||
| ~~~~~~~~
|
||||
| +++++++
|
||||
|
||||
For more information about this error, try `rustc --explain E0106`.
|
||||
error: could not compile `ownership` due to previous error
|
||||
|
@ -5,10 +5,10 @@ error[E0502]: cannot borrow `s` as mutable because it is also borrowed as immuta
|
||||
|
|
||||
16 | let word = first_word(&s);
|
||||
| -- immutable borrow occurs here
|
||||
17 |
|
||||
17 |
|
||||
18 | s.clear(); // error!
|
||||
| ^^^^^^^^^ mutable borrow occurs here
|
||||
19 |
|
||||
19 |
|
||||
20 | println!("the first word is: {}", word);
|
||||
| ---- immutable borrow later used here
|
||||
|
||||
|
@ -8,9 +8,9 @@ struct User {
|
||||
// ANCHOR: here
|
||||
fn main() {
|
||||
let user1 = User {
|
||||
email: String::from("someone@example.com"),
|
||||
username: String::from("someusername123"),
|
||||
active: true,
|
||||
username: String::from("someusername123"),
|
||||
email: String::from("someone@example.com"),
|
||||
sign_in_count: 1,
|
||||
};
|
||||
}
|
||||
|
@ -8,9 +8,9 @@ struct User {
|
||||
// ANCHOR: here
|
||||
fn main() {
|
||||
let mut user1 = User {
|
||||
email: String::from("someone@example.com"),
|
||||
username: String::from("someusername123"),
|
||||
active: true,
|
||||
username: String::from("someusername123"),
|
||||
email: String::from("someone@example.com"),
|
||||
sign_in_count: 1,
|
||||
};
|
||||
|
||||
|
@ -8,9 +8,9 @@ struct User {
|
||||
// ANCHOR: here
|
||||
fn build_user(email: String, username: String) -> User {
|
||||
User {
|
||||
email: email,
|
||||
username: username,
|
||||
active: true,
|
||||
username: username,
|
||||
email: email,
|
||||
sign_in_count: 1,
|
||||
}
|
||||
}
|
||||
|
@ -8,9 +8,9 @@ struct User {
|
||||
// ANCHOR: here
|
||||
fn build_user(email: String, username: String) -> User {
|
||||
User {
|
||||
email,
|
||||
username,
|
||||
active: true,
|
||||
username,
|
||||
email,
|
||||
sign_in_count: 1,
|
||||
}
|
||||
}
|
||||
|
@ -8,7 +8,7 @@ error[E0277]: `Rectangle` doesn't implement `std::fmt::Display`
|
||||
|
|
||||
= help: the trait `std::fmt::Display` is not implemented for `Rectangle`
|
||||
= note: in format strings you may be able to use `{:?}` (or {:#?} for pretty-print) instead
|
||||
= note: this error originates in the macro `$crate::format_args_nl` (in Nightly builds, run with -Z macro-backtrace for more info)
|
||||
= note: this error originates in the macro `$crate::format_args_nl` which comes from the expansion of the macro `println` (in Nightly builds, run with -Z macro-backtrace for more info)
|
||||
|
||||
For more information about this error, try `rustc --explain E0277`.
|
||||
error: could not compile `rectangles` due to previous error
|
||||
|
@ -3,3 +3,4 @@
|
||||
[[package]]
|
||||
name = "structs"
|
||||
version = "0.1.0"
|
||||
|
||||
|
@ -8,7 +8,11 @@ error[E0277]: `Rectangle` doesn't implement `Debug`
|
||||
|
|
||||
= help: the trait `Debug` is not implemented for `Rectangle`
|
||||
= note: add `#[derive(Debug)]` to `Rectangle` or manually `impl Debug for Rectangle`
|
||||
= note: this error originates in the macro `$crate::format_args_nl` (in Nightly builds, run with -Z macro-backtrace for more info)
|
||||
= note: this error originates in the macro `$crate::format_args_nl` which comes from the expansion of the macro `println` (in Nightly builds, run with -Z macro-backtrace for more info)
|
||||
help: consider annotating `Rectangle` with `#[derive(Debug)]`
|
||||
|
|
||||
1 | #[derive(Debug)]
|
||||
|
|
||||
|
||||
For more information about this error, try `rustc --explain E0277`.
|
||||
error: could not compile `rectangles` due to previous error
|
||||
|
@ -7,6 +7,16 @@ error[E0277]: cannot add `Option<i8>` to `i8`
|
||||
| ^ no implementation for `i8 + Option<i8>`
|
||||
|
|
||||
= help: the trait `Add<Option<i8>>` is not implemented for `i8`
|
||||
= help: the following other types implement trait `Add<Rhs>`:
|
||||
<&'a f32 as Add<f32>>
|
||||
<&'a f64 as Add<f64>>
|
||||
<&'a i128 as Add<i128>>
|
||||
<&'a i16 as Add<i16>>
|
||||
<&'a i32 as Add<i32>>
|
||||
<&'a i64 as Add<i64>>
|
||||
<&'a i8 as Add<i8>>
|
||||
<&'a isize as Add<isize>>
|
||||
and 48 others
|
||||
|
||||
For more information about this error, try `rustc --explain E0277`.
|
||||
error: could not compile `enums` due to previous error
|
||||
|
@ -1,13 +1,18 @@
|
||||
$ cargo run
|
||||
Compiling enums v0.1.0 (file:///projects/enums)
|
||||
error[E0004]: non-exhaustive patterns: `None` not covered
|
||||
--> src/main.rs:3:15
|
||||
|
|
||||
3 | match x {
|
||||
| ^ pattern `None` not covered
|
||||
|
|
||||
= help: ensure that all possible cases are being handled, possibly by adding wildcards or more match arms
|
||||
= note: the matched value is of type `Option<i32>`
|
||||
--> src/main.rs:3:15
|
||||
|
|
||||
3 | match x {
|
||||
| ^ pattern `None` not covered
|
||||
|
|
||||
note: `Option<i32>` defined here
|
||||
= note: the matched value is of type `Option<i32>`
|
||||
help: ensure that all possible cases are being handled by adding a match arm with a wildcard pattern or an explicit pattern as shown
|
||||
|
|
||||
4 ~ Some(i) => Some(i + 1),
|
||||
5 ~ None => todo!(),
|
||||
|
|
||||
|
||||
For more information about this error, try `rustc --explain E0004`.
|
||||
error: could not compile `enums` due to previous error
|
||||
|
@ -1,9 +1,9 @@
|
||||
fn serve_order() {}
|
||||
fn deliver_order() {}
|
||||
|
||||
mod back_of_house {
|
||||
fn fix_incorrect_order() {
|
||||
cook_order();
|
||||
super::serve_order();
|
||||
super::deliver_order();
|
||||
}
|
||||
|
||||
fn cook_order() {}
|
||||
|
@ -8,6 +8,4 @@ use crate::front_of_house::hosting;
|
||||
|
||||
pub fn eat_at_restaurant() {
|
||||
hosting::add_to_waitlist();
|
||||
hosting::add_to_waitlist();
|
||||
hosting::add_to_waitlist();
|
||||
}
|
||||
|
19
listings/ch07-managing-growing-projects/listing-07-12/output.txt
Executable file
19
listings/ch07-managing-growing-projects/listing-07-12/output.txt
Executable file
@ -0,0 +1,19 @@
|
||||
$ cargo build
|
||||
Compiling restaurant v0.1.0 (file:///projects/restaurant)
|
||||
error[E0433]: failed to resolve: use of undeclared crate or module `hosting`
|
||||
--> src/lib.rs:11:9
|
||||
|
|
||||
11 | hosting::add_to_waitlist();
|
||||
| ^^^^^^^ use of undeclared crate or module `hosting`
|
||||
|
||||
warning: unused import: `crate::front_of_house::hosting`
|
||||
--> src/lib.rs:7:5
|
||||
|
|
||||
7 | use crate::front_of_house::hosting;
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
|
||||
= note: `#[warn(unused_imports)]` on by default
|
||||
|
||||
For more information about this error, try `rustc --explain E0433`.
|
||||
warning: `restaurant` (lib) generated 1 warning
|
||||
error: could not compile `restaurant` due to previous error; 1 warning emitted
|
@ -4,10 +4,10 @@ mod front_of_house {
|
||||
}
|
||||
}
|
||||
|
||||
use self::front_of_house::hosting;
|
||||
use crate::front_of_house::hosting;
|
||||
|
||||
pub fn eat_at_restaurant() {
|
||||
hosting::add_to_waitlist();
|
||||
hosting::add_to_waitlist();
|
||||
hosting::add_to_waitlist();
|
||||
mod customer {
|
||||
pub fn eat_at_restaurant() {
|
||||
hosting::add_to_waitlist();
|
||||
}
|
||||
}
|
||||
|
@ -8,6 +8,4 @@ use crate::front_of_house::hosting::add_to_waitlist;
|
||||
|
||||
pub fn eat_at_restaurant() {
|
||||
add_to_waitlist();
|
||||
add_to_waitlist();
|
||||
add_to_waitlist();
|
||||
}
|
||||
|
@ -8,6 +8,4 @@ pub use crate::front_of_house::hosting;
|
||||
|
||||
pub fn eat_at_restaurant() {
|
||||
hosting::add_to_waitlist();
|
||||
hosting::add_to_waitlist();
|
||||
hosting::add_to_waitlist();
|
||||
}
|
||||
|
@ -1,5 +1,7 @@
|
||||
# This file is automatically @generated by Cargo.
|
||||
# It is not intended for manual editing.
|
||||
version = 3
|
||||
|
||||
[[package]]
|
||||
name = "cfg-if"
|
||||
version = "1.0.0"
|
||||
@ -38,14 +40,13 @@ checksum = "ac74c624d6b2d21f425f752262f42188365d7b8ff1aff74c82e45136510a4857"
|
||||
|
||||
[[package]]
|
||||
name = "rand"
|
||||
version = "0.8.3"
|
||||
version = "0.8.5"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "0ef9e7e66b4468674bfcb0c81af8b7fa0bb154fa9f28eb840da5c447baeb8d7e"
|
||||
checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404"
|
||||
dependencies = [
|
||||
"libc",
|
||||
"rand_chacha",
|
||||
"rand_core",
|
||||
"rand_hc",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@ -67,15 +68,6 @@ dependencies = [
|
||||
"getrandom",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "rand_hc"
|
||||
version = "0.3.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "3190ef7066a446f2e7f42e239d161e905420ccab01eb967c9eb27d21b2322a73"
|
||||
dependencies = [
|
||||
"rand_core",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "wasi"
|
||||
version = "0.10.2+wasi-snapshot-preview1"
|
||||
|
@ -4,4 +4,4 @@ version = "0.1.0"
|
||||
edition = "2021"
|
||||
|
||||
[dependencies]
|
||||
rand = "0.8.3"
|
||||
rand = "0.8.5"
|
||||
|
@ -8,9 +8,9 @@ use std::{cmp::Ordering, io};
|
||||
fn main() {
|
||||
println!("Guess the number!");
|
||||
|
||||
let secret_number = rand::thread_rng().gen_range(1..101);
|
||||
let secret_number = rand::thread_rng().gen_range(1..=100);
|
||||
|
||||
println!("The secret number is: {}", secret_number);
|
||||
println!("The secret number is: {secret_number}");
|
||||
|
||||
println!("Please input your guess.");
|
||||
|
||||
@ -22,7 +22,7 @@ fn main() {
|
||||
|
||||
let guess: u32 = guess.trim().parse().expect("Please type a number!");
|
||||
|
||||
println!("You guessed: {}", guess);
|
||||
println!("You guessed: {guess}");
|
||||
|
||||
match guess.cmp(&secret_number) {
|
||||
Ordering::Less => println!("Too small!"),
|
||||
|
@ -4,6 +4,4 @@ pub use crate::front_of_house::hosting;
|
||||
|
||||
pub fn eat_at_restaurant() {
|
||||
hosting::add_to_waitlist();
|
||||
hosting::add_to_waitlist();
|
||||
hosting::add_to_waitlist();
|
||||
}
|
||||
|
@ -1,5 +1,7 @@
|
||||
# This file is automatically @generated by Cargo.
|
||||
# It is not intended for manual editing.
|
||||
version = 3
|
||||
|
||||
[[package]]
|
||||
name = "cfg-if"
|
||||
version = "1.0.0"
|
||||
@ -38,14 +40,13 @@ checksum = "ac74c624d6b2d21f425f752262f42188365d7b8ff1aff74c82e45136510a4857"
|
||||
|
||||
[[package]]
|
||||
name = "rand"
|
||||
version = "0.8.3"
|
||||
version = "0.8.5"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "0ef9e7e66b4468674bfcb0c81af8b7fa0bb154fa9f28eb840da5c447baeb8d7e"
|
||||
checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404"
|
||||
dependencies = [
|
||||
"libc",
|
||||
"rand_chacha",
|
||||
"rand_core",
|
||||
"rand_hc",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@ -67,15 +68,6 @@ dependencies = [
|
||||
"getrandom",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "rand_hc"
|
||||
version = "0.3.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "3190ef7066a446f2e7f42e239d161e905420ccab01eb967c9eb27d21b2322a73"
|
||||
dependencies = [
|
||||
"rand_core",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "wasi"
|
||||
version = "0.10.2+wasi-snapshot-preview1"
|
||||
|
@ -6,4 +6,4 @@ edition = "2021"
|
||||
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
|
||||
|
||||
[dependencies]
|
||||
rand = "0.8.3"
|
||||
rand = "0.8.5"
|
||||
|
@ -9,9 +9,9 @@ use std::io;
|
||||
fn main() {
|
||||
println!("Guess the number!");
|
||||
|
||||
let secret_number = rand::thread_rng().gen_range(1..101);
|
||||
let secret_number = rand::thread_rng().gen_range(1..=100);
|
||||
|
||||
println!("The secret number is: {}", secret_number);
|
||||
println!("The secret number is: {secret_number}");
|
||||
|
||||
println!("Please input your guess.");
|
||||
|
||||
@ -21,7 +21,7 @@ fn main() {
|
||||
.read_line(&mut guess)
|
||||
.expect("Failed to read line");
|
||||
|
||||
println!("You guessed: {}", guess);
|
||||
println!("You guessed: {guess}");
|
||||
|
||||
match guess.cmp(&secret_number) {
|
||||
Ordering::Less => println!("Too small!"),
|
||||
|
@ -4,6 +4,4 @@ pub use crate::front_of_house::hosting;
|
||||
|
||||
pub fn eat_at_restaurant() {
|
||||
hosting::add_to_waitlist();
|
||||
hosting::add_to_waitlist();
|
||||
hosting::add_to_waitlist();
|
||||
}
|
||||
|
@ -1,9 +1,14 @@
|
||||
fn main() {
|
||||
// ANCHOR: here
|
||||
{
|
||||
let v = vec![1, 2, 3, 4];
|
||||
let v = vec![1, 2, 3, 4, 5];
|
||||
|
||||
// 处理变量 v
|
||||
} // <- 这里 v 离开作用域并被丢弃
|
||||
// ANCHOR_END: here
|
||||
let third: &i32 = &v[2];
|
||||
println!("The third element is {third}");
|
||||
|
||||
let third: Option<&i32> = v.get(2);
|
||||
match third {
|
||||
Some(third) => println!("The third element is {third}"),
|
||||
None => println!("There is no third element."),
|
||||
}
|
||||
// ANCHOR_END: here
|
||||
}
|
||||
|
@ -2,12 +2,7 @@ fn main() {
|
||||
// ANCHOR: here
|
||||
let v = vec![1, 2, 3, 4, 5];
|
||||
|
||||
let third: &i32 = &v[2];
|
||||
println!("The third element is {}", third);
|
||||
|
||||
match v.get(2) {
|
||||
Some(third) => println!("The third element is {}", third),
|
||||
None => println!("There is no third element."),
|
||||
}
|
||||
let does_not_exist = &v[100];
|
||||
let does_not_exist = v.get(100);
|
||||
// ANCHOR_END: here
|
||||
}
|
||||
|
16
listings/ch08-common-collections/listing-08-06/output.txt
Executable file
16
listings/ch08-common-collections/listing-08-06/output.txt
Executable file
@ -0,0 +1,16 @@
|
||||
$ cargo run
|
||||
Compiling collections v0.1.0 (file:///projects/collections)
|
||||
error[E0502]: cannot borrow `v` as mutable because it is also borrowed as immutable
|
||||
--> src/main.rs:6:5
|
||||
|
|
||||
4 | let first = &v[0];
|
||||
| - immutable borrow occurs here
|
||||
5 |
|
||||
6 | v.push(6);
|
||||
| ^^^^^^^^^ mutable borrow occurs here
|
||||
7 |
|
||||
8 | println!("The first element is: {first}");
|
||||
| ----- immutable borrow later used here
|
||||
|
||||
For more information about this error, try `rustc --explain E0502`.
|
||||
error: could not compile `collections` due to previous error
|
@ -1,8 +1,11 @@
|
||||
fn main() {
|
||||
// ANCHOR: here
|
||||
let v = vec![1, 2, 3, 4, 5];
|
||||
let mut v = vec![1, 2, 3, 4, 5];
|
||||
|
||||
let does_not_exist = &v[100];
|
||||
let does_not_exist = v.get(100);
|
||||
let first = &v[0];
|
||||
|
||||
v.push(6);
|
||||
|
||||
println!("The first element is: {first}");
|
||||
// ANCHOR_END: here
|
||||
}
|
||||
|
@ -1,11 +1,8 @@
|
||||
fn main() {
|
||||
// ANCHOR: here
|
||||
let mut v = vec![1, 2, 3, 4, 5];
|
||||
|
||||
let first = &v[0];
|
||||
|
||||
v.push(6);
|
||||
|
||||
println!("The first element is: {}", first);
|
||||
let v = vec![100, 32, 57];
|
||||
for i in &v {
|
||||
println!("{i}");
|
||||
}
|
||||
// ANCHOR_END: here
|
||||
}
|
||||
|
@ -1,8 +1,8 @@
|
||||
fn main() {
|
||||
// ANCHOR: here
|
||||
let v = vec![100, 32, 57];
|
||||
for i in &v {
|
||||
println!("{}", i);
|
||||
let mut v = vec![100, 32, 57];
|
||||
for i in &mut v {
|
||||
*i += 50;
|
||||
}
|
||||
// ANCHOR_END: here
|
||||
}
|
||||
|
@ -1,8 +1,15 @@
|
||||
fn main() {
|
||||
// ANCHOR: here
|
||||
let mut v = vec![100, 32, 57];
|
||||
for i in &mut v {
|
||||
*i += 50;
|
||||
enum SpreadsheetCell {
|
||||
Int(i32),
|
||||
Float(f64),
|
||||
Text(String),
|
||||
}
|
||||
|
||||
let row = vec![
|
||||
SpreadsheetCell::Int(3),
|
||||
SpreadsheetCell::Text(String::from("blue")),
|
||||
SpreadsheetCell::Float(10.12),
|
||||
];
|
||||
// ANCHOR_END: here
|
||||
}
|
||||
|
@ -1,15 +1,9 @@
|
||||
fn main() {
|
||||
// ANCHOR: here
|
||||
enum SpreadsheetCell {
|
||||
Int(i32),
|
||||
Float(f64),
|
||||
Text(String),
|
||||
}
|
||||
{
|
||||
let v = vec![1, 2, 3, 4];
|
||||
|
||||
let row = vec![
|
||||
SpreadsheetCell::Int(3),
|
||||
SpreadsheetCell::Text(String::from("blue")),
|
||||
SpreadsheetCell::Float(10.12),
|
||||
];
|
||||
// ANCHOR_END: here
|
||||
// do stuff with v
|
||||
} // <- v goes out of scope and is freed here
|
||||
// ANCHOR_END: here
|
||||
}
|
||||
|
@ -3,6 +3,6 @@ fn main() {
|
||||
let mut s1 = String::from("foo");
|
||||
let s2 = "bar";
|
||||
s1.push_str(s2);
|
||||
println!("s2 is {}", s2);
|
||||
println!("s2 is {s2}");
|
||||
// ANCHOR_END: here
|
||||
}
|
||||
|
@ -7,6 +7,14 @@ error[E0277]: the type `String` cannot be indexed by `{integer}`
|
||||
| ^^^^^ `String` cannot be indexed by `{integer}`
|
||||
|
|
||||
= help: the trait `Index<{integer}>` is not implemented for `String`
|
||||
= help: the following other types implement trait `Index<Idx>`:
|
||||
<String as Index<RangeFrom<usize>>>
|
||||
<String as Index<RangeFull>>
|
||||
<String as Index<RangeInclusive<usize>>>
|
||||
<String as Index<RangeTo<usize>>>
|
||||
<String as Index<RangeToInclusive<usize>>>
|
||||
<String as Index<std::ops::Range<usize>>>
|
||||
<str as Index<I>>
|
||||
|
||||
For more information about this error, try `rustc --explain E0277`.
|
||||
error: could not compile `collections` due to previous error
|
||||
|
@ -2,10 +2,12 @@ fn main() {
|
||||
// ANCHOR: here
|
||||
use std::collections::HashMap;
|
||||
|
||||
let teams = vec![String::from("Blue"), String::from("Yellow")];
|
||||
let initial_scores = vec![10, 50];
|
||||
let mut scores = HashMap::new();
|
||||
|
||||
let mut scores: HashMap<_, _> =
|
||||
teams.into_iter().zip(initial_scores.into_iter()).collect();
|
||||
scores.insert(String::from("Blue"), 10);
|
||||
scores.insert(String::from("Yellow"), 50);
|
||||
|
||||
let team_name = String::from("Blue");
|
||||
let score = scores.get(&team_name).copied().unwrap_or(0);
|
||||
// ANCHOR_END: here
|
||||
}
|
||||
|
@ -5,9 +5,8 @@ fn main() {
|
||||
let mut scores = HashMap::new();
|
||||
|
||||
scores.insert(String::from("Blue"), 10);
|
||||
scores.insert(String::from("Yellow"), 50);
|
||||
scores.insert(String::from("Blue"), 25);
|
||||
|
||||
let team_name = String::from("Blue");
|
||||
let score = scores.get(&team_name);
|
||||
println!("{:?}", scores);
|
||||
// ANCHOR_END: here
|
||||
}
|
||||
|
@ -3,9 +3,10 @@ fn main() {
|
||||
use std::collections::HashMap;
|
||||
|
||||
let mut scores = HashMap::new();
|
||||
|
||||
scores.insert(String::from("Blue"), 10);
|
||||
scores.insert(String::from("Blue"), 25);
|
||||
|
||||
scores.entry(String::from("Yellow")).or_insert(50);
|
||||
scores.entry(String::from("Blue")).or_insert(50);
|
||||
|
||||
println!("{:?}", scores);
|
||||
// ANCHOR_END: here
|
||||
|
@ -2,12 +2,15 @@ fn main() {
|
||||
// ANCHOR: here
|
||||
use std::collections::HashMap;
|
||||
|
||||
let mut scores = HashMap::new();
|
||||
scores.insert(String::from("Blue"), 10);
|
||||
let text = "hello world wonderful world";
|
||||
|
||||
scores.entry(String::from("Yellow")).or_insert(50);
|
||||
scores.entry(String::from("Blue")).or_insert(50);
|
||||
let mut map = HashMap::new();
|
||||
|
||||
println!("{:?}", scores);
|
||||
for word in text.split_whitespace() {
|
||||
let count = map.entry(word).or_insert(0);
|
||||
*count += 1;
|
||||
}
|
||||
|
||||
println!("{:?}", map);
|
||||
// ANCHOR_END: here
|
||||
}
|
||||
|
@ -4,6 +4,6 @@ fn main() {
|
||||
let s2 = String::from("tac");
|
||||
let s3 = String::from("toe");
|
||||
|
||||
let s = format!("{}-{}-{}", s1, s2, s3);
|
||||
let s = format!("{s1}-{s2}-{s3}");
|
||||
// ANCHOR_END: here
|
||||
}
|
||||
|
@ -8,7 +8,7 @@ fn main() {
|
||||
scores.insert(String::from("Yellow"), 50);
|
||||
|
||||
for (key, value) in &scores {
|
||||
println!("{}: {}", key, value);
|
||||
println!("{key}: {value}");
|
||||
}
|
||||
// ANCHOR_END: here
|
||||
}
|
||||
|
@ -1,5 +1,5 @@
|
||||
use std::fs::File;
|
||||
|
||||
fn main() {
|
||||
let f = File::open("hello.txt");
|
||||
let greeting_file_result = File::open("hello.txt");
|
||||
}
|
||||
|
@ -1,9 +1,9 @@
|
||||
use std::fs::File;
|
||||
|
||||
fn main() {
|
||||
let f = File::open("hello.txt");
|
||||
let greeting_file_result = File::open("hello.txt");
|
||||
|
||||
let f = match f {
|
||||
let greeting_file = match greeting_file_result {
|
||||
Ok(file) => file,
|
||||
Err(error) => panic!("Problem opening the file: {:?}", error),
|
||||
};
|
||||
|
@ -2,9 +2,9 @@ use std::fs::File;
|
||||
use std::io::ErrorKind;
|
||||
|
||||
fn main() {
|
||||
let f = File::open("hello.txt");
|
||||
let greeting_file_result = File::open("hello.txt");
|
||||
|
||||
let f = match f {
|
||||
let greeting_file = match greeting_file_result {
|
||||
Ok(file) => file,
|
||||
Err(error) => match error.kind() {
|
||||
ErrorKind::NotFound => match File::create("hello.txt") {
|
||||
@ -12,7 +12,7 @@ fn main() {
|
||||
Err(e) => panic!("Problem creating the file: {:?}", e),
|
||||
},
|
||||
other_error => {
|
||||
panic!("Problem opening the file: {:?}", other_error)
|
||||
panic!("Problem opening the file: {:?}", other_error);
|
||||
}
|
||||
},
|
||||
};
|
||||
|
@ -3,17 +3,17 @@ use std::fs::File;
|
||||
use std::io::{self, Read};
|
||||
|
||||
fn read_username_from_file() -> Result<String, io::Error> {
|
||||
let f = File::open("hello.txt");
|
||||
let username_file_result = File::open("hello.txt");
|
||||
|
||||
let mut f = match f {
|
||||
let mut username_file = match username_file_result {
|
||||
Ok(file) => file,
|
||||
Err(e) => return Err(e),
|
||||
};
|
||||
|
||||
let mut s = String::new();
|
||||
let mut username = String::new();
|
||||
|
||||
match f.read_to_string(&mut s) {
|
||||
Ok(_) => Ok(s),
|
||||
match username_file.read_to_string(&mut username) {
|
||||
Ok(_) => Ok(username),
|
||||
Err(e) => Err(e),
|
||||
}
|
||||
}
|
||||
|
@ -1,13 +1,12 @@
|
||||
// ANCHOR: here
|
||||
use std::fs::File;
|
||||
use std::io;
|
||||
use std::io::Read;
|
||||
use std::io::{self, Read};
|
||||
|
||||
fn read_username_from_file() -> Result<String, io::Error> {
|
||||
let mut f = File::open("hello.txt")?;
|
||||
let mut s = String::new();
|
||||
f.read_to_string(&mut s)?;
|
||||
Ok(s)
|
||||
let mut username_file = File::open("hello.txt")?;
|
||||
let mut username = String::new();
|
||||
username_file.read_to_string(&mut username)?;
|
||||
Ok(username)
|
||||
}
|
||||
// ANCHOR_END: here
|
||||
|
||||
|
@ -1,14 +1,13 @@
|
||||
// ANCHOR: here
|
||||
use std::fs::File;
|
||||
use std::io;
|
||||
use std::io::Read;
|
||||
use std::io::{self, Read};
|
||||
|
||||
fn read_username_from_file() -> Result<String, io::Error> {
|
||||
let mut s = String::new();
|
||||
let mut username = String::new();
|
||||
|
||||
File::open("hello.txt")?.read_to_string(&mut s)?;
|
||||
File::open("hello.txt")?.read_to_string(&mut username)?;
|
||||
|
||||
Ok(s)
|
||||
Ok(username)
|
||||
}
|
||||
// ANCHOR_END: here
|
||||
|
||||
|
@ -1,13 +1,12 @@
|
||||
$ cargo run
|
||||
Compiling error-handling v0.1.0 (file:///projects/error-handling)
|
||||
error[E0277]: the `?` operator can only be used in a function that returns `Result` or `Option` (or another type that implements `FromResidual`)
|
||||
--> src/main.rs:4:36
|
||||
--> src/main.rs:4:48
|
||||
|
|
||||
3 | / fn main() {
|
||||
4 | | let f = File::open("hello.txt")?;
|
||||
| | ^ cannot use the `?` operator in a function that returns `()`
|
||||
5 | | }
|
||||
| |_- this function should return `Result` or `Option` to accept `?`
|
||||
3 | fn main() {
|
||||
| --------- this function should return `Result` or `Option` to accept `?`
|
||||
4 | let greeting_file = File::open("hello.txt")?;
|
||||
| ^ cannot use the `?` operator in a function that returns `()`
|
||||
|
|
||||
= help: the trait `FromResidual<Result<Infallible, std::io::Error>>` is not implemented for `()`
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
use std::fs::File;
|
||||
|
||||
fn main() {
|
||||
let f = File::open("hello.txt")?;
|
||||
let greeting_file = File::open("hello.txt")?;
|
||||
}
|
||||
|
@ -2,7 +2,7 @@ use std::error::Error;
|
||||
use std::fs::File;
|
||||
|
||||
fn main() -> Result<(), Box<dyn Error>> {
|
||||
let f = File::open("hello.txt")?;
|
||||
let greeting_file = File::open("hello.txt")?;
|
||||
|
||||
Ok(())
|
||||
}
|
||||
|
@ -1,5 +1,7 @@
|
||||
# This file is automatically @generated by Cargo.
|
||||
# It is not intended for manual editing.
|
||||
version = 3
|
||||
|
||||
[[package]]
|
||||
name = "cfg-if"
|
||||
version = "1.0.0"
|
||||
@ -38,14 +40,13 @@ checksum = "ac74c624d6b2d21f425f752262f42188365d7b8ff1aff74c82e45136510a4857"
|
||||
|
||||
[[package]]
|
||||
name = "rand"
|
||||
version = "0.8.3"
|
||||
version = "0.8.5"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "0ef9e7e66b4468674bfcb0c81af8b7fa0bb154fa9f28eb840da5c447baeb8d7e"
|
||||
checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404"
|
||||
dependencies = [
|
||||
"libc",
|
||||
"rand_chacha",
|
||||
"rand_core",
|
||||
"rand_hc",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@ -67,15 +68,6 @@ dependencies = [
|
||||
"getrandom",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "rand_hc"
|
||||
version = "0.3.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "3190ef7066a446f2e7f42e239d161e905420ccab01eb967c9eb27d21b2322a73"
|
||||
dependencies = [
|
||||
"rand_core",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "wasi"
|
||||
version = "0.10.2+wasi-snapshot-preview1"
|
||||
|
@ -4,4 +4,4 @@ version = "0.1.0"
|
||||
edition = "2021"
|
||||
|
||||
[dependencies]
|
||||
rand = "0.8.3"
|
||||
rand = "0.8.5"
|
||||
|
@ -25,7 +25,7 @@ impl Guess {
|
||||
fn main() {
|
||||
println!("Guess the number!");
|
||||
|
||||
let secret_number = rand::thread_rng().gen_range(1..101);
|
||||
let secret_number = rand::thread_rng().gen_range(1..=100);
|
||||
|
||||
loop {
|
||||
println!("Please input your guess.");
|
||||
|
@ -1,5 +1,5 @@
|
||||
use std::fs::File;
|
||||
|
||||
fn main() {
|
||||
let f = File::open("hello.txt").unwrap();
|
||||
let greeting_file = File::open("hello.txt").unwrap();
|
||||
}
|
||||
|
@ -1,5 +1,6 @@
|
||||
use std::fs::File;
|
||||
|
||||
fn main() {
|
||||
let f = File::open("hello.txt").expect("Failed to open hello.txt");
|
||||
let greeting_file = File::open("hello.txt")
|
||||
.expect("hello.txt should be included in this project");
|
||||
}
|
||||
|
@ -2,6 +2,8 @@ fn main() {
|
||||
// ANCHOR: here
|
||||
use std::net::IpAddr;
|
||||
|
||||
let home: IpAddr = "127.0.0.1".parse().unwrap();
|
||||
let home: IpAddr = "127.0.0.1"
|
||||
.parse()
|
||||
.expect("Hardcoded IP address should be valid");
|
||||
// ANCHOR_END: here
|
||||
}
|
||||
|
@ -1,5 +1,7 @@
|
||||
# This file is automatically @generated by Cargo.
|
||||
# It is not intended for manual editing.
|
||||
version = 3
|
||||
|
||||
[[package]]
|
||||
name = "cfg-if"
|
||||
version = "1.0.0"
|
||||
@ -38,14 +40,13 @@ checksum = "ac74c624d6b2d21f425f752262f42188365d7b8ff1aff74c82e45136510a4857"
|
||||
|
||||
[[package]]
|
||||
name = "rand"
|
||||
version = "0.8.3"
|
||||
version = "0.8.5"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "0ef9e7e66b4468674bfcb0c81af8b7fa0bb154fa9f28eb840da5c447baeb8d7e"
|
||||
checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404"
|
||||
dependencies = [
|
||||
"libc",
|
||||
"rand_chacha",
|
||||
"rand_core",
|
||||
"rand_hc",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@ -67,15 +68,6 @@ dependencies = [
|
||||
"getrandom",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "rand_hc"
|
||||
version = "0.3.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "3190ef7066a446f2e7f42e239d161e905420ccab01eb967c9eb27d21b2322a73"
|
||||
dependencies = [
|
||||
"rand_core",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "wasi"
|
||||
version = "0.10.2+wasi-snapshot-preview1"
|
||||
|
@ -4,4 +4,4 @@ version = "0.1.0"
|
||||
edition = "2021"
|
||||
|
||||
[dependencies]
|
||||
rand = "0.8.3"
|
||||
rand = "0.8.5"
|
||||
|
@ -5,7 +5,7 @@ use std::io;
|
||||
fn main() {
|
||||
println!("Guess the number!");
|
||||
|
||||
let secret_number = rand::thread_rng().gen_range(1..101);
|
||||
let secret_number = rand::thread_rng().gen_range(1..=100);
|
||||
|
||||
// ANCHOR: here
|
||||
loop {
|
||||
|
@ -2,9 +2,9 @@
|
||||
fn main() {
|
||||
let number_list = vec![34, 50, 25, 100, 65];
|
||||
|
||||
let mut largest = number_list[0];
|
||||
let mut largest = &number_list[0];
|
||||
|
||||
for number in number_list {
|
||||
for number in &number_list {
|
||||
if number > largest {
|
||||
largest = number;
|
||||
}
|
||||
@ -12,7 +12,7 @@ fn main() {
|
||||
|
||||
println!("The largest number is {}", largest);
|
||||
// ANCHOR_END: here
|
||||
assert_eq!(largest, 100);
|
||||
assert_eq!(*largest, 100);
|
||||
// ANCHOR: here
|
||||
}
|
||||
// ANCHOR_END: here
|
||||
|
@ -1,9 +1,9 @@
|
||||
fn main() {
|
||||
let number_list = vec![34, 50, 25, 100, 65];
|
||||
|
||||
let mut largest = number_list[0];
|
||||
let mut largest = &number_list[0];
|
||||
|
||||
for number in number_list {
|
||||
for number in &number_list {
|
||||
if number > largest {
|
||||
largest = number;
|
||||
}
|
||||
@ -13,9 +13,9 @@ fn main() {
|
||||
|
||||
let number_list = vec![102, 34, 6000, 89, 54, 2, 43, 8];
|
||||
|
||||
let mut largest = number_list[0];
|
||||
let mut largest = &number_list[0];
|
||||
|
||||
for number in number_list {
|
||||
for number in &number_list {
|
||||
if number > largest {
|
||||
largest = number;
|
||||
}
|
||||
|
@ -1,8 +1,8 @@
|
||||
// ANCHOR: here
|
||||
fn largest(list: &[i32]) -> i32 {
|
||||
let mut largest = list[0];
|
||||
fn largest(list: &[i32]) -> &i32 {
|
||||
let mut largest = &list[0];
|
||||
|
||||
for &item in list {
|
||||
for item in list {
|
||||
if item > largest {
|
||||
largest = item;
|
||||
}
|
||||
@ -17,7 +17,7 @@ fn main() {
|
||||
let result = largest(&number_list);
|
||||
println!("The largest number is {}", result);
|
||||
// ANCHOR_END: here
|
||||
assert_eq!(result, 100);
|
||||
assert_eq!(*result, 100);
|
||||
// ANCHOR: here
|
||||
|
||||
let number_list = vec![102, 34, 6000, 89, 54, 2, 43, 8];
|
||||
@ -25,7 +25,7 @@ fn main() {
|
||||
let result = largest(&number_list);
|
||||
println!("The largest number is {}", result);
|
||||
// ANCHOR_END: here
|
||||
assert_eq!(result, 6000);
|
||||
assert_eq!(*result, 6000);
|
||||
// ANCHOR: here
|
||||
}
|
||||
// ANCHOR_END: here
|
||||
|
@ -1,8 +1,8 @@
|
||||
// ANCHOR: here
|
||||
fn largest_i32(list: &[i32]) -> i32 {
|
||||
let mut largest = list[0];
|
||||
fn largest_i32(list: &[i32]) -> &i32 {
|
||||
let mut largest = &list[0];
|
||||
|
||||
for &item in list {
|
||||
for item in list {
|
||||
if item > largest {
|
||||
largest = item;
|
||||
}
|
||||
@ -11,10 +11,10 @@ fn largest_i32(list: &[i32]) -> i32 {
|
||||
largest
|
||||
}
|
||||
|
||||
fn largest_char(list: &[char]) -> char {
|
||||
let mut largest = list[0];
|
||||
fn largest_char(list: &[char]) -> &char {
|
||||
let mut largest = &list[0];
|
||||
|
||||
for &item in list {
|
||||
for item in list {
|
||||
if item > largest {
|
||||
largest = item;
|
||||
}
|
||||
@ -29,7 +29,7 @@ fn main() {
|
||||
let result = largest_i32(&number_list);
|
||||
println!("The largest number is {}", result);
|
||||
// ANCHOR_END: here
|
||||
assert_eq!(result, 100);
|
||||
assert_eq!(*result, 100);
|
||||
// ANCHOR: here
|
||||
|
||||
let char_list = vec!['y', 'm', 'a', 'q'];
|
||||
@ -37,7 +37,7 @@ fn main() {
|
||||
let result = largest_char(&char_list);
|
||||
println!("The largest char is {}", result);
|
||||
// ANCHOR_END: here
|
||||
assert_eq!(result, 'y');
|
||||
assert_eq!(*result, 'y');
|
||||
// ANCHOR: here
|
||||
}
|
||||
// ANCHOR_END: here
|
||||
|
@ -1,16 +1,16 @@
|
||||
$ cargo run
|
||||
Compiling chapter10 v0.1.0 (file:///projects/chapter10)
|
||||
error[E0369]: binary operation `>` cannot be applied to type `T`
|
||||
error[E0369]: binary operation `>` cannot be applied to type `&T`
|
||||
--> src/main.rs:5:17
|
||||
|
|
||||
5 | if item > largest {
|
||||
| ---- ^ ------- T
|
||||
| ---- ^ ------- &T
|
||||
| |
|
||||
| T
|
||||
| &T
|
||||
|
|
||||
help: consider restricting type parameter `T`
|
||||
|
|
||||
1 | fn largest<T: std::cmp::PartialOrd>(list: &[T]) -> T {
|
||||
1 | fn largest<T: std::cmp::PartialOrd>(list: &[T]) -> &T {
|
||||
| ++++++++++++++++++++++
|
||||
|
||||
For more information about this error, try `rustc --explain E0369`.
|
||||
|
@ -1,7 +1,7 @@
|
||||
fn largest<T>(list: &[T]) -> T {
|
||||
let mut largest = list[0];
|
||||
fn largest<T>(list: &[T]) -> &T {
|
||||
let mut largest = &list[0];
|
||||
|
||||
for &item in list {
|
||||
for item in list {
|
||||
if item > largest {
|
||||
largest = item;
|
||||
}
|
||||
|
22
listings/ch10-generic-types-traits-and-lifetimes/listing-10-15/src/lib.rs
Executable file
22
listings/ch10-generic-types-traits-and-lifetimes/listing-10-15/src/lib.rs
Executable file
@ -0,0 +1,22 @@
|
||||
use std::fmt::Display;
|
||||
|
||||
struct Pair<T> {
|
||||
x: T,
|
||||
y: T,
|
||||
}
|
||||
|
||||
impl<T> Pair<T> {
|
||||
fn new(x: T, y: T) -> Self {
|
||||
Self { x, y }
|
||||
}
|
||||
}
|
||||
|
||||
impl<T: Display + PartialOrd> Pair<T> {
|
||||
fn cmp_display(&self) {
|
||||
if self.x >= self.y {
|
||||
println!("The largest member is x = {}", self.x);
|
||||
} else {
|
||||
println!("The largest member is y = {}", self.y);
|
||||
}
|
||||
}
|
||||
}
|
15
listings/ch10-generic-types-traits-and-lifetimes/listing-10-16/output.txt
Executable file
15
listings/ch10-generic-types-traits-and-lifetimes/listing-10-16/output.txt
Executable file
@ -0,0 +1,15 @@
|
||||
$ cargo run
|
||||
Compiling chapter10 v0.1.0 (file:///projects/chapter10)
|
||||
error[E0597]: `x` does not live long enough
|
||||
--> src/main.rs:6:13
|
||||
|
|
||||
6 | r = &x;
|
||||
| ^^ borrowed value does not live long enough
|
||||
7 | }
|
||||
| - `x` dropped here while still borrowed
|
||||
8 |
|
||||
9 | println!("r: {}", r);
|
||||
| - borrow later used here
|
||||
|
||||
For more information about this error, try `rustc --explain E0597`.
|
||||
error: could not compile `chapter10` due to previous error
|
10
listings/ch10-generic-types-traits-and-lifetimes/listing-10-16/src/main.rs
Executable file
10
listings/ch10-generic-types-traits-and-lifetimes/listing-10-16/src/main.rs
Executable file
@ -0,0 +1,10 @@
|
||||
fn main() {
|
||||
let r;
|
||||
|
||||
{
|
||||
let x = 5;
|
||||
r = &x;
|
||||
}
|
||||
|
||||
println!("r: {}", r);
|
||||
}
|
@ -1,5 +1,3 @@
|
||||
# This file is automatically @generated by Cargo.
|
||||
# It is not intended for manual editing.
|
||||
[[package]]
|
||||
name = "chapter10"
|
||||
version = "0.1.0"
|
||||
|
@ -0,0 +1,3 @@
|
||||
We have some weird comments pointing out borrowing scopes that we don't want to change;
|
||||
unfortunately I haven't found a way to skip them with rustfmt that works so for now we're going to
|
||||
manually skip those listings. See: https://github.com/rust-lang/rustfmt/issues/4028
|
@ -1,14 +1,10 @@
|
||||
fn main() {
|
||||
// ANCHOR: here
|
||||
{
|
||||
let r;
|
||||
|
||||
{
|
||||
let x = 5;
|
||||
r = &x;
|
||||
}
|
||||
|
||||
println!("r: {}", r);
|
||||
}
|
||||
// ANCHOR_END: here
|
||||
}
|
||||
let r; // ---------+-- 'a
|
||||
// |
|
||||
{ // |
|
||||
let x = 5; // -+-- 'b |
|
||||
r = &x; // | |
|
||||
} // -+ |
|
||||
// |
|
||||
println!("r: {}", r); // |
|
||||
} // ---------+
|
||||
|
@ -1,14 +1,8 @@
|
||||
fn main() {
|
||||
// ANCHOR: here
|
||||
{
|
||||
let r; // ---------+-- 'a
|
||||
// |
|
||||
{ // |
|
||||
let x = 5; // -+-- 'b |
|
||||
r = &x; // | |
|
||||
} // -+ |
|
||||
// |
|
||||
println!("r: {}", r); // |
|
||||
} // ---------+
|
||||
// ANCHOR_END: here
|
||||
}
|
||||
let x = 5; // ----------+-- 'b
|
||||
// |
|
||||
let r = &x; // --+-- 'a |
|
||||
// | |
|
||||
println!("r: {}", r); // | |
|
||||
// --+ |
|
||||
} // ----------+
|
||||
|
@ -1,3 +1,5 @@
|
||||
# This file is automatically @generated by Cargo.
|
||||
# It is not intended for manual editing.
|
||||
[[package]]
|
||||
name = "chapter10"
|
||||
version = "0.1.0"
|
||||
|
@ -1,12 +1,7 @@
|
||||
fn main() {
|
||||
// ANCHOR: here
|
||||
{
|
||||
let x = 5; // ----------+-- 'b
|
||||
// |
|
||||
let r = &x; // --+-- 'a |
|
||||
// | |
|
||||
println!("r: {}", r); // | |
|
||||
// --+ |
|
||||
} // ----------+
|
||||
// ANCHOR_END: here
|
||||
let string1 = String::from("abcd");
|
||||
let string2 = "xyz";
|
||||
|
||||
let result = longest(string1.as_str(), string2);
|
||||
println!("The longest string is {}", result);
|
||||
}
|
||||
|
16
listings/ch10-generic-types-traits-and-lifetimes/listing-10-20/output.txt
Executable file
16
listings/ch10-generic-types-traits-and-lifetimes/listing-10-20/output.txt
Executable file
@ -0,0 +1,16 @@
|
||||
$ cargo run
|
||||
Compiling chapter10 v0.1.0 (file:///projects/chapter10)
|
||||
error[E0106]: missing lifetime specifier
|
||||
--> src/main.rs:9:33
|
||||
|
|
||||
9 | fn longest(x: &str, y: &str) -> &str {
|
||||
| ---- ---- ^ expected named lifetime parameter
|
||||
|
|
||||
= help: this function's return type contains a borrowed value, but the signature does not say whether it is borrowed from `x` or `y`
|
||||
help: consider introducing a named lifetime parameter
|
||||
|
|
||||
9 | fn longest<'a>(x: &'a str, y: &'a str) -> &'a str {
|
||||
| ++++ ++ ++ ++
|
||||
|
||||
For more information about this error, try `rustc --explain E0106`.
|
||||
error: could not compile `chapter10` due to previous error
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user