Skip to content
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

Upgrade to Rust 1.81 #4031

Merged
merged 1 commit into from
Sep 11, 2024
Merged
Show file tree
Hide file tree
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
8 changes: 4 additions & 4 deletions .github/workflows/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,8 @@ jobs:
- name: Install Rust
run: |
rustup set profile minimal
rustup toolchain install 1.79 -c rust-docs
rustup default 1.79
rustup toolchain install 1.81 -c rust-docs
rustup default 1.81
- name: Install mdbook
run: |
mkdir bin
Expand All @@ -36,8 +36,8 @@ jobs:
- name: Install Rust
run: |
rustup set profile minimal
rustup toolchain install 1.79 -c rust-docs
rustup default 1.79
rustup toolchain install 1.81 -c rust-docs
rustup default 1.81
- name: Run `tools` package tests
run: |
cargo test
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,10 @@
$ cargo build
Downloading crates ...
Downloaded rand_core v0.6.2
Downloaded getrandom v0.2.2
Downloaded rand_chacha v0.3.0
Downloaded ppv-lite86 v0.2.10
Downloaded libc v0.2.86
Compiling libc v0.2.86
Compiling getrandom v0.2.2
Compiling cfg-if v1.0.0
Expand All @@ -18,7 +24,7 @@ error[E0308]: mismatched types
= note: expected reference `&String`
found reference `&{integer}`
note: method defined here
--> /rustc/129f3b9964af4d4a709d1383930ade12dfe7c081/library/core/src/cmp.rs:840:8
--> /rustc/eeb90cda1969383f56a2637cbd3037bdf598841c/library/core/src/cmp.rs:839:8

For more information about this error, try `rustc --explain E0308`.
error: could not compile `guessing_game` (bin "guessing_game") due to 1 previous error
Original file line number Diff line number Diff line change
Expand Up @@ -4,13 +4,15 @@ error[E0384]: cannot assign twice to immutable variable `x`
--> src/main.rs:4:5
|
2 | let x = 5;
| -
| |
| first assignment to `x`
| help: consider making this binding mutable: `mut x`
| - first assignment to `x`
3 | println!("The value of x is: {x}");
4 | x = 6;
| ^^^^^ cannot assign twice to immutable variable
|
help: consider making this binding mutable
|
2 | let mut x = 5;
| +++

For more information about this error, try `rustc --explain E0384`.
error: could not compile `variables` (bin "variables") due to 1 previous error
Original file line number Diff line number Diff line change
Expand Up @@ -8,10 +8,10 @@ error[E0277]: cannot add `Option<i8>` to `i8`
|
= help: the trait `Add<Option<i8>>` is not implemented for `i8`
= help: the following other types implement trait `Add<Rhs>`:
<&'a i8 as Add<i8>>
<&i8 as Add<&i8>>
<i8 as Add<&i8>>
<i8 as Add>
`&'a i8` implements `Add<i8>`
`&i8` implements `Add<&i8>`
`i8` implements `Add<&i8>`
`i8` implements `Add`

For more information about this error, try `rustc --explain E0277`.
error: could not compile `enums` (bin "enums") due to 1 previous error
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,8 @@ error[E0004]: non-exhaustive patterns: `None` not covered
| ^ pattern `None` not covered
|
note: `Option<i32>` defined here
--> /rustc/129f3b9964af4d4a709d1383930ade12dfe7c081/library/core/src/option.rs:571:1
::: /rustc/129f3b9964af4d4a709d1383930ade12dfe7c081/library/core/src/option.rs:575:5
--> /rustc/eeb90cda1969383f56a2637cbd3037bdf598841c/library/core/src/option.rs:574:1
::: /rustc/eeb90cda1969383f56a2637cbd3037bdf598841c/library/core/src/option.rs:578:5
|
= note: not covered
= note: the matched value is of type `Option<i32>`
Expand Down
8 changes: 8 additions & 0 deletions listings/ch09-error-handling/listing-09-10/output.txt
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,14 @@ error[E0277]: the `?` operator can only be used in a function that returns `Resu
| ^ cannot use the `?` operator in a function that returns `()`
|
= help: the trait `FromResidual<Result<Infallible, std::io::Error>>` is not implemented for `()`
help: consider adding return type
|
3 ~ fn main() -> Result<(), Box<dyn std::error::Error>> {
4 | let greeting_file = File::open("hello.txt")?;
5 +
6 + Ok(())
7 + }
|

For more information about this error, try `rustc --explain E0277`.
error: could not compile `error-handling` (bin "error-handling") due to 1 previous error
2 changes: 1 addition & 1 deletion listings/ch13-functional-features/listing-13-04/output.txt
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
$ cargo run
Locking 1 package to latest compatible version
Adding closure-example v0.1.0 (/Users/carolnichols/rust/book/tmp/listings/ch13-functional-features/listing-13-04)
Adding closure-example v0.1.0 (/Users/chris/dev/rust-lang/book/tmp/listings/ch13-functional-features/listing-13-04)
Compiling closure-example v0.1.0 (file:///projects/closure-example)
Finished `dev` profile [unoptimized + debuginfo] target(s) in 0.43s
Running `target/debug/closure-example`
Expand Down
2 changes: 1 addition & 1 deletion listings/ch13-functional-features/listing-13-05/output.txt
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
$ cargo run
Locking 1 package to latest compatible version
Adding closure-example v0.1.0 (/Users/carolnichols/rust/book/tmp/listings/ch13-functional-features/listing-13-05)
Adding closure-example v0.1.0 (/Users/chris/dev/rust-lang/book/tmp/listings/ch13-functional-features/listing-13-05)
Compiling closure-example v0.1.0 (file:///projects/closure-example)
Finished `dev` profile [unoptimized + debuginfo] target(s) in 0.43s
Running `target/debug/closure-example`
Expand Down
2 changes: 1 addition & 1 deletion listings/ch15-smart-pointers/listing-15-21/output.txt
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ help: consider changing this to be a mutable reference in the `impl` method and
|
2 ~ fn send(&mut self, msg: &str);
3 | }
...
...
56 | impl Messenger for MockMessenger {
57 ~ fn send(&mut self, message: &str) {
|
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ note: required because it's used within this closure
11 | let handle = thread::spawn(move || {
| ^^^^^^^
note: required by a bound in `spawn`
--> /rustc/129f3b9964af4d4a709d1383930ade12dfe7c081/library/std/src/thread/mod.rs:691:1
--> /rustc/eeb90cda1969383f56a2637cbd3037bdf598841c/library/std/src/thread/mod.rs:688:1

For more information about this error, try `rustc --explain E0277`.
error: could not compile `shared-state` (bin "shared-state") due to 1 previous error
Original file line number Diff line number Diff line change
Expand Up @@ -6,11 +6,11 @@ error[E0746]: return type cannot have an unboxed trait object
1 | fn returns_closure() -> dyn Fn(i32) -> i32 {
| ^^^^^^^^^^^^^^^^^^ doesn't have a size known at compile-time
|
help: return an `impl Trait` instead of a `dyn Trait`, if all returned values are the same type
help: consider returning an `impl Trait` instead of a `dyn Trait`
|
1 | fn returns_closure() -> impl Fn(i32) -> i32 {
| ~~~~
help: box the return type, and wrap all of the returned values in `Box::new`
help: alternatively, box the return type, and wrap all of the returned values in `Box::new`
|
1 ~ fn returns_closure() -> Box<dyn Fn(i32) -> i32> {
2 ~ Box::new(|x| x + 1)
Expand Down
2 changes: 1 addition & 1 deletion listings/ch20-web-server/listing-20-22/output.txt
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ error[E0507]: cannot move out of `worker.thread` which is behind a mutable refer
| move occurs because `worker.thread` has type `JoinHandle<()>`, which does not implement the `Copy` trait
|
note: `JoinHandle::<T>::join` takes ownership of the receiver `self`, which moves `worker.thread`
--> /rustc/129f3b9964af4d4a709d1383930ade12dfe7c081/library/std/src/thread/mod.rs:1718:17
--> /rustc/eeb90cda1969383f56a2637cbd3037bdf598841c/library/std/src/thread/mod.rs:1778:17

For more information about this error, try `rustc --explain E0507`.
error: could not compile `hello` (lib) due to 1 previous error
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ error[E0599]: no method named `join` found for enum `Option` in the current scop
| ^^^^ method not found in `Option<JoinHandle<()>>`
|
note: the method `join` exists on the type `JoinHandle<()>`
--> /rustc/129f3b9964af4d4a709d1383930ade12dfe7c081/library/std/src/thread/mod.rs:1718:5
--> /rustc/eeb90cda1969383f56a2637cbd3037bdf598841c/library/std/src/thread/mod.rs:1778:5
help: consider using `Option::expect` to unwrap the `JoinHandle<()>` value, panicking if the value is an `Option::None`
|
52 | worker.thread.expect("REASON").join().unwrap();
Expand Down
64 changes: 56 additions & 8 deletions packages/tools/src/bin/release_listings.rs
Original file line number Diff line number Diff line change
Expand Up @@ -28,26 +28,59 @@ fn main() -> Result<(), Box<dyn Error>> {
let chapter = chapter?;
let chapter_path = chapter.path();

if !chapter_path.is_dir() {
eprintln!(
"'{}' is not a directory, skipping",
chapter_path.display()
);
continue;
}

let chapter_name = chapter_path
.file_name()
.expect("Chapter should've had a name");

// Create a corresponding chapter dir in `tmp/listings`
let output_chapter_path = out_dir.join(chapter_name);
fs::create_dir(&output_chapter_path)?;
fs::create_dir(&output_chapter_path).map_err(|e| {
format!(
"could not create dir at '{}': {e}",
output_chapter_path.display()
)
})?;

// For each listing in the chapter directory,
for listing in fs::read_dir(chapter_path)? {
let listing = listing?;
for listing in fs::read_dir(&chapter_path).map_err(|e| {
format!("Could not read '{}': {e}", chapter_path.display())
})? {
let listing = listing.map_err(|e| {
format!(
"bad dir entry listing in {}: {e}",
chapter_path.display()
)
})?;
let listing_path = listing.path();

if !listing_path.is_dir() {
eprintln!(
"'{}' is not a directory, skipping",
chapter_path.display()
);
continue;
}

let listing_name = listing_path
.file_name()
.expect("Listing should've had a name");

// Create a corresponding listing dir in the tmp chapter dir
let output_listing_dir = output_chapter_path.join(listing_name);
fs::create_dir(&output_listing_dir)?;
fs::create_dir(&output_listing_dir).map_err(|e| {
format!(
"could not create dir '{}': {e}",
output_listing_dir.display()
)
})?;

// Copy all the cleaned files in the listing to the tmp directory
copy_cleaned_listing_files(listing_path, output_listing_dir)?;
Expand Down Expand Up @@ -79,8 +112,12 @@ fn copy_cleaned_listing_files(
from: PathBuf,
to: PathBuf,
) -> Result<(), Box<dyn Error>> {
for item in fs::read_dir(from)? {
let item = item?;
for item in fs::read_dir(&from).map_err(|e| {
format!("Could not read_dir on '{}': {e}", from.display())
})? {
let item = item.map_err(|e| {
format!("invalid dir entry in {}: {e}", from.display())
})?;
let item_path = item.path();

let item_name =
Expand All @@ -90,7 +127,12 @@ fn copy_cleaned_listing_files(
if item_path.is_dir() {
// Don't copy `target` directories
if item_name != "target" {
fs::create_dir(&output_item)?;
fs::create_dir(&output_item).map_err(|e| {
format!(
"Could not create output directory '{}': {e}",
output_item.display()
)
})?;
copy_cleaned_listing_files(item_path, output_item)?;
}
} else {
Expand All @@ -105,7 +147,13 @@ fn copy_cleaned_listing_files(
)?;
} else {
// Copy any non-Rust files without modification
fs::copy(item_path, output_item)?;
fs::copy(&item_path, &output_item).map_err(|e| {
format!(
"Could not copy from '{}' to '{}': {e}",
item_path.display(),
output_item.display()
)
})?;
}
}
}
Expand Down
2 changes: 1 addition & 1 deletion rust-toolchain
Original file line number Diff line number Diff line change
@@ -1 +1 @@
1.79
1.81
2 changes: 1 addition & 1 deletion src/title-page.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

*by Steve Klabnik and Carol Nichols, with contributions from the Rust Community*

This version of the text assumes you’re using Rust 1.79.0 (released 2024-06-13)
This version of the text assumes you’re using Rust 1.81.0 (released 2024-09-04)
or later. See the [“Installation” section of Chapter 1][install]<!-- ignore -->
to install or update Rust.

Expand Down