[INFO] cloning repository https://github.com/yxxuweb/rust-inviting
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/yxxuweb/rust-inviting" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fyxxuweb%2Frust-inviting", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fyxxuweb%2Frust-inviting'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] f67d507607e49d58245979d382fe7f046314fb47
[INFO] testing yxxuweb/rust-inviting against try#bd7d74411512a3dd3b35d2f699c51dd2557c7e7e+cargoflags=-Zbuild-dir-new-layout for pr-149852-1
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fyxxuweb%2Frust-inviting" "/workspace/builds/worker-2-tc2/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-2-tc2/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/yxxuweb/rust-inviting
[INFO] finished tweaking git repo https://github.com/yxxuweb/rust-inviting
[INFO] tweaked toml for git repo https://github.com/yxxuweb/rust-inviting written to /workspace/builds/worker-2-tc2/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/yxxuweb/rust-inviting on toolchain bd7d74411512a3dd3b35d2f699c51dd2557c7e7e
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+bd7d74411512a3dd3b35d2f699c51dd2557c7e7e" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/yxxuweb/rust-inviting already has a lockfile, it will not be regenerated
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+bd7d74411512a3dd3b35d2f699c51dd2557c7e7e" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:98afbf2d16093dec2546ff8915fddc74e65664aa03fc460b3712b1c2c54a33e4" "/opt/rustwide/cargo-home/bin/cargo" "+bd7d74411512a3dd3b35d2f699c51dd2557c7e7e" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] d9cf24b6b85ac2e9810271d8cacf431e011e58ae96b2fbd6cfaccc5cea8ed314
[INFO] running `Command { std: "docker" "start" "-a" "d9cf24b6b85ac2e9810271d8cacf431e011e58ae96b2fbd6cfaccc5cea8ed314", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "d9cf24b6b85ac2e9810271d8cacf431e011e58ae96b2fbd6cfaccc5cea8ed314", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "d9cf24b6b85ac2e9810271d8cacf431e011e58ae96b2fbd6cfaccc5cea8ed314", kill_on_drop: false }`
[INFO] [stdout] d9cf24b6b85ac2e9810271d8cacf431e011e58ae96b2fbd6cfaccc5cea8ed314
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:98afbf2d16093dec2546ff8915fddc74e65664aa03fc460b3712b1c2c54a33e4" "/opt/rustwide/cargo-home/bin/cargo" "+bd7d74411512a3dd3b35d2f699c51dd2557c7e7e" "build" "--frozen" "--message-format=json" "-Zbuild-dir-new-layout", kill_on_drop: false }`
[INFO] [stdout] 26850cd28297b4ed745efafde5be1787e9abc8157d29f6edd66155010f094c06
[INFO] running `Command { std: "docker" "start" "-a" "26850cd28297b4ed745efafde5be1787e9abc8157d29f6edd66155010f094c06", kill_on_drop: false }`
[INFO] [stderr]    Compiling inviting-rust v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused return value of `collect` that must be used
[INFO] [stdout]    --> src/ch01/lexical.rs:129:5
[INFO] [stdout]     |
[INFO] [stdout] 129 |     (0..10).collect::<Vec<_>>();
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: if you really need to exhaust the iterator, consider `.for_each(drop)` instead
[INFO] [stdout]     = note: `#[warn(unused_must_use)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 129 |     let _ = (0..10).collect::<Vec<_>>();
[INFO] [stdout]     |     +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused return value of `Vec::<T>::with_capacity` that must be used
[INFO] [stdout]    --> src/ch01/lexical.rs:130:5
[INFO] [stdout]     |
[INFO] [stdout] 130 |     Vec::<u8>::with_capacity(1024);
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 130 |     let _ = Vec::<u8>::with_capacity(1024);
[INFO] [stdout]     |     +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 0.27s
[INFO] running `Command { std: "docker" "inspect" "26850cd28297b4ed745efafde5be1787e9abc8157d29f6edd66155010f094c06", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "26850cd28297b4ed745efafde5be1787e9abc8157d29f6edd66155010f094c06", kill_on_drop: false }`
[INFO] [stdout] 26850cd28297b4ed745efafde5be1787e9abc8157d29f6edd66155010f094c06
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:98afbf2d16093dec2546ff8915fddc74e65664aa03fc460b3712b1c2c54a33e4" "/opt/rustwide/cargo-home/bin/cargo" "+bd7d74411512a3dd3b35d2f699c51dd2557c7e7e" "test" "--frozen" "--no-run" "--message-format=json" "-Zbuild-dir-new-layout", kill_on_drop: false }`
[INFO] [stdout] 2b7144a2a15fc2922e999d71924ae479fd90f1a0d73e5b5b28a7a34486638bb0
[INFO] running `Command { std: "docker" "start" "-a" "2b7144a2a15fc2922e999d71924ae479fd90f1a0d73e5b5b28a7a34486638bb0", kill_on_drop: false }`
[INFO] [stderr]    Compiling inviting-rust v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused return value of `collect` that must be used
[INFO] [stdout]    --> src/ch01/lexical.rs:129:5
[INFO] [stdout]     |
[INFO] [stdout] 129 |     (0..10).collect::<Vec<_>>();
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: if you really need to exhaust the iterator, consider `.for_each(drop)` instead
[INFO] [stdout]     = note: `#[warn(unused_must_use)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 129 |     let _ = (0..10).collect::<Vec<_>>();
[INFO] [stdout]     |     +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused return value of `Vec::<T>::with_capacity` that must be used
[INFO] [stdout]    --> src/ch01/lexical.rs:130:5
[INFO] [stdout]     |
[INFO] [stdout] 130 |     Vec::<u8>::with_capacity(1024);
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 130 |     let _ = Vec::<u8>::with_capacity(1024);
[INFO] [stdout]     |     +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused return value of `collect` that must be used
[INFO] [stdout]    --> src/ch01/lexical.rs:129:5
[INFO] [stdout]     |
[INFO] [stdout] 129 |     (0..10).collect::<Vec<_>>();
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: if you really need to exhaust the iterator, consider `.for_each(drop)` instead
[INFO] [stdout]     = note: `#[warn(unused_must_use)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 129 |     let _ = (0..10).collect::<Vec<_>>();
[INFO] [stdout]     |     +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused return value of `Vec::<T>::with_capacity` that must be used
[INFO] [stdout]    --> src/ch01/lexical.rs:130:5
[INFO] [stdout]     |
[INFO] [stdout] 130 |     Vec::<u8>::with_capacity(1024);
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 130 |     let _ = Vec::<u8>::with_capacity(1024);
[INFO] [stdout]     |     +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 0.26s
[INFO] running `Command { std: "docker" "inspect" "2b7144a2a15fc2922e999d71924ae479fd90f1a0d73e5b5b28a7a34486638bb0", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "2b7144a2a15fc2922e999d71924ae479fd90f1a0d73e5b5b28a7a34486638bb0", kill_on_drop: false }`
[INFO] [stdout] 2b7144a2a15fc2922e999d71924ae479fd90f1a0d73e5b5b28a7a34486638bb0
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:98afbf2d16093dec2546ff8915fddc74e65664aa03fc460b3712b1c2c54a33e4" "/opt/rustwide/cargo-home/bin/cargo" "+bd7d74411512a3dd3b35d2f699c51dd2557c7e7e" "test" "--frozen" "-Zbuild-dir-new-layout", kill_on_drop: false }`
[INFO] [stdout] 59c79095e865d8c8b2a47d42bfbff5f57120d9ba6e55f2c6bc7cc2e3fb07fb23
[INFO] running `Command { std: "docker" "start" "-a" "59c79095e865d8c8b2a47d42bfbff5f57120d9ba6e55f2c6bc7cc2e3fb07fb23", kill_on_drop: false }`
[INFO] [stderr] warning: unused return value of `collect` that must be used
[INFO] [stderr]    --> src/ch01/lexical.rs:129:5
[INFO] [stderr]     |
[INFO] [stderr] 129 |     (0..10).collect::<Vec<_>>();
[INFO] [stderr]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: if you really need to exhaust the iterator, consider `.for_each(drop)` instead
[INFO] [stderr]     = note: `#[warn(unused_must_use)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] help: use `let _ = ...` to ignore the resulting value
[INFO] [stderr]     |
[INFO] [stderr] 129 |     let _ = (0..10).collect::<Vec<_>>();
[INFO] [stderr]     |     +++++++
[INFO] [stderr] 
[INFO] [stderr] warning: unused return value of `Vec::<T>::with_capacity` that must be used
[INFO] [stderr]    --> src/ch01/lexical.rs:130:5
[INFO] [stderr]     |
[INFO] [stderr] 130 |     Vec::<u8>::with_capacity(1024);
[INFO] [stderr]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr] help: use `let _ = ...` to ignore the resulting value
[INFO] [stderr]     |
[INFO] [stderr] 130 |     let _ = Vec::<u8>::with_capacity(1024);
[INFO] [stderr]     |     +++++++
[INFO] [stderr] 
[INFO] [stderr] warning: `inviting-rust` (lib) generated 2 warnings
[INFO] [stderr] warning: `inviting-rust` (lib test) generated 2 warnings (2 duplicates)
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 0.04s
[INFO] [stderr]      Running unittests src/lib.rs (/opt/rustwide/target/debug/build/inviting-rust/c0293b1417eca3c3/deps/inviting_rust-c0293b1417eca3c3)
[INFO] [stdout] 
[INFO] [stderr]    Doc-tests inviting_rust
[INFO] [stdout] running 0 tests
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] running 148 tests
[INFO] [stdout] test src/ch01/ctfe.rs - ch01::ctfe::must_const_expr (line 10) ... FAILED
[INFO] [stdout] test src/ch01/ctfe.rs - ch01::ctfe::mir_show (line 186) ... FAILED
[INFO] [stdout] test src/ch01/ctfe.rs - ch01::ctfe::const_fn_error (line 122) ... FAILED
[INFO] [stdout] test src/ch01/ctfe.rs - ch01::ctfe::others_const_fn (line 168) ... FAILED
[INFO] [stdout] test src/ch01/ctfe.rs - ch01::ctfe::const_generic_show (line 241) ... FAILED
[INFO] [stdout] test src/ch01/lexical.rs - ch01::lexical::path_show (line 86) ... FAILED
[INFO] [stdout] test src/ch01/lexical.rs - ch01::lexical::macro_show (line 42) ... ok
[INFO] [stdout] test src/ch01/ctfe.rs - ch01::ctfe::fixed_const_fn_error (line 146) ... ok
[INFO] [stdout] test src/ch01/expr.rs - ch01::expr::fizzbuzz_match (line 76) ... ok
[INFO] [stdout] test src/ch01/lexical.rs - ch01::lexical::outer_module (line 133) ... FAILED
[INFO] [stdout] test src/ch01/ctfe.rs - ch01::ctfe::const_fib (line 43) ... ok
[INFO] [stdout] test src/ch01/ctfe.rs - ch01::ctfe::const_array_len (line 26) ... ok
[INFO] [stdout] test src/ch01/ctfe.rs - ch01::ctfe::if_while_true (line 205) ... FAILED
[INFO] [stdout] test src/ch01/expr.rs - ch01::expr::semi_and_block_expr (line 50) ... FAILED
[INFO] [stdout] test src/ch01/lexical.rs - ch01::lexical::ident_show (line 12) ... ok
[INFO] [stdout] test src/ch01/ctfe.rs - ch01::ctfe::const_fn_ (line 87) ... ok
[INFO] [stdout] test src/ch01/expr.rs - ch01::expr::eop (line 11) ... ok
[INFO] [stdout] test src/ch01/mod.rs - ch01::title (line 12) ... ok
[INFO] [stdout] test src/ch01/ctfe.rs - ch01::ctfe::array_chunk_show (line 299) ... FAILED
[INFO] [stdout] test src/ch01/expr.rs - ch01::expr::fizzbuzz_if (line 97) ... ok
[INFO] [stdout] test src/ch02/s1_ownership.rs - ch02::s1_ownership::understand_copy_clone (line 136) ... ok
[INFO] [stdout] test src/ch02/s1_ownership.rs - ch02::s1_ownership::primitive_types (line 42) ... ok
[INFO] [stdout] test src/ch02/s1_ownership.rs - ch02::s1_ownership::understand_drop (line 419) ... FAILED
[INFO] [stdout] test src/ch02/s1_ownership.rs - ch02::s1_ownership::understand_drop (line 356) ... FAILED
[INFO] [stdout] test src/ch02/s1_ownership.rs - ch02::s1_ownership::understand_drop (line 312) ... ok
[INFO] [stdout] test src/ch02/s1_ownership.rs - ch02::s1_ownership::custom_types (line 90) ... FAILED
[INFO] [stdout] test src/ch02/s1_ownership.rs - ch02::s1_ownership::understand_drop (line 402) ... FAILED
[INFO] [stdout] test src/ch02/s2_lifetime.rs - ch02::s2_lifetime::understand_lifetime (line 100) ... FAILED
[INFO] [stdout] test src/ch02/s1_ownership.rs - ch02::s1_ownership::understand_copy (line 243) ... ok
[INFO] [stdout] test src/ch02/s1_ownership.rs - ch02::s1_ownership::understand_copy (line 166) ... ok
[INFO] [stdout] test src/ch02/s2_lifetime.rs - ch02::s2_lifetime::understand_lifetime (line 117) ... FAILED
[INFO] [stdout] test src/ch02/s1_ownership.rs - ch02::s1_ownership::understand_drop (line 326) ... ok
[INFO] [stdout] test src/ch02/s1_ownership.rs - ch02::s1_ownership::understand_copy (line 179) ... ok
[INFO] [stdout] test src/ch02/s1_ownership.rs - ch02::s1_ownership::understand_move (line 280) ... FAILED
[INFO] [stdout] test src/ch02/s2_lifetime.rs - ch02::s2_lifetime::understand_lifetime_early_late_bound (line 194) ... FAILED
[INFO] [stdout] test src/ch02/s1_ownership.rs - ch02::s1_ownership::understand_copy (line 212) ... FAILED
[INFO] [stdout] test src/ch02/s1_ownership.rs - ch02::s1_ownership::understand_drop (line 372) ... ok
[INFO] [stdout] test src/ch02/s2_lifetime.rs - ch02::s2_lifetime::understand_lifetime (line 68) ... FAILED
[INFO] [stdout] test src/ch02/s1_ownership.rs - ch02::s1_ownership::understand_drop (line 341) ... ok
[INFO] [stdout] test src/ch02/s2_lifetime.rs - ch02::s2_lifetime::understand_lifetime_early_late_bound (line 143) ... FAILED
[INFO] [stdout] test src/ch02/s2_lifetime.rs - ch02::s2_lifetime::understand_lifetime (line 84) ... FAILED
[INFO] [stdout] test src/ch02/s2_lifetime.rs - ch02::s2_lifetime::understand_lifetime_for_closure (line 236) ... FAILED
[INFO] [stdout] test src/ch02/s3_thread_safe.rs - ch02::s3_thread_safe::understand_channel_and_condvar (line 355) ... FAILED
[INFO] [stdout] test src/ch02/s2_lifetime.rs - ch02::s2_lifetime::understand_lifetime_hrtb (line 402) ... FAILED
[INFO] [stdout] test src/ch02/s2_lifetime.rs - ch02::s2_lifetime::understand_nll (line 30) ... FAILED
[INFO] [stdout] test src/ch02/s2_lifetime.rs - ch02::s2_lifetime::understand_lifetime_hrtb (line 424) ... FAILED
[INFO] [stdout] test src/ch02/s3_thread_safe.rs - ch02::s3_thread_safe::understand_channel_and_condvar (line 250) ... FAILED
[INFO] [stdout] test src/ch02/s2_lifetime.rs - ch02::s2_lifetime::understand_lifetime_in_generic_type (line 306) ... FAILED
[INFO] [stdout] test src/ch02/s2_lifetime.rs - ch02::s2_lifetime::understand_lifetime_hrtb (line 383) ... ok
[INFO] [stdout] test src/ch02/s1_ownership.rs - ch02::s1_ownership::understand_move (line 262) ... ok
[INFO] [stdout] test src/ch02/s3_thread_safe.rs - ch02::s3_thread_safe::understand_shared_thread (line 128) ... FAILED
[INFO] [stdout] test src/ch02/s1_ownership.rs - ch02::s1_ownership::understand_drop (line 439) ... FAILED
[INFO] [stdout] test src/ch02/s2_lifetime.rs - ch02::s2_lifetime::understand_lifetime_in_generic_type (line 274) ... ok
[INFO] [stdout] test src/ch02/s3_thread_safe.rs - ch02::s3_thread_safe::understand_shared_thread (line 61) ... FAILED
[INFO] [stdout] test src/ch02/s3_thread_safe.rs - ch02::s3_thread_safe::understand_channel_and_condvar (line 462) ... FAILED
[INFO] [stdout] test src/ch02/s2_lifetime.rs - ch02::s2_lifetime::understand_lifetime_early_late_bound (line 159) ... ok
[INFO] [stdout] test src/ch02/s3_thread_safe.rs - ch02::s3_thread_safe::understand_shared_thread (line 77) ... FAILED
[INFO] [stdout] test src/ch02/s3_thread_safe.rs - ch02::s3_thread_safe::understand_shared_thread (line 150) ... FAILED
[INFO] [stdout] test src/ch02/s2_lifetime.rs - ch02::s2_lifetime::understand_lifetime_for_closure (line 251) ... ok
[INFO] [stdout] test src/ch02/s3_thread_safe.rs - ch02::s3_thread_safe::understand_channel_and_condvar (line 756) ... FAILED
[INFO] [stdout] test src/ch02/s2_lifetime.rs - ch02::s2_lifetime::understand_scope (line 10) ... ok
[INFO] [stdout] test src/ch02/s4_lockfree.rs - ch02::s4_lockfree::memory_reordering (line 220) ... ok
[INFO] [stdout] test src/ch02/s5_trait_and_generic.rs - ch02::s5_trait_and_generic::blanket_impls (line 633) ... FAILED
[INFO] [stdout] test src/ch02/s2_lifetime.rs - ch02::s2_lifetime::understand_lifetime_hrtb (line 447) ... FAILED
[INFO] [stdout] test src/ch02/s2_lifetime.rs - ch02::s2_lifetime::understand_lifetime_in_generic_type (line 337) ... ok
[INFO] [stdout] test src/ch02/s4_lockfree.rs - ch02::s4_lockfree::memory_reordering (line 131) ... ok
[INFO] [stdout] test src/ch02/s3_thread_safe.rs - ch02::s3_thread_safe::understand_shared_thread (line 49) ... ok
[INFO] [stdout] test src/ch02/s5_trait_and_generic.rs - ch02::s5_trait_and_generic::object_safety (line 402) ... FAILED
[INFO] [stdout] test src/ch02/s3_thread_safe.rs - ch02::s3_thread_safe::understand_channel_and_condvar (line 974) ... FAILED
[INFO] [stdout] test src/ch02/s5_trait_and_generic.rs - ch02::s5_trait_and_generic::object_safety (line 377) ... FAILED
[INFO] [stdout] test src/ch02/s5_trait_and_generic.rs - ch02::s5_trait_and_generic::blanket_impls (line 660) ... FAILED
[INFO] [stdout] test src/ch02/s5_trait_and_generic.rs - ch02::s5_trait_and_generic::trait_dyn_dispatch (line 114) ... FAILED
[INFO] [stdout] test src/ch02/s5_trait_and_generic.rs - ch02::s5_trait_and_generic::trait_concept (line 41) ... FAILED
[INFO] [stdout] test src/ch02/s3_thread_safe.rs - ch02::s3_thread_safe::understand_channel_and_condvar (line 573) ... FAILED
[INFO] [stdout] test src/ch02/s5_trait_and_generic.rs - ch02::s5_trait_and_generic::blanket_impls (line 674) ... FAILED
[INFO] [stdout] test src/ch02/s5_trait_and_generic.rs - ch02::s5_trait_and_generic::trait_object (line 193) ... FAILED
[INFO] [stdout] test src/ch02/s5_trait_and_generic.rs - ch02::s5_trait_and_generic::trait_object (line 337) ... FAILED
[INFO] [stdout] test src/ch02/s5_trait_and_generic.rs - ch02::s5_trait_and_generic::trait_concept (line 78) ... FAILED
[INFO] [stdout] test src/ch02/s5_trait_and_generic.rs - ch02::s5_trait_and_generic::trait_concept (line 29) ... ok
[INFO] [stdout] test src/ch02/s3_thread_safe.rs - ch02::s3_thread_safe::understand_safed_shared_thread (line 178) ... ok
[INFO] [stdout] test src/ch02/s5_trait_and_generic.rs - ch02::s5_trait_and_generic::trait_object (line 224) ... FAILED
[INFO] [stdout] test src/ch02/s5_trait_and_generic.rs - ch02::s5_trait_and_generic::trait_self_sized_bound (line 741) ... FAILED
[INFO] [stdout] test src/ch02/s6_paradigms.rs - ch02::s6_paradigms::compiler_oriented_programming (line 21) ... FAILED
[INFO] [stdout] test src/ch02/s5_trait_and_generic.rs - ch02::s5_trait_and_generic::trait_object_to_enum (line 530) ... FAILED
[INFO] [stdout] test src/ch02/s5_trait_and_generic.rs - ch02::s5_trait_and_generic::trait_concept (line 19) ... ok
[INFO] [stdout] test src/ch02/s5_trait_and_generic.rs - ch02::s5_trait_and_generic::trait_object_to_enum (line 485) ... ok
[INFO] [stdout] test src/ch02/s5_trait_and_generic.rs - ch02::s5_trait_and_generic::trait_concept (line 63) ... ok
[INFO] [stdout] test src/ch02/s7_error_handle.rs - ch02::s7_error_handle::elim_failure (line 17) ... FAILED
[INFO] [stdout] test src/ch02/s5_trait_and_generic.rs - ch02::s5_trait_and_generic::trait_self_sized_bound (line 835) ... FAILED
[INFO] [stdout] test src/ch02/s6_paradigms.rs - ch02::s6_paradigms::compiler_oriented_programming (line 28) ... FAILED
[INFO] [stdout] test src/ch02/s5_trait_and_generic.rs - ch02::s5_trait_and_generic::trait_self_sized_bound (line 777) ... ok
[INFO] [stdout] test src/ch02/s7_error_handle.rs - ch02::s7_error_handle::elim_failure (line 28) ... FAILED
[INFO] [stdout] test src/ch02/s5_trait_and_generic.rs - ch02::s5_trait_and_generic::trait_object_to_enum (line 555) ... ok
[INFO] [stdout] test src/ch02/s6_paradigms.rs - ch02::s6_paradigms::compiler_oriented_programming (line 140) ... FAILED
[INFO] [stdout] test src/ch02/s6_paradigms.rs - ch02::s6_paradigms::compiler_oriented_programming (line 43) ... FAILED
[INFO] [stdout] test src/ch02/s8_metaprogramming.rs - ch02::s8_metaprogramming::any_refection (line 75) ... FAILED
[INFO] [stdout] test src/ch02/s8_metaprogramming.rs - ch02::s8_metaprogramming::any_refection (line 31) ... FAILED
[INFO] [stdout] test src/ch02/s8_metaprogramming.rs - ch02::s8_metaprogramming::any_refection (line 88) ... FAILED
[INFO] [stdout] test src/ch02/s7_error_handle.rs - ch02::s7_error_handle::error_handle (line 85) ... FAILED
[INFO] [stdout] test src/ch02/s8_metaprogramming.rs - ch02::s8_metaprogramming::declarative_macros (line 122) ... ok
[INFO] [stdout] test src/ch02/s7_error_handle.rs - ch02::s7_error_handle::error_handle (line 100) ... ok
[INFO] [stdout] test src/ch02/s8_metaprogramming.rs - ch02::s8_metaprogramming::declarative_macros (line 295) ... FAILED
[INFO] [stdout] test src/ch02/s7_error_handle.rs - ch02::s7_error_handle::panic_cant_handle (line 214) ... ok
[INFO] [stdout] test src/ch02/s7_error_handle.rs - ch02::s7_error_handle::error_handle (line 144) ... ok
[INFO] [stdout] test src/ch02/s9_unsafe_rust.rs - ch02::s9_unsafe_rust::security_abstract (line 120) ... FAILED
[INFO] [stdout] test src/ch02/s6_paradigms.rs - ch02::s6_paradigms::compiler_oriented_programming (line 63) ... ok
[INFO] [stdout] test src/ch02/s3_thread_safe.rs - ch02::s3_thread_safe::understand_shared_thread (line 95) ... ok
[INFO] [stdout] test src/ch02/s7_error_handle.rs - ch02::s7_error_handle::panic_cant_handle (line 197) ... ok
[INFO] [stdout] test src/ch02/s9_unsafe_rust.rs - ch02::s9_unsafe_rust::security_abstract (line 502) ... FAILED
[INFO] [stdout] test src/ch02/s9_unsafe_rust.rs - ch02::s9_unsafe_rust::security_abstract (line 541) ... FAILED
[INFO] [stdout] test src/ch02/s7_error_handle.rs - ch02::s7_error_handle::error_handle (line 57) ... ok
[INFO] [stdout] test src/ch02/s9_unsafe_rust.rs - ch02::s9_unsafe_rust::security_abstract (line 460) ... FAILED
[INFO] [stdout] test src/ch02/s9_unsafe_rust.rs - ch02::s9_unsafe_rust::unsafe_intro (line 69) ... FAILED
[INFO] [stdout] test src/ch03/s2_async_await.rs - ch03::s2_async_await::a_async_intro (line 70) ... FAILED
[INFO] [stdout] test src/ch02/s8_metaprogramming.rs - ch02::s8_metaprogramming::declarative_macros (line 208) ... ok
[INFO] [stdout] test src/ch02/s9_unsafe_rust.rs - ch02::s9_unsafe_rust::unsafe_intro (line 22) ... FAILED
[INFO] [stdout] test src/ch02/s9_unsafe_rust.rs - ch02::s9_unsafe_rust::security_abstract (line 145) ... FAILED
[INFO] [stdout] test src/ch02/s8_metaprogramming.rs - ch02::s8_metaprogramming::declarative_macros (line 156) ... ok
[INFO] [stdout] test src/ch03/s2_async_await.rs - ch03::s2_async_await::e_generator (line 219) ... FAILED
[INFO] [stdout] test src/ch02/s9_unsafe_rust.rs - ch02::s9_unsafe_rust::security_abstract (line 334) ... ok
[INFO] [stdout] test src/ch02/s8_metaprogramming.rs - ch02::s8_metaprogramming::declarative_macros (line 233) ... ok
[INFO] [stdout] test src/ch02/s9_unsafe_rust.rs - ch02::s9_unsafe_rust::security_abstract (line 567) ... ok
[INFO] [stdout] test src/ch02/s8_metaprogramming.rs - ch02::s8_metaprogramming::derive_proc_macros (line 324) ... FAILED
[INFO] [stdout] test src/ch02/s8_metaprogramming.rs - ch02::s8_metaprogramming::declarative_macros (line 266) ... ok
[INFO] [stdout] test src/ch03/s2_async_await.rs - ch03::s2_async_await::a_async_intro (line 84) ... FAILED
[INFO] [stdout] test src/ch02/s8_metaprogramming.rs - ch02::s8_metaprogramming::declarative_macros (line 182) ... ok
[INFO] [stdout] test src/ch03/s2_async_await.rs - ch03::s2_async_await::e_generator (line 403) ... FAILED
[INFO] [stdout] test src/ch03/s2_async_await.rs - ch03::s2_async_await::f_pin_unpin (line 630) ... FAILED
[INFO] [stdout] test src/ch03/s2_async_await.rs - ch03::s2_async_await::f_pin_unpin (line 644) ... FAILED
[INFO] [stdout] test src/ch02/s9_unsafe_rust.rs - ch02::s9_unsafe_rust::security_abstract (line 91) ... ok
[INFO] [stdout] test src/ch02/s9_unsafe_rust.rs - ch02::s9_unsafe_rust::security_abstract (line 240) ... ok
[INFO] [stdout] test src/ch03/s2_async_await.rs - ch03::s2_async_await::e_generator (line 340) ... FAILED
[INFO] [stdout] test src/ch03/s2_async_await.rs - ch03::s2_async_await::f_pin_unpin (line 721) ... FAILED
[INFO] [stdout] test src/ch03/s2_async_await.rs - ch03::s2_async_await::e_generator (line 240) ... FAILED
[INFO] [stdout] test src/ch03/s2_async_await.rs - ch03::s2_async_await::e_generator (line 273) ... FAILED
[INFO] [stdout] test src/ch03/s2_async_await.rs - ch03::s2_async_await::f_pin_unpin (line 838) ... FAILED
[INFO] [stdout] test src/ch03/s2_async_await.rs - ch03::s2_async_await::e_generator (line 436) ... FAILED
[INFO] [stdout] test src/ch03/s2_async_await.rs - ch03::s2_async_await::e_generator (line 371) ... FAILED
[INFO] [stdout] test src/ch03/s2_async_await.rs - ch03::s2_async_await::f_pin_unpin (line 957) ... FAILED
[INFO] [stdout] test src/ch03/s2_async_await.rs - ch03::s2_async_await::e_generator (line 576) ... FAILED
[INFO] [stdout] test src/ch03/s2_async_await.rs - ch03::s2_async_await::e_generator (line 471) ... FAILED
[INFO] [stdout] test src/ch03/s2_async_await.rs - ch03::s2_async_await::f_pin_unpin (line 790) ... FAILED
[INFO] [stdout] test src/ch03/s2_async_await.rs - ch03::s2_async_await::e_generator (line 489) ... ok
[INFO] [stdout] test src/ch03/s2_async_await.rs - ch03::s2_async_await::f_pin_unpin (line 885) ... FAILED
[INFO] [stdout] test src/ch03/s2_async_await.rs - ch03::s2_async_await::f_pin_unpin (line 672) ... ok
[INFO] [stdout] test src/ch03/s2_async_await.rs - ch03::s2_async_await::f_pin_unpin (line 776) ... ok
[INFO] [stdout] test src/ch02/s4_lockfree.rs - ch02::s4_lockfree::memory_reordering (line 187) ... ok
[INFO] [stdout] test src/ch02/s3_thread_safe.rs - ch02::s3_thread_safe::understand_local_thread (line 14) ... ok
[INFO] [stdout] 
[INFO] [stdout] failures:
[INFO] [stdout] 
[INFO] [stdout] ---- src/ch01/ctfe.rs - ch01::ctfe::must_const_expr (line 10) stdout ----
[INFO] [stdout] error[E0435]: attempt to use a non-constant value in a constant
[INFO] [stdout]   --> src/ch01/ctfe.rs:13:21
[INFO] [stdout]    |
[INFO] [stdout] 13 |     const AN: i32 = an; // Error: attempt to use a non-constant value in a constant
[INFO] [stdout]    |                     ^^ non-constant value
[INFO] [stdout]    |
[INFO] [stdout] help: consider using `let` instead of `const`
[INFO] [stdout]    |
[INFO] [stdout] 13 -     const AN: i32 = an; // Error: attempt to use a non-constant value in a constant
[INFO] [stdout] 13 +     let AN: i32 = an; // Error: attempt to use a non-constant value in a constant
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] error: aborting due to 1 previous error
[INFO] [stdout] 
[INFO] [stdout] For more information about this error, try `rustc --explain E0435`.
[INFO] [stdout] Couldn't compile the test.
[INFO] [stdout] ---- src/ch01/ctfe.rs - ch01::ctfe::mir_show (line 186) stdout ----
[INFO] [stdout] error: path statement with no effect
[INFO] [stdout]    --> src/ch01/ctfe.rs:192:5
[INFO] [stdout]     |
[INFO] [stdout] 192 |     A;
[INFO] [stdout]     |     ^^
[INFO] [stdout]     |
[INFO] [stdout] note: the lint level is defined here
[INFO] [stdout]    --> src/ch01/ctfe.rs:185:9
[INFO] [stdout]     |
[INFO] [stdout] 185 | #![deny(warnings)]
[INFO] [stdout]     |         ^^^^^^^^
[INFO] [stdout]     = note: `#[deny(path_statements)]` implied by `#[deny(warnings)]`
[INFO] [stdout] 
[INFO] [stdout] error: aborting due to 1 previous error
[INFO] [stdout] 
[INFO] [stdout] Couldn't compile the test.
[INFO] [stdout] ---- src/ch01/ctfe.rs - ch01::ctfe::const_fn_error (line 122) stdout ----
[INFO] [stdout] error[E0557]: feature has been removed
[INFO] [stdout]    --> src/ch01/ctfe.rs:123:12
[INFO] [stdout]     |
[INFO] [stdout] 123 | #![feature(const_fn)]
[INFO] [stdout]     |            ^^^^^^^^ feature has been removed
[INFO] [stdout]     |
[INFO] [stdout]     = note: removed in 1.54.0; see <https://github.com/rust-lang/rust/pull/85109> for more information
[INFO] [stdout]     = note: split into finer-grained feature gates
[INFO] [stdout] 
[INFO] [stdout] error[E0015]: cannot call non-const method `<str as ToString>::to_string` in constant functions
[INFO] [stdout]    --> src/ch01/ctfe.rs:128:13
[INFO] [stdout]     |
[INFO] [stdout] 128 |     "Hello".to_string()
[INFO] [stdout]     |             ^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] note: method `to_string` is not const because trait `ToString` is not const
[INFO] [stdout]    --> /rustc/bd7d74411512a3dd3b35d2f699c51dd2557c7e7e/library/alloc/src/string.rs:2868:0
[INFO] [stdout]     |
[INFO] [stdout]     = note: this trait is not const
[INFO] [stdout]    ::: /rustc/bd7d74411512a3dd3b35d2f699c51dd2557c7e7e/library/alloc/src/string.rs:2882:4
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method is not const
[INFO] [stdout]     = note: calls in constant functions are limited to constant functions, tuple structs and tuple variants
[INFO] [stdout] 
[INFO] [stdout] error: aborting due to 2 previous errors
[INFO] [stdout] 
[INFO] [stdout] Some errors have detailed explanations: E0015, E0557.
[INFO] [stdout] For more information about an error, try `rustc --explain E0015`.
[INFO] [stdout] Couldn't compile the test.
[INFO] [stdout] ---- src/ch01/ctfe.rs - ch01::ctfe::others_const_fn (line 168) stdout ----
[INFO] [stdout] error[E0277]: `Answer` doesn't implement `std::fmt::Display`
[INFO] [stdout]    --> src/ch01/ctfe.rs:174:20
[INFO] [stdout]     |
[INFO] [stdout] 174 |     println!("{}", A);
[INFO] [stdout]     |               --   ^ `Answer` cannot be formatted with the default formatter
[INFO] [stdout]     |               |
[INFO] [stdout]     |               required by this formatting parameter
[INFO] [stdout]     |
[INFO] [stdout] help: the trait `std::fmt::Display` is not implemented for `Answer`
[INFO] [stdout]    --> src/ch01/ctfe.rs:170:1
[INFO] [stdout]     |
[INFO] [stdout] 170 | struct Answer(u32);
[INFO] [stdout]     | ^^^^^^^^^^^^^
[INFO] [stdout]     = note: in format strings you may be able to use `{:?}` (or {:#?} for pretty-print) instead
[INFO] [stdout]     = 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)
[INFO] [stdout] 
[INFO] [stdout] error: aborting due to 1 previous error
[INFO] [stdout] 
[INFO] [stdout] For more information about this error, try `rustc --explain E0277`.
[INFO] [stdout] Couldn't compile the test.
[INFO] [stdout] ---- src/ch01/ctfe.rs - ch01::ctfe::const_generic_show (line 241) stdout ----
[INFO] [stdout] error[E0557]: feature has been removed
[INFO] [stdout]    --> src/ch01/ctfe.rs:243:12
[INFO] [stdout]     |
[INFO] [stdout] 243 | #![feature(const_in_array_repeat_expressions)]
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ feature has been removed
[INFO] [stdout]     |
[INFO] [stdout]     = note: removed in 1.51.0; see <https://github.com/rust-lang/rust/pull/80404> for more information
[INFO] [stdout]     = note: removed due to causing promotable bugs
[INFO] [stdout] 
[INFO] [stdout] error: the feature `min_const_generics` has been stable since 1.51.0 and no longer requires an attribute to enable
[INFO] [stdout]    --> src/ch01/ctfe.rs:242:12
[INFO] [stdout]     |
[INFO] [stdout] 242 | #![feature(min_const_generics)]
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] note: the lint level is defined here
[INFO] [stdout]    --> src/ch01/ctfe.rs:240:9
[INFO] [stdout]     |
[INFO] [stdout] 240 | #![deny(warnings)]
[INFO] [stdout]     |         ^^^^^^^^
[INFO] [stdout]     = note: `#[deny(stable_features)]` implied by `#[deny(warnings)]`
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the trait bound `T: std::marker::Copy` is not satisfied
[INFO] [stdout]    --> src/ch01/ctfe.rs:257:21
[INFO] [stdout]     |
[INFO] [stdout] 257 |             items: [MaybeUninit::uninit(); N],
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^^^^^^^ the trait `std::marker::Copy` is not implemented for `T`
[INFO] [stdout]     |
[INFO] [stdout]     = note: required for `MaybeUninit<T>` to implement `std::marker::Copy`
[INFO] [stdout]     = note: the `Copy` trait is required because this value will be copied for each element of the array
[INFO] [stdout] help: consider restricting type parameter `T` with trait `Copy`
[INFO] [stdout]     |
[INFO] [stdout] 254 | impl<T: std::marker::Copy, const N: usize> ArrayVec<T,  {N} > {
[INFO] [stdout]     |       +++++++++++++++++++
[INFO] [stdout] help: create an inline `const` block
[INFO] [stdout]     |
[INFO] [stdout] 257 |             items: [const { MaybeUninit::uninit() }; N],
[INFO] [stdout]     |                     +++++++                       +
[INFO] [stdout] 
[INFO] [stdout] error: aborting due to 3 previous errors
[INFO] [stdout] 
[INFO] [stdout] Some errors have detailed explanations: E0277, E0557.
[INFO] [stdout] For more information about an error, try `rustc --explain E0277`.
[INFO] [stdout] Couldn't compile the test.
[INFO] [stdout] ---- src/ch01/lexical.rs - ch01::lexical::path_show (line 86) stdout ----
[INFO] [stdout] error: unused return value of `collect` that must be used
[INFO] [stdout]    --> src/ch01/lexical.rs:122:1
[INFO] [stdout]     |
[INFO] [stdout] 122 | (0..10).collect::<Vec<_>>();
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: if you really need to exhaust the iterator, consider `.for_each(drop)` instead
[INFO] [stdout] note: the lint level is defined here
[INFO] [stdout]    --> src/ch01/lexical.rs:84:9
[INFO] [stdout]     |
[INFO] [stdout]  84 | #![deny(warnings)]
[INFO] [stdout]     |         ^^^^^^^^
[INFO] [stdout]     = note: `#[deny(unused_must_use)]` implied by `#[deny(warnings)]`
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 122 | let _ = (0..10).collect::<Vec<_>>();
[INFO] [stdout]     | +++++++
[INFO] [stdout] 
[INFO] [stdout] error: unused return value of `Vec::<T>::with_capacity` that must be used
[INFO] [stdout]    --> src/ch01/lexical.rs:123:1
[INFO] [stdout]     |
[INFO] [stdout] 123 | Vec::<u8>::with_capacity(1024);
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 123 | let _ = Vec::<u8>::with_capacity(1024);
[INFO] [stdout]     | +++++++
[INFO] [stdout] 
[INFO] [stdout] error: aborting due to 2 previous errors
[INFO] [stdout] 
[INFO] [stdout] Couldn't compile the test.
[INFO] [stdout] ---- src/ch01/lexical.rs - ch01::lexical::outer_module (line 133) stdout ----
[INFO] [stdout] error: expected one of `!` or `::`, found keyword `pub`
[INFO] [stdout]    --> src/ch01/lexical.rs:135:1
[INFO] [stdout]     |
[INFO] [stdout] 134 | 注释示例
[INFO] [stdout]     |         - expected one of `!` or `::`
[INFO] [stdout] 135 | pub mod outer_module {
[INFO] [stdout]     | ^^^ unexpected token
[INFO] [stdout] 
[INFO] [stdout] error: aborting due to 1 previous error
[INFO] [stdout] 
[INFO] [stdout] Couldn't compile the test.
[INFO] [stdout] ---- src/ch01/ctfe.rs - ch01::ctfe::if_while_true (line 205) stdout ----
[INFO] [stdout] error: denote infinite loops with `loop { ... }`
[INFO] [stdout]    --> src/ch01/ctfe.rs:213:5
[INFO] [stdout]     |
[INFO] [stdout] 213 |     while true {  // error[E0308]: mismatched types，expected type `i32` found type `()`
[INFO] [stdout]     |     ^^^^^^^^^^ help: use `loop`
[INFO] [stdout]     |
[INFO] [stdout] note: the lint level is defined here
[INFO] [stdout]    --> src/ch01/ctfe.rs:204:9
[INFO] [stdout]     |
[INFO] [stdout] 204 | #![deny(warnings)]
[INFO] [stdout]     |         ^^^^^^^^
[INFO] [stdout]     = note: `#[deny(while_true)]` implied by `#[deny(warnings)]`
[INFO] [stdout] 
[INFO] [stdout] error[E0317]: `if` may be missing an `else` clause
[INFO] [stdout]    --> src/ch01/ctfe.rs:207:5
[INFO] [stdout]     |
[INFO] [stdout] 206 |   fn if_true(x: i32) -> i32 {
[INFO] [stdout]     |                         --- expected `i32` because of this return type
[INFO] [stdout] 207 | /     if true {  // error[E0308]: mismatched types，expected type `i32` found type `()`
[INFO] [stdout] 208 | |         return x+1;
[INFO] [stdout] 209 | |     }
[INFO] [stdout]     | |_____^ expected `i32`, found `()`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `if` expressions without `else` evaluate to `()`
[INFO] [stdout]     = help: consider adding an `else` block that evaluates to the expected type
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> src/ch01/ctfe.rs:213:5
[INFO] [stdout]     |
[INFO] [stdout] 212 |   fn while_true(x: i32) -> i32 {
[INFO] [stdout]     |                            --- expected `i32` because of return type
[INFO] [stdout] 213 | /     while true {  // error[E0308]: mismatched types，expected type `i32` found type `()`
[INFO] [stdout] 214 | |         return x+1;
[INFO] [stdout] 215 | |     }
[INFO] [stdout]     | |_____^ expected `i32`, found `()`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `while` loops evaluate to unit type `()`
[INFO] [stdout] help: consider returning a value here
[INFO] [stdout]     |
[INFO] [stdout] 215 ~     }
[INFO] [stdout] 216 +     /* `i32` value */
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] error: aborting due to 3 previous errors
[INFO] [stdout] 
[INFO] [stdout] Some errors have detailed explanations: E0308, E0317.
[INFO] [stdout] For more information about an error, try `rustc --explain E0308`.
[INFO] [stdout] Couldn't compile the test.
[INFO] [stdout] ---- src/ch01/expr.rs - ch01::expr::semi_and_block_expr (line 50) stdout ----
[INFO] [stdout] error: unnecessary trailing semicolons
[INFO] [stdout]   --> src/ch01/expr.rs:52:5
[INFO] [stdout]    |
[INFO] [stdout] 52 | /     ;
[INFO] [stdout] 53 | |     ;
[INFO] [stdout]    | |_____^ help: remove these semicolons
[INFO] [stdout]    |
[INFO] [stdout] note: the lint level is defined here
[INFO] [stdout]   --> src/ch01/expr.rs:49:9
[INFO] [stdout]    |
[INFO] [stdout] 49 | #![deny(warnings)]
[INFO] [stdout]    |         ^^^^^^^^
[INFO] [stdout]    = note: `#[deny(redundant_semicolons)]` implied by `#[deny(warnings)]`
[INFO] [stdout] 
[INFO] [stdout] error: unnecessary trailing semicolon
[INFO] [stdout]   --> src/ch01/expr.rs:64:5
[INFO] [stdout]    |
[INFO] [stdout] 64 |     ; // ->  ()
[INFO] [stdout]    |     ^ help: remove this semicolon
[INFO] [stdout] 
[INFO] [stdout] error: unused import: `std::vec::Vec`
[INFO] [stdout]   --> src/ch01/expr.rs:59:13
[INFO] [stdout]    |
[INFO] [stdout] 59 |         use std::vec::Vec;
[INFO] [stdout]    |             ^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[deny(unused_imports)]` implied by `#[deny(warnings)]`
[INFO] [stdout] 
[INFO] [stdout] error: unnecessary trailing semicolon
[INFO] [stdout]   --> src/ch01/expr.rs:63:7
[INFO] [stdout]    |
[INFO] [stdout] 63 |     &{;}; // -> &()
[INFO] [stdout]    |       ^ help: remove this semicolon
[INFO] [stdout] 
[INFO] [stdout] error: unused borrow that must be used
[INFO] [stdout]   --> src/ch01/expr.rs:62:5
[INFO] [stdout]    |
[INFO] [stdout] 62 |     &();
[INFO] [stdout]    |     ^^^ the borrow produces a value
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[deny(unused_must_use)]` implied by `#[deny(warnings)]`
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]    |
[INFO] [stdout] 62 |     let _ = &();
[INFO] [stdout]    |     +++++++
[INFO] [stdout] 
[INFO] [stdout] error: unused borrow that must be used
[INFO] [stdout]   --> src/ch01/expr.rs:63:5
[INFO] [stdout]    |
[INFO] [stdout] 63 |     &{;}; // -> &()
[INFO] [stdout]    |     ^^^^ the borrow produces a value
[INFO] [stdout]    |
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]    |
[INFO] [stdout] 63 |     let _ = &{;}; // -> &()
[INFO] [stdout]    |     +++++++
[INFO] [stdout] 
[INFO] [stdout] error: aborting due to 6 previous errors
[INFO] [stdout] 
[INFO] [stdout] Couldn't compile the test.
[INFO] [stdout] ---- src/ch01/ctfe.rs - ch01::ctfe::array_chunk_show (line 299) stdout ----
[INFO] [stdout] error[E0635]: unknown feature `array_chunks`
[INFO] [stdout]    --> src/ch01/ctfe.rs:300:12
[INFO] [stdout]     |
[INFO] [stdout] 300 | #![feature(array_chunks)]
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: the method `array_chunks` exists for array `[{integer}; 6]`, but its trait bounds were not satisfied
[INFO] [stdout]    --> src/ch01/ctfe.rs:304:21
[INFO] [stdout]     |
[INFO] [stdout] 304 |     let sum1 = data.array_chunks().map(|&[x, y]| x * y).sum::<i32>();
[INFO] [stdout]     |                     ^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: the following trait bounds were not satisfied:
[INFO] [stdout]             `[{integer}; 6]: Iterator`
[INFO] [stdout]             which is required by `&mut [{integer}; 6]: Iterator`
[INFO] [stdout]             `[{integer}]: Iterator`
[INFO] [stdout]             which is required by `&mut [{integer}]: Iterator`
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: the method `array_chunks` exists for array `[{integer}; 6]`, but its trait bounds were not satisfied
[INFO] [stdout]    --> src/ch01/ctfe.rs:307:21
[INFO] [stdout]     |
[INFO] [stdout] 307 |     let sum2 = data.array_chunks().map(|&[x, y, z]| x * y * z).sum::<i32>();
[INFO] [stdout]     |                     ^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: the following trait bounds were not satisfied:
[INFO] [stdout]             `[{integer}; 6]: Iterator`
[INFO] [stdout]             which is required by `&mut [{integer}; 6]: Iterator`
[INFO] [stdout]             `[{integer}]: Iterator`
[INFO] [stdout]             which is required by `&mut [{integer}]: Iterator`
[INFO] [stdout] 
[INFO] [stdout] error: aborting due to 3 previous errors
[INFO] [stdout] 
[INFO] [stdout] Some errors have detailed explanations: E0599, E0635.
[INFO] [stdout] For more information about an error, try `rustc --explain E0599`.
[INFO] [stdout] Couldn't compile the test.
[INFO] [stdout] ---- src/ch02/s1_ownership.rs - ch02::s1_ownership::understand_drop (line 419) stdout ----
[INFO] [stdout] error: path statement drops value
[INFO] [stdout]    --> src/ch02/s1_ownership.rs:432:9
[INFO] [stdout]     |
[INFO] [stdout] 432 |         x; y; z;
[INFO] [stdout]     |         ^^ help: use `drop` to clarify the intent: `drop(x);`
[INFO] [stdout]     |
[INFO] [stdout] note: the lint level is defined here
[INFO] [stdout]    --> src/ch02/s1_ownership.rs:418:9
[INFO] [stdout]     |
[INFO] [stdout] 418 | #![deny(warnings)]
[INFO] [stdout]     |         ^^^^^^^^
[INFO] [stdout]     = note: `#[deny(path_statements)]` implied by `#[deny(warnings)]`
[INFO] [stdout] 
[INFO] [stdout] error: path statement drops value
[INFO] [stdout]    --> src/ch02/s1_ownership.rs:432:12
[INFO] [stdout]     |
[INFO] [stdout] 432 |         x; y; z;
[INFO] [stdout]     |            ^^ help: use `drop` to clarify the intent: `drop(y);`
[INFO] [stdout] 
[INFO] [stdout] error: path statement drops value
[INFO] [stdout]    --> src/ch02/s1_ownership.rs:432:15
[INFO] [stdout]     |
[INFO] [stdout] 432 |         x; y; z;
[INFO] [stdout]     |               ^^ help: use `drop` to clarify the intent: `drop(z);`
[INFO] [stdout] 
[INFO] [stdout] error: aborting due to 3 previous errors
[INFO] [stdout] 
[INFO] [stdout] Couldn't compile the test.
[INFO] [stdout] ---- src/ch02/s1_ownership.rs - ch02::s1_ownership::understand_drop (line 356) stdout ----
[INFO] [stdout] error: unreachable expression
[INFO] [stdout]    --> src/ch02/s1_ownership.rs:365:16
[INFO] [stdout]     |
[INFO] [stdout] 365 |     let tup2 = (PrintDrop("x"), PrintDrop("y"), panic!());
[INFO] [stdout]     |                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^--------^
[INFO] [stdout]     |                |                                |
[INFO] [stdout]     |                |                                any code following this expression is unreachable
[INFO] [stdout]     |                unreachable expression
[INFO] [stdout]     |
[INFO] [stdout] note: the lint level is defined here
[INFO] [stdout]    --> src/ch02/s1_ownership.rs:355:9
[INFO] [stdout]     |
[INFO] [stdout] 355 | #![deny(warnings)]
[INFO] [stdout]     |         ^^^^^^^^
[INFO] [stdout]     = note: `#[deny(unreachable_code)]` implied by `#[deny(warnings)]`
[INFO] [stdout] 
[INFO] [stdout] error: aborting due to 1 previous error
[INFO] [stdout] 
[INFO] [stdout] Couldn't compile the test.
[INFO] [stdout] ---- src/ch02/s1_ownership.rs - ch02::s1_ownership::custom_types (line 90) stdout ----
[INFO] [stdout] error[E0277]: `A` doesn't implement `Debug`
[INFO] [stdout]    --> src/ch02/s1_ownership.rs:112:22
[INFO] [stdout]     |
[INFO] [stdout] 112 |     println!("{:?}", a);  // work
[INFO] [stdout]     |               ----   ^ `A` cannot be formatted using `{:?}` because it doesn't implement `Debug`
[INFO] [stdout]     |               |
[INFO] [stdout]     |               required by this formatting parameter
[INFO] [stdout]     |
[INFO] [stdout]     = help: the trait `Debug` is not implemented for `A`
[INFO] [stdout]     = note: add `#[derive(Debug)]` to `A` or manually `impl Debug for A`
[INFO] [stdout]     = 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)
[INFO] [stdout] help: consider annotating `A` with `#[derive(Debug)]`
[INFO] [stdout]     |
[INFO] [stdout]  92 + #[derive(Debug)]
[INFO] [stdout]  93 | struct A;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: `Point` doesn't implement `Debug`
[INFO] [stdout]    --> src/ch02/s1_ownership.rs:116:22
[INFO] [stdout]     |
[INFO] [stdout] 116 |     println!("{:?}", a);  // work
[INFO] [stdout]     |               ----   ^ `Point` cannot be formatted using `{:?}` because it doesn't implement `Debug`
[INFO] [stdout]     |               |
[INFO] [stdout]     |               required by this formatting parameter
[INFO] [stdout]     |
[INFO] [stdout]     = help: the trait `Debug` is not implemented for `Point`
[INFO] [stdout]     = note: add `#[derive(Debug)]` to `Point` or manually `impl Debug for Point`
[INFO] [stdout]     = 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)
[INFO] [stdout] help: consider annotating `Point` with `#[derive(Debug)]`
[INFO] [stdout]     |
[INFO] [stdout]  95 + #[derive(Debug)]
[INFO] [stdout]  96 | struct Point(u32);
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> src/ch02/s1_ownership.rs:118:39
[INFO] [stdout]     |
[INFO] [stdout] 118 |     let a = Member{name: "Alex", age: "18"};
[INFO] [stdout]     |                                       ^^^^ expected `u32`, found `&str`
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> src/ch02/s1_ownership.rs:121:26
[INFO] [stdout]     |
[INFO] [stdout] 121 |     let a = Member{name: "Alex".to_string(), age: "18"};
[INFO] [stdout]     |                          ^^^^^^^^^^^^^^^^^^ expected `&str`, found `String`
[INFO] [stdout]     |
[INFO] [stdout] help: try removing the method call
[INFO] [stdout]     |
[INFO] [stdout] 121 -     let a = Member{name: "Alex".to_string(), age: "18"};
[INFO] [stdout] 121 +     let a = Member{name: "Alex", age: "18"};
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> src/ch02/s1_ownership.rs:121:51
[INFO] [stdout]     |
[INFO] [stdout] 121 |     let a = Member{name: "Alex".to_string(), age: "18"};
[INFO] [stdout]     |                                                   ^^^^ expected `u32`, found `&str`
[INFO] [stdout] 
[INFO] [stdout] error: aborting due to 5 previous errors
[INFO] [stdout] 
[INFO] [stdout] Some errors have detailed explanations: E0277, E0308.
[INFO] [stdout] For more information about an error, try `rustc --explain E0277`.
[INFO] [stdout] Couldn't compile the test.
[INFO] [stdout] ---- src/ch02/s1_ownership.rs - ch02::s1_ownership::understand_drop (line 402) stdout ----
[INFO] [stdout] error: path statement drops value
[INFO] [stdout]    --> src/ch02/s1_ownership.rs:413:29
[INFO] [stdout]     |
[INFO] [stdout] 413 |     let closure = move || { y; z; x; };
[INFO] [stdout]     |                             ^^ help: use `drop` to clarify the intent: `drop(y);`
[INFO] [stdout]     |
[INFO] [stdout] note: the lint level is defined here
[INFO] [stdout]    --> src/ch02/s1_ownership.rs:401:9
[INFO] [stdout]     |
[INFO] [stdout] 401 | #![deny(warnings)]
[INFO] [stdout]     |         ^^^^^^^^
[INFO] [stdout]     = note: `#[deny(path_statements)]` implied by `#[deny(warnings)]`
[INFO] [stdout] 
[INFO] [stdout] error: path statement drops value
[INFO] [stdout]    --> src/ch02/s1_ownership.rs:413:32
[INFO] [stdout]     |
[INFO] [stdout] 413 |     let closure = move || { y; z; x; };
[INFO] [stdout]     |                                ^^ help: use `drop` to clarify the intent: `drop(z);`
[INFO] [stdout] 
[INFO] [stdout] error: path statement drops value
[INFO] [stdout]    --> src/ch02/s1_ownership.rs:413:35
[INFO] [stdout]     |
[INFO] [stdout] 413 |     let closure = move || { y; z; x; };
[INFO] [stdout]     |                                   ^^ help: use `drop` to clarify the intent: `drop(x);`
[INFO] [stdout] 
[INFO] [stdout] error: aborting due to 3 previous errors
[INFO] [stdout] 
[INFO] [stdout] Couldn't compile the test.
[INFO] [stdout] ---- src/ch02/s2_lifetime.rs - ch02::s2_lifetime::understand_lifetime (line 100) stdout ----
[INFO] [stdout] error: this file contains an unclosed delimiter
[INFO] [stdout]    --> src/ch02/s2_lifetime.rs:111:3
[INFO] [stdout]     |
[INFO] [stdout] 104 | fn main() {
[INFO] [stdout]     |           - unclosed delimiter
[INFO] [stdout] ...
[INFO] [stdout] 107 |     {
[INFO] [stdout]     |     - this delimiter might not be properly closed...
[INFO] [stdout] ...
[INFO] [stdout] 111 | }
[INFO] [stdout]     | -^
[INFO] [stdout]     | |
[INFO] [stdout]     | ...as it matches this but it has different indentation
[INFO] [stdout] 
[INFO] [stdout] error: aborting due to 1 previous error
[INFO] [stdout] 
[INFO] [stdout] Couldn't compile the test.
[INFO] [stdout] ---- src/ch02/s2_lifetime.rs - ch02::s2_lifetime::understand_lifetime (line 117) stdout ----
[INFO] [stdout] error: this file contains an unclosed delimiter
[INFO] [stdout]    --> src/ch02/s2_lifetime.rs:128:3
[INFO] [stdout]     |
[INFO] [stdout] 121 | fn main() {
[INFO] [stdout]     |           - unclosed delimiter
[INFO] [stdout] ...
[INFO] [stdout] 124 |     {
[INFO] [stdout]     |     - this delimiter might not be properly closed...
[INFO] [stdout] ...
[INFO] [stdout] 128 | }
[INFO] [stdout]     | -^
[INFO] [stdout]     | |
[INFO] [stdout]     | ...as it matches this but it has different indentation
[INFO] [stdout] 
[INFO] [stdout] error: aborting due to 1 previous error
[INFO] [stdout] 
[INFO] [stdout] Couldn't compile the test.
[INFO] [stdout] ---- src/ch02/s1_ownership.rs - ch02::s1_ownership::understand_move (line 280) stdout ----
[INFO] [stdout] error[E0507]: cannot move out of an `Arc`
[INFO] [stdout]    --> src/ch02/s1_ownership.rs:288:14
[INFO] [stdout]     |
[INFO] [stdout] 288 |     let s2 = *s;
[INFO] [stdout]     |              ^^ move occurs because value has type `String`, which does not implement the `Copy` trait
[INFO] [stdout]     |
[INFO] [stdout] help: consider removing the dereference here
[INFO] [stdout]     |
[INFO] [stdout] 288 -     let s2 = *s;
[INFO] [stdout] 288 +     let s2 = s;
[INFO] [stdout]     |
[INFO] [stdout] help: consider cloning the value if the performance cost is acceptable
[INFO] [stdout]     |
[INFO] [stdout] 288 -     let s2 = *s;
[INFO] [stdout] 288 +     let s2 = s.clone();
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] error: aborting due to 1 previous error
[INFO] [stdout] 
[INFO] [stdout] For more information about this error, try `rustc --explain E0507`.
[INFO] [stdout] Couldn't compile the test.
[INFO] [stdout] ---- src/ch02/s2_lifetime.rs - ch02::s2_lifetime::understand_lifetime_early_late_bound (line 194) stdout ----
[INFO] [stdout] error: hiding a lifetime that's named elsewhere is confusing
[INFO] [stdout]    --> src/ch02/s2_lifetime.rs:214:28
[INFO] [stdout]     |
[INFO] [stdout] 214 |     fn new(b: &'a [u8]) -> Buffer {
[INFO] [stdout]     |                --          ^^^^^^ the same lifetime is hidden here
[INFO] [stdout]     |                |
[INFO] [stdout]     |                the lifetime is named here
[INFO] [stdout]     |
[INFO] [stdout]     = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] note: the lint level is defined here
[INFO] [stdout]    --> src/ch02/s2_lifetime.rs:193:9
[INFO] [stdout]     |
[INFO] [stdout] 193 | #![deny(warnings)]
[INFO] [stdout]     |         ^^^^^^^^
[INFO] [stdout]     = note: `#[deny(mismatched_lifetime_syntaxes)]` implied by `#[deny(warnings)]`
[INFO] [stdout] help: consistently use `'a`
[INFO] [stdout]     |
[INFO] [stdout] 214 |     fn new(b: &'a [u8]) -> Buffer<'a> {
[INFO] [stdout]     |                                  ++++
[INFO] [stdout] 
[INFO] [stdout] error: aborting due to 1 previous error
[INFO] [stdout] 
[INFO] [stdout] Couldn't compile the test.
[INFO] [stdout] ---- src/ch02/s1_ownership.rs - ch02::s1_ownership::understand_copy (line 212) stdout ----
[INFO] [stdout] Test executable failed (signal: 6 (SIGABRT) (core dumped)).
[INFO] [stdout] 
[INFO] [stdout] stderr:
[INFO] [stdout] free(): double free detected in tcache 2
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] ---- src/ch02/s2_lifetime.rs - ch02::s2_lifetime::understand_lifetime (line 68) stdout ----
[INFO] [stdout] error[E0515]: cannot return value referencing local variable `s`
[INFO] [stdout]   --> src/ch02/s2_lifetime.rs:74:5
[INFO] [stdout]    |
[INFO] [stdout] 74 |     &s[..]                   //"Rust Good Good Good"
[INFO] [stdout]    |     ^-^^^^
[INFO] [stdout]    |     ||
[INFO] [stdout]    |     |`s` is borrowed here
[INFO] [stdout]    |     returns a value referencing data owned by the current function
[INFO] [stdout] 
[INFO] [stdout] error: aborting due to 1 previous error
[INFO] [stdout] 
[INFO] [stdout] For more information about this error, try `rustc --explain E0515`.
[INFO] [stdout] Couldn't compile the test.
[INFO] [stdout] ---- src/ch02/s2_lifetime.rs - ch02::s2_lifetime::understand_lifetime_early_late_bound (line 143) stdout ----
[INFO] [stdout] error[E0794]: cannot specify lifetime arguments explicitly if late bound lifetime parameters are present
[INFO] [stdout]    --> src/ch02/s2_lifetime.rs:148:18
[INFO] [stdout]     |
[INFO] [stdout] 148 |     let pf = f::<'static> as fn(); // late bound
[INFO] [stdout]     |                  ^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] note: the late bound lifetime parameter is introduced here
[INFO] [stdout]    --> src/ch02/s2_lifetime.rs:144:6
[INFO] [stdout]     |
[INFO] [stdout] 144 | fn f<'a>() {}
[INFO] [stdout]     |      ^^
[INFO] [stdout] 
[INFO] [stdout] error: aborting due to 1 previous error
[INFO] [stdout] 
[INFO] [stdout] For more information about this error, try `rustc --explain E0794`.
[INFO] [stdout] Couldn't compile the test.
[INFO] [stdout] ---- src/ch02/s2_lifetime.rs - ch02::s2_lifetime::understand_lifetime (line 84) stdout ----
[INFO] [stdout] error[E0515]: cannot return value referencing local variable `result`
[INFO] [stdout]   --> src/ch02/s2_lifetime.rs:88:5
[INFO] [stdout]    |
[INFO] [stdout] 88 |     result.as_str()
[INFO] [stdout]    |     ------^^^^^^^^^
[INFO] [stdout]    |     |
[INFO] [stdout]    |     returns a value referencing data owned by the current function
[INFO] [stdout]    |     `result` is borrowed here
[INFO] [stdout] 
[INFO] [stdout] error: aborting due to 1 previous error
[INFO] [stdout] 
[INFO] [stdout] For more information about this error, try `rustc --explain E0515`.
[INFO] [stdout] Couldn't compile the test.
[INFO] [stdout] ---- src/ch02/s2_lifetime.rs - ch02::s2_lifetime::understand_lifetime_for_closure (line 236) stdout ----
[INFO] [stdout] error: lifetime may not live long enough
[INFO] [stdout]    --> src/ch02/s2_lifetime.rs:238:23
[INFO] [stdout]     |
[INFO] [stdout] 238 |     let f = |x: &i32| x; // error
[INFO] [stdout]     |                 -   - ^ returning this value requires that `'1` must outlive `'2`
[INFO] [stdout]     |                 |   |
[INFO] [stdout]     |                 |   return type of closure is &'2 i32
[INFO] [stdout]     |                 let's call the lifetime of this reference `'1`
[INFO] [stdout] 
[INFO] [stdout] error: aborting due to 1 previous error
[INFO] [stdout] 
[INFO] [stdout] Couldn't compile the test.
[INFO] [stdout] ---- src/ch02/s3_thread_safe.rs - ch02::s3_thread_safe::understand_channel_and_condvar (line 355) stdout ----
[INFO] [stdout] error[E0463]: can't find crate for `crossbeam_channel`
[INFO] [stdout]    --> src/ch02/s3_thread_safe.rs:357:1
[INFO] [stdout]     |
[INFO] [stdout] 357 | extern crate crossbeam_channel;
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ can't find crate
[INFO] [stdout] 
[INFO] [stdout] error[E0463]: can't find crate for `rayon`
[INFO] [stdout]    --> src/ch02/s3_thread_safe.rs:358:1
[INFO] [stdout]     |
[INFO] [stdout] 358 | extern crate rayon;
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^ can't find crate
[INFO] [stdout] 
[INFO] [stdout] error[E0432]: unresolved import `parking_lot`
[INFO] [stdout]    --> src/ch02/s3_thread_safe.rs:363:5
[INFO] [stdout]     |
[INFO] [stdout] 363 | use parking_lot::{Condvar, Mutex};
[INFO] [stdout]     |     ^^^^^^^^^^^ use of unresolved module or unlinked crate `parking_lot`
[INFO] [stdout]     |
[INFO] [stdout]     = help: if you wanted to use a crate named `parking_lot`, use `cargo add parking_lot` to add it to your `Cargo.toml`
[INFO] [stdout] 
[INFO] [stdout] error: unused import: `std::collections::HashMap`
[INFO] [stdout]    --> src/ch02/s3_thread_safe.rs:360:5
[INFO] [stdout]     |
[INFO] [stdout] 360 | use std::collections::HashMap;
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] note: the lint level is defined here
[INFO] [stdout]    --> src/ch02/s3_thread_safe.rs:354:9
[INFO] [stdout]     |
[INFO] [stdout] 354 | #![deny(warnings)]
[INFO] [stdout]     |         ^^^^^^^^
[INFO] [stdout]     = note: `#[deny(unused_imports)]` implied by `#[deny(warnings)]`
[INFO] [stdout] 
[INFO] [stdout] error: unused import: `std::sync::Arc`
[INFO] [stdout]    --> src/ch02/s3_thread_safe.rs:364:5
[INFO] [stdout]     |
[INFO] [stdout] 364 | use std::sync::Arc;
[INFO] [stdout]     |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]    --> src/ch02/s3_thread_safe.rs:387:15
[INFO] [stdout]     |
[INFO] [stdout] 387 |         match work_receiver.recv() {
[INFO] [stdout]     |               ^^^^^^^^^^^^^ cannot infer type
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]    --> src/ch02/s3_thread_safe.rs:389:37
[INFO] [stdout]     |
[INFO] [stdout] 389 |                 let result_sender = result_sender.clone();
[INFO] [stdout]     |                                     ^^^^^^^^^^^^^ cannot infer type
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]    --> src/ch02/s3_thread_safe.rs:404:13
[INFO] [stdout]     |
[INFO] [stdout] 404 |     let _ = work_sender.send(WorkMsg::Work(0));
[INFO] [stdout]     |             ^^^^^^^^^^^ cannot infer type
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]    --> src/ch02/s3_thread_safe.rs:409:15
[INFO] [stdout]     |
[INFO] [stdout] 409 |         match result_receiver.recv() {
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^ cannot infer type
[INFO] [stdout] 
[INFO] [stdout] error: aborting due to 9 previous errors
[INFO] [stdout] 
[INFO] [stdout] Some errors have detailed explanations: E0282, E0432, E0463.
[INFO] [stdout] For more information about an error, try `rustc --explain E0282`.
[INFO] [stdout] Couldn't compile the test.
[INFO] [stdout] ---- src/ch02/s2_lifetime.rs - ch02::s2_lifetime::understand_lifetime_hrtb (line 402) stdout ----
[INFO] [stdout] error: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/ch02/s2_lifetime.rs:412:19
[INFO] [stdout]     |
[INFO] [stdout] 412 | fn foo<'a>(b: Box<DoSomething<&'a usize>>) {
[INFO] [stdout]     |                   ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2018) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] note: the lint level is defined here
[INFO] [stdout]    --> src/ch02/s2_lifetime.rs:401:9
[INFO] [stdout]     |
[INFO] [stdout] 401 | #![deny(warnings)]
[INFO] [stdout]     |         ^^^^^^^^
[INFO] [stdout]     = note: `#[deny(bare_trait_objects)]` implied by `#[deny(warnings)]`
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]     |
[INFO] [stdout] 412 | fn foo<'a>(b: Box<dyn DoSomething<&'a usize>>) {
[INFO] [stdout]     |                   +++
[INFO] [stdout] 
[INFO] [stdout] error[E0597]: `s` does not live long enough
[INFO] [stdout]    --> src/ch02/s2_lifetime.rs:414:14
[INFO] [stdout]     |
[INFO] [stdout] 412 | fn foo<'a>(b: Box<DoSomething<&'a usize>>) {
[INFO] [stdout]     |        -- lifetime `'a` defined here
[INFO] [stdout] 413 |     let s: usize = 10;
[INFO] [stdout]     |         - binding `s` declared here
[INFO] [stdout] 414 |     b.do_sth(&s) // error[E0597]: `s` does not live long enough
[INFO] [stdout]     |     ---------^^-
[INFO] [stdout]     |     |        |
[INFO] [stdout]     |     |        borrowed value does not live long enough
[INFO] [stdout]     |     argument requires that `s` is borrowed for `'a`
[INFO] [stdout] 415 | }
[INFO] [stdout]     | - `s` dropped here while still borrowed
[INFO] [stdout] 
[INFO] [stdout] error: aborting due to 2 previous errors
[INFO] [stdout] 
[INFO] [stdout] For more information about this error, try `rustc --explain E0597`.
[INFO] [stdout] Couldn't compile the test.
[INFO] [stdout] ---- src/ch02/s2_lifetime.rs - ch02::s2_lifetime::understand_nll (line 30) stdout ----
[INFO] [stdout] error[E0502]: cannot borrow `chars` as immutable because it is also borrowed as mutable
[INFO] [stdout]   --> src/ch02/s2_lifetime.rs:40:12
[INFO] [stdout]    |
[INFO] [stdout] 36 |     for (i, c) in chars.iter_mut().enumerate() {
[INFO] [stdout]    |                   ----------------------------
[INFO] [stdout]    |                   |
[INFO] [stdout]    |                   mutable borrow occurs here
[INFO] [stdout]    |                   mutable borrow later used here
[INFO] [stdout] ...
[INFO] [stdout] 40 |         if chars[i] == '?' {
[INFO] [stdout]    |            ^^^^^ immutable borrow occurs here
[INFO] [stdout] 
[INFO] [stdout] error[E0502]: cannot borrow `chars` as immutable because it is also borrowed as mutable
[INFO] [stdout]   --> src/ch02/s2_lifetime.rs:42:51
[INFO] [stdout]    |
[INFO] [stdout] 36 |     for (i, c) in chars.iter_mut().enumerate() {
[INFO] [stdout]    |                   ----------------------------
[INFO] [stdout]    |                   |
[INFO] [stdout]    |                   mutable borrow occurs here
[INFO] [stdout]    |                   mutable borrow later used here
[INFO] [stdout] ...
[INFO] [stdout] 42 |             let left = if i==0 {None} else { Some(chars[i-1]) };
[INFO] [stdout]    |                                                   ^^^^^ immutable borrow occurs here
[INFO] [stdout] 
[INFO] [stdout] error[E0502]: cannot borrow `chars` as immutable because it is also borrowed as mutable
[INFO] [stdout]   --> src/ch02/s2_lifetime.rs:44:59
[INFO] [stdout]    |
[INFO] [stdout] 36 |     for (i, c) in chars.iter_mut().enumerate() {
[INFO] [stdout]    |                   ----------------------------
[INFO] [stdout]    |                   |
[INFO] [stdout]    |                   mutable borrow occurs here
[INFO] [stdout]    |                   mutable borrow later used here
[INFO] [stdout] ...
[INFO] [stdout] 44 |             let right = if i==s.len()-1 {None} else {Some(chars[i+1])};
[INFO] [stdout]    |                                                           ^^^^^ immutable borrow occurs here
[INFO] [stdout] 
[INFO] [stdout] error[E0499]: cannot borrow `chars` as mutable more than once at a time
[INFO] [stdout]   --> src/ch02/s2_lifetime.rs:47:13
[INFO] [stdout]    |
[INFO] [stdout] 36 |     for (i, c) in chars.iter_mut().enumerate() {
[INFO] [stdout]    |                   ----------------------------
[INFO] [stdout]    |                   |
[INFO] [stdout]    |                   first mutable borrow occurs here
[INFO] [stdout]    |                   first borrow later used here
[INFO] [stdout] ...
[INFO] [stdout] 47 |             chars[i] = words.find(|&w| Some(w) != left && Some(w) != right).unwrap();
[INFO] [stdout]    |             ^^^^^ second mutable borrow occurs here
[INFO] [stdout] 
[INFO] [stdout] error: aborting due to 4 previous errors
[INFO] [stdout] 
[INFO] [stdout] Some errors have detailed explanations: E0499, E0502.
[INFO] [stdout] For more information about an error, try `rustc --explain E0499`.
[INFO] [stdout] Couldn't compile the test.
[INFO] [stdout] ---- src/ch02/s2_lifetime.rs - ch02::s2_lifetime::understand_lifetime_hrtb (line 424) stdout ----
[INFO] [stdout] error: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/ch02/s2_lifetime.rs:434:15
[INFO] [stdout]     |
[INFO] [stdout] 434 | fn bar(b: Box<for<'f> DoSomething<&'f usize>>) {
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2018) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] note: the lint level is defined here
[INFO] [stdout]    --> src/ch02/s2_lifetime.rs:423:9
[INFO] [stdout]     |
[INFO] [stdout] 423 | #![deny(warnings)]
[INFO] [stdout]     |         ^^^^^^^^
[INFO] [stdout]     = note: `#[deny(bare_trait_objects)]` implied by `#[deny(warnings)]`
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]     |
[INFO] [stdout] 434 | fn bar(b: Box<dyn for<'f> DoSomething<&'f usize>>) {
[INFO] [stdout]     |               +++
[INFO] [stdout] 
[INFO] [stdout] error: aborting due to 1 previous error
[INFO] [stdout] 
[INFO] [stdout] Couldn't compile the test.
[INFO] [stdout] ---- src/ch02/s3_thread_safe.rs - ch02::s3_thread_safe::understand_channel_and_condvar (line 250) stdout ----
[INFO] [stdout] error[E0463]: can't find crate for `crossbeam_channel`
[INFO] [stdout]    --> src/ch02/s3_thread_safe.rs:252:1
[INFO] [stdout]     |
[INFO] [stdout] 252 | extern crate crossbeam_channel;
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ can't find crate
[INFO] [stdout] 
[INFO] [stdout] error[E0463]: can't find crate for `rayon`
[INFO] [stdout]    --> src/ch02/s3_thread_safe.rs:253:1
[INFO] [stdout]     |
[INFO] [stdout] 253 | extern crate rayon;
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^ can't find crate
[INFO] [stdout] 
[INFO] [stdout] error: unused import: `std::collections::HashMap`
[INFO] [stdout]    --> src/ch02/s3_thread_safe.rs:255:5
[INFO] [stdout]     |
[INFO] [stdout] 255 | use std::collections::HashMap;
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] note: the lint level is defined here
[INFO] [stdout]    --> src/ch02/s3_thread_safe.rs:249:9
[INFO] [stdout]     |
[INFO] [stdout] 249 | #![deny(warnings)]
[INFO] [stdout]     |         ^^^^^^^^
[INFO] [stdout]     = note: `#[deny(unused_imports)]` implied by `#[deny(warnings)]`
[INFO] [stdout] 
[INFO] [stdout] error: unused imports: `Arc`, `Condvar`, and `Mutex`
[INFO] [stdout]    --> src/ch02/s3_thread_safe.rs:256:17
[INFO] [stdout]     |
[INFO] [stdout] 256 | use std::sync::{Arc, Condvar, Mutex};
[INFO] [stdout]     |                 ^^^  ^^^^^^^  ^^^^^
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]    --> src/ch02/s3_thread_safe.rs:280:15
[INFO] [stdout]     |
[INFO] [stdout] 280 |         match work_receiver.recv() {
[INFO] [stdout]     |               ^^^^^^^^^^^^^ cannot infer type
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]    --> src/ch02/s3_thread_safe.rs:283:25
[INFO] [stdout]     |
[INFO] [stdout] 283 |                 let _ = result_sender.send(ResultMsg::Result(num));
[INFO] [stdout]     |                         ^^^^^^^^^^^^^ cannot infer type
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]    --> src/ch02/s3_thread_safe.rs:294:13
[INFO] [stdout]     |
[INFO] [stdout] 294 |     let _ = work_sender.send(WorkMsg::Work(0));
[INFO] [stdout]     |             ^^^^^^^^^^^ cannot infer type
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]    --> src/ch02/s3_thread_safe.rs:302:15
[INFO] [stdout]     |
[INFO] [stdout] 302 |         match result_receiver.recv() {
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^ cannot infer type
[INFO] [stdout] 
[INFO] [stdout] error: aborting due to 8 previous errors
[INFO] [stdout] 
[INFO] [stdout] Some errors have detailed explanations: E0282, E0463.
[INFO] [stdout] For more information about an error, try `rustc --explain E0282`.
[INFO] [stdout] Couldn't compile the test.
[INFO] [stdout] ---- src/ch02/s2_lifetime.rs - ch02::s2_lifetime::understand_lifetime_in_generic_type (line 306) stdout ----
[INFO] [stdout] error: conflicting implementations of trait `Trait` for type `fn(&_)`
[INFO] [stdout]    --> src/ch02/s2_lifetime.rs:317:1
[INFO] [stdout]     |
[INFO] [stdout] 311 | impl<T> Trait for fn(T) {
[INFO] [stdout]     | ----------------------- first implementation here
[INFO] [stdout] ...
[INFO] [stdout] 317 | impl<T> Trait for fn(&T) {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^ conflicting implementation for `fn(&_)`
[INFO] [stdout]     |
[INFO] [stdout]     = warning: the behavior may change in a future release
[INFO] [stdout]     = note: for more information, see issue #56105 <https://github.com/rust-lang/rust/issues/56105>
[INFO] [stdout]     = note: this behavior recently changed as a result of a bug fix; see rust-lang/rust#56105 for details
[INFO] [stdout] note: the lint level is defined here
[INFO] [stdout]    --> src/ch02/s2_lifetime.rs:305:9
[INFO] [stdout]     |
[INFO] [stdout] 305 | #![deny(warnings)]
[INFO] [stdout]     |         ^^^^^^^^
[INFO] [stdout]     = note: `#[deny(coherence_leak_check)]` implied by `#[deny(warnings)]`
[INFO] [stdout] 
[INFO] [stdout] error: aborting due to 1 previous error
[INFO] [stdout] 
[INFO] [stdout] Couldn't compile the test.
[INFO] [stdout] ---- src/ch02/s3_thread_safe.rs - ch02::s3_thread_safe::understand_shared_thread (line 128) stdout ----
[INFO] [stdout] error[E0432]: unresolved import `crossbeam`
[INFO] [stdout]    --> src/ch02/s3_thread_safe.rs:129:5
[INFO] [stdout]     |
[INFO] [stdout] 129 | use crossbeam;
[INFO] [stdout]     |     ^^^^^^^^^ no external crate `crossbeam`
[INFO] [stdout] 
[INFO] [stdout] error: unused imports: `thread` and `time::Duration`
[INFO] [stdout]    --> src/ch02/s3_thread_safe.rs:130:11
[INFO] [stdout]     |
[INFO] [stdout] 130 | use std::{thread, time::Duration};
[INFO] [stdout]     |           ^^^^^^  ^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] note: the lint level is defined here
[INFO] [stdout]    --> src/ch02/s3_thread_safe.rs:127:9
[INFO] [stdout]     |
[INFO] [stdout] 127 | #![deny(warnings)]
[INFO] [stdout]     |         ^^^^^^^^
[INFO] [stdout]     = note: `#[deny(unused_imports)]` implied by `#[deny(warnings)]`
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]    --> src/ch02/s3_thread_safe.rs:135:23
[INFO] [stdout]     |
[INFO] [stdout] 135 |     crossbeam::scope(|scope| {
[INFO] [stdout]     |                       ^^^^^
[INFO] [stdout] 136 |         for e in &vec {
[INFO] [stdout] 137 |             scope.spawn(move |_| {
[INFO] [stdout]     |             ----- type must be known at this point
[INFO] [stdout]     |
[INFO] [stdout] help: consider giving this closure parameter an explicit type
[INFO] [stdout]     |
[INFO] [stdout] 135 |     crossbeam::scope(|scope: /* Type */| {
[INFO] [stdout]     |                            ++++++++++++
[INFO] [stdout] 
[INFO] [stdout] error: aborting due to 3 previous errors
[INFO] [stdout] 
[INFO] [stdout] Some errors have detailed explanations: E0282, E0432.
[INFO] [stdout] For more information about an error, try `rustc --explain E0282`.
[INFO] [stdout] Couldn't compile the test.
[INFO] [stdout] ---- src/ch02/s1_ownership.rs - ch02::s1_ownership::understand_drop (line 439) stdout ----
[INFO] [stdout] error: `box_syntax` has been removed
[INFO] [stdout]    --> src/ch02/s1_ownership.rs:445:25
[INFO] [stdout]     |
[INFO] [stdout] 445 |           let x: Box<_> = box ArcInner {
[INFO] [stdout]     |  _________________________^
[INFO] [stdout] 446 | |             strong: atomic::AtomicUsize::new(1),
[INFO] [stdout] 447 | |             weak: atomic::AtomicUsize::new(1),
[INFO] [stdout] 448 | |             data,
[INFO] [stdout] 449 | |         };
[INFO] [stdout]     | |_________^
[INFO] [stdout]     |
[INFO] [stdout] help: use `Box::new()` instead
[INFO] [stdout]     |
[INFO] [stdout] 445 ~         let x: Box<_> = Box::new(ArcInner {
[INFO] [stdout] 446 |             strong: atomic::AtomicUsize::new(1),
[INFO] [stdout] 447 |             weak: atomic::AtomicUsize::new(1),
[INFO] [stdout] 448 |             data,
[INFO] [stdout] 449 ~         });
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find type `Arc` in this scope
[INFO] [stdout]    --> src/ch02/s1_ownership.rs:441:9
[INFO] [stdout]     |
[INFO] [stdout] 441 | impl<T> Arc<T> {
[INFO] [stdout]     |         ^^^ not found in this scope
[INFO] [stdout]     |
[INFO] [stdout] help: consider importing this struct
[INFO] [stdout]     |
[INFO] [stdout] 439 + use std::sync::Arc;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find type `Arc` in this scope
[INFO] [stdout]    --> src/ch02/s1_ownership.rs:442:28
[INFO] [stdout]     |
[INFO] [stdout] 442 |     pub fn new(data: T) -> Arc<T> {
[INFO] [stdout]     |                            ^^^ not found in this scope
[INFO] [stdout]     |
[INFO] [stdout] help: consider importing this struct
[INFO] [stdout]     |
[INFO] [stdout] 439 + use std::sync::Arc;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find type `Weak` in this scope
[INFO] [stdout]    --> src/ch02/s1_ownership.rs:457:9
[INFO] [stdout]     |
[INFO] [stdout] 457 | impl<T> Weak<T> {
[INFO] [stdout]     |         ^^^^ not found in this scope
[INFO] [stdout]     |
[INFO] [stdout] help: consider importing one of these structs
[INFO] [stdout]     |
[INFO] [stdout] 439 + use std::rc::Weak;
[INFO] [stdout]     |
[INFO] [stdout] 439 + use std::sync::Weak;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] error[E0433]: failed to resolve: use of unresolved module or unlinked crate `mem`
[INFO] [stdout]    --> src/ch02/s1_ownership.rs:460:9
[INFO] [stdout]     |
[INFO] [stdout] 460 |         mem::forget(self);
[INFO] [stdout]     |         ^^^ use of unresolved module or unlinked crate `mem`
[INFO] [stdout]     |
[INFO] [stdout]     = help: if you wanted to use a crate named `mem`, use `cargo add mem` to add it to your `Cargo.toml`
[INFO] [stdout] help: consider importing this module
[INFO] [stdout]     |
[INFO] [stdout] 439 + use std::mem;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]    --> src/ch02/s1_ownership.rs:451:26
[INFO] [stdout]     |
[INFO] [stdout] 451 |         Self::from_inner(Box::leak(x).into())
[INFO] [stdout]     |                          ^^^^^^^^^ cannot infer type of the type parameter `T` declared on the struct `Box`
[INFO] [stdout]     |
[INFO] [stdout] help: consider specifying the generic arguments
[INFO] [stdout]     |
[INFO] [stdout] 451 |         Self::from_inner(Box::<T, A>::leak(x).into())
[INFO] [stdout]     |                             ++++++++
[INFO] [stdout] 
[INFO] [stdout] error: aborting due to 6 previous errors
[INFO] [stdout] 
[INFO] [stdout] Some errors have detailed explanations: E0282, E0425, E0433.
[INFO] [stdout] For more information about an error, try `rustc --explain E0282`.
[INFO] [stdout] Couldn't compile the test.
[INFO] [stdout] ---- src/ch02/s3_thread_safe.rs - ch02::s3_thread_safe::understand_shared_thread (line 61) stdout ----
[INFO] [stdout] error[E0382]: use of moved value: `v`
[INFO] [stdout]   --> src/ch02/s3_thread_safe.rs:68:23
[INFO] [stdout]    |
[INFO] [stdout] 66 |     let mut v = vec![1,2,3];
[INFO] [stdout]    |         ----- move occurs because `v` has type `Vec<i32>`, which does not implement the `Copy` trait
[INFO] [stdout] 67 |     for i in 0..10 {
[INFO] [stdout]    |     -------------- inside of this loop
[INFO] [stdout] 68 |         thread::spawn(move || {
[INFO] [stdout]    |                       ^^^^^^^ value moved into closure here, in previous iteration of loop
[INFO] [stdout] 69 |             v.push(i);
[INFO] [stdout]    |             - use occurs due to use in closure
[INFO] [stdout]    |
[INFO] [stdout] help: consider cloning the value before moving it into the closure
[INFO] [stdout]    |
[INFO] [stdout] 68 ~         let value = v.clone();
[INFO] [stdout] 69 ~         thread::spawn(move || {
[INFO] [stdout] 70 ~             value.push(i);
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] error: aborting due to 1 previous error
[INFO] [stdout] 
[INFO] [stdout] For more information about this error, try `rustc --explain E0382`.
[INFO] [stdout] Couldn't compile the test.
[INFO] [stdout] ---- src/ch02/s3_thread_safe.rs - ch02::s3_thread_safe::understand_channel_and_condvar (line 462) stdout ----
[INFO] [stdout] error[E0463]: can't find crate for `crossbeam_channel`
[INFO] [stdout]    --> src/ch02/s3_thread_safe.rs:464:1
[INFO] [stdout]     |
[INFO] [stdout] 464 | extern crate crossbeam_channel;
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ can't find crate
[INFO] [stdout] 
[INFO] [stdout] error[E0463]: can't find crate for `rayon`
[INFO] [stdout]    --> src/ch02/s3_thread_safe.rs:465:1
[INFO] [stdout]     |
[INFO] [stdout] 465 | extern crate rayon;
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^ can't find crate
[INFO] [stdout] 
[INFO] [stdout] error[E0432]: unresolved import `parking_lot`
[INFO] [stdout]    --> src/ch02/s3_thread_safe.rs:470:5
[INFO] [stdout]     |
[INFO] [stdout] 470 | use parking_lot::{Condvar, Mutex};
[INFO] [stdout]     |     ^^^^^^^^^^^ use of unresolved module or unlinked crate `parking_lot`
[INFO] [stdout]     |
[INFO] [stdout]     = help: if you wanted to use a crate named `parking_lot`, use `cargo add parking_lot` to add it to your `Cargo.toml`
[INFO] [stdout] 
[INFO] [stdout] error: cannot find macro `select` in this scope
[INFO] [stdout]    --> src/ch02/s3_thread_safe.rs:499:9
[INFO] [stdout]     |
[INFO] [stdout] 499 |         select! {
[INFO] [stdout]     |         ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] error: unused import: `std::collections::HashMap`
[INFO] [stdout]    --> src/ch02/s3_thread_safe.rs:467:5
[INFO] [stdout]     |
[INFO] [stdout] 467 | use std::collections::HashMap;
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] note: the lint level is defined here
[INFO] [stdout]    --> src/ch02/s3_thread_safe.rs:461:9
[INFO] [stdout]     |
[INFO] [stdout] 461 | #![deny(warnings)]
[INFO] [stdout]     |         ^^^^^^^^
[INFO] [stdout]     = note: `#[deny(unused_imports)]` implied by `#[deny(warnings)]`
[INFO] [stdout] 
[INFO] [stdout] error: unused import: `std::sync::Arc`
[INFO] [stdout]    --> src/ch02/s3_thread_safe.rs:471:5
[INFO] [stdout]     |
[INFO] [stdout] 471 | use std::sync::Arc;
[INFO] [stdout]     |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]    --> src/ch02/s3_thread_safe.rs:547:13
[INFO] [stdout]     |
[INFO] [stdout] 547 |     let _ = work_sender.send(WorkMsg::Work(0));
[INFO] [stdout]     |             ^^^^^^^^^^^ cannot infer type
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]    --> src/ch02/s3_thread_safe.rs:554:15
[INFO] [stdout]     |
[INFO] [stdout] 554 |         match result_receiver.recv() {
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^ cannot infer type
[INFO] [stdout] 
[INFO] [stdout] error: aborting due to 8 previous errors
[INFO] [stdout] 
[INFO] [stdout] Some errors have detailed explanations: E0282, E0432, E0463.
[INFO] [stdout] For more information about an error, try `rustc --explain E0282`.
[INFO] [stdout] Couldn't compile the test.
[INFO] [stdout] ---- src/ch02/s3_thread_safe.rs - ch02::s3_thread_safe::understand_shared_thread (line 77) stdout ----
[INFO] [stdout] error[E0521]: borrowed data escapes outside of function
[INFO] [stdout]   --> src/ch02/s3_thread_safe.rs:80:5
[INFO] [stdout]    |
[INFO] [stdout] 79 |   fn inner_func(vref: &mut Vec<u32>) {
[INFO] [stdout]    |                 ----  - let's call the lifetime of this reference `'1`
[INFO] [stdout]    |                 |
[INFO] [stdout]    |                 `vref` is a reference that is only valid in the function body
[INFO] [stdout] 80 | /     std::thread::spawn(move || {
[INFO] [stdout] 81 | |     vref.push(3);
[INFO] [stdout] 82 | |     });
[INFO] [stdout]    | |      ^
[INFO] [stdout]    | |      |
[INFO] [stdout]    | |______`vref` escapes the function body here
[INFO] [stdout]    |        argument requires that `'1` must outlive `'static`
[INFO] [stdout] 
[INFO] [stdout] error: aborting due to 1 previous error
[INFO] [stdout] 
[INFO] [stdout] For more information about this error, try `rustc --explain E0521`.
[INFO] [stdout] Couldn't compile the test.
[INFO] [stdout] ---- src/ch02/s3_thread_safe.rs - ch02::s3_thread_safe::understand_shared_thread (line 150) stdout ----
[INFO] [stdout] error[E0432]: unresolved import `crossbeam`
[INFO] [stdout]    --> src/ch02/s3_thread_safe.rs:151:5
[INFO] [stdout]     |
[INFO] [stdout] 151 | use crossbeam; // 0.6.0
[INFO] [stdout]     |     ^^^^^^^^^ no external crate `crossbeam`
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]    --> src/ch02/s3_thread_safe.rs:157:23
[INFO] [stdout]     |
[INFO] [stdout] 157 |     crossbeam::scope(|scope| {
[INFO] [stdout]     |                       ^^^^^
[INFO] [stdout] 158 |         for e in &mut vec {
[INFO] [stdout] 159 |             scope.spawn(move |_| {
[INFO] [stdout]     |             ----- type must be known at this point
[INFO] [stdout]     |
[INFO] [stdout] help: consider giving this closure parameter an explicit type
[INFO] [stdout]     |
[INFO] [stdout] 157 |     crossbeam::scope(|scope: /* Type */| {
[INFO] [stdout]     |                            ++++++++++++
[INFO] [stdout] 
[INFO] [stdout] error: aborting due to 2 previous errors
[INFO] [stdout] 
[INFO] [stdout] Some errors have detailed explanations: E0282, E0432.
[INFO] [stdout] For more information about an error, try `rustc --explain E0282`.
[INFO] [stdout] Couldn't compile the test.
[INFO] [stdout] ---- src/ch02/s3_thread_safe.rs - ch02::s3_thread_safe::understand_channel_and_condvar (line 756) stdout ----
[INFO] [stdout] error[E0463]: can't find crate for `crossbeam_channel`
[INFO] [stdout]    --> src/ch02/s3_thread_safe.rs:758:1
[INFO] [stdout]     |
[INFO] [stdout] 758 | extern crate crossbeam_channel;
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ can't find crate
[INFO] [stdout] 
[INFO] [stdout] error[E0463]: can't find crate for `rayon`
[INFO] [stdout]    --> src/ch02/s3_thread_safe.rs:759:1
[INFO] [stdout]     |
[INFO] [stdout] 759 | extern crate rayon;
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^ can't find crate
[INFO] [stdout] 
[INFO] [stdout] error: cannot find macro `select` in this scope
[INFO] [stdout]    --> src/ch02/s3_thread_safe.rs:832:9
[INFO] [stdout]     |
[INFO] [stdout] 832 |         select! {
[INFO] [stdout]     |         ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] error: unused import: `Condvar`
[INFO] [stdout]    --> src/ch02/s3_thread_safe.rs:762:22
[INFO] [stdout]     |
[INFO] [stdout] 762 | use std::sync::{Arc, Condvar, Mutex};
[INFO] [stdout]     |                      ^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] note: the lint level is defined here
[INFO] [stdout]    --> src/ch02/s3_thread_safe.rs:755:9
[INFO] [stdout]     |
[INFO] [stdout] 755 | #![deny(warnings)]
[INFO] [stdout]     |         ^^^^^^^^
[INFO] [stdout]     = note: `#[deny(unused_imports)]` implied by `#[deny(warnings)]`
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]    --> src/ch02/s3_thread_safe.rs:904:13
[INFO] [stdout]     |
[INFO] [stdout] 904 |     let _ = work_sender.send(WorkMsg::Work(0));
[INFO] [stdout]     |             ^^^^^^^^^^^ cannot infer type
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]    --> src/ch02/s3_thread_safe.rs:913:15
[INFO] [stdout]     |
[INFO] [stdout] 913 |         match result_receiver.recv() {
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^ cannot infer type
[INFO] [stdout] 
[INFO] [stdout] error: aborting due to 6 previous errors
[INFO] [stdout] 
[INFO] [stdout] Some errors have detailed explanations: E0282, E0463.
[INFO] [stdout] For more information about an error, try `rustc --explain E0282`.
[INFO] [stdout] Couldn't compile the test.
[INFO] [stdout] ---- src/ch02/s5_trait_and_generic.rs - ch02::s5_trait_and_generic::blanket_impls (line 633) stdout ----
[INFO] [stdout] error[E0119]: conflicting implementations of trait `Blanket` for type `u8`
[INFO] [stdout]    --> src/ch02/s5_trait_and_generic.rs:645:5
[INFO] [stdout]     |
[INFO] [stdout] 638 |     impl Blanket for u8 {
[INFO] [stdout]     |     ------------------- first implementation here
[INFO] [stdout] ...
[INFO] [stdout] 645 |     impl Blanket for u8 {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^ conflicting implementation for `u8`
[INFO] [stdout] 
[INFO] [stdout] error: aborting due to 1 previous error
[INFO] [stdout] 
[INFO] [stdout] For more information about this error, try `rustc --explain E0119`.
[INFO] [stdout] Couldn't compile the test.
[INFO] [stdout] ---- src/ch02/s2_lifetime.rs - ch02::s2_lifetime::understand_lifetime_hrtb (line 447) stdout ----
[INFO] [stdout] error[E0432]: unresolved import `rand`
[INFO] [stdout]    --> src/ch02/s2_lifetime.rs:448:5
[INFO] [stdout]     |
[INFO] [stdout] 448 | use rand;
[INFO] [stdout]     |     ^^^^ no external crate `rand`
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: `if` and `else` have incompatible types
[INFO] [stdout]    --> src/ch02/s2_lifetime.rs:507:9
[INFO] [stdout]     |
[INFO] [stdout] 502 |       let mut checker = if rand::random() {
[INFO] [stdout]     |  _______________________-
[INFO] [stdout] 503 | |         println!("Initializing Xor Checksum");
[INFO] [stdout] 504 | |         Box::new(Xor)
[INFO] [stdout]     | |         ------------- expected because of this
[INFO] [stdout] 505 | |     } else {
[INFO] [stdout] 506 | |         println!("Initializing Add Checksum");
[INFO] [stdout] 507 | |         Box::new(Add)
[INFO] [stdout]     | |         ^^^^^^^^^^^^^ expected `Box<Xor>`, found `Box<Add>`
[INFO] [stdout] 508 | |     };
[INFO] [stdout]     | |_____- `if` and `else` have incompatible types
[INFO] [stdout]     |
[INFO] [stdout]     = note: expected struct `Box<Xor>`
[INFO] [stdout]                found struct `Box<Add>`
[INFO] [stdout] 
[INFO] [stdout] error: aborting due to 2 previous errors
[INFO] [stdout] 
[INFO] [stdout] Some errors have detailed explanations: E0308, E0432.
[INFO] [stdout] For more information about an error, try `rustc --explain E0308`.
[INFO] [stdout] Couldn't compile the test.
[INFO] [stdout] ---- src/ch02/s5_trait_and_generic.rs - ch02::s5_trait_and_generic::object_safety (line 402) stdout ----
[INFO] [stdout] error: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/ch02/s5_trait_and_generic.rs:417:26
[INFO] [stdout]     |
[INFO] [stdout] 417 |     impl StarkFamily for Children {
[INFO] [stdout]     |                          ^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2018) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] note: the lint level is defined here
[INFO] [stdout]    --> src/ch02/s5_trait_and_generic.rs:401:9
[INFO] [stdout]     |
[INFO] [stdout] 401 | #![deny(warnings)]
[INFO] [stdout]     |         ^^^^^^^^
[INFO] [stdout]     = note: `#[deny(bare_trait_objects)]` implied by `#[deny(warnings)]`
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]     |
[INFO] [stdout] 417 |     impl StarkFamily for dyn Children {
[INFO] [stdout]     |                          +++
[INFO] [stdout] help: alternatively use a blanket implementation to implement `StarkFamily` for all types that also implement `Children`
[INFO] [stdout]     |
[INFO] [stdout] 417 -     impl StarkFamily for Children {
[INFO] [stdout] 417 +     impl<T: Children> StarkFamily for T {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] error: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/ch02/s5_trait_and_generic.rs:427:26
[INFO] [stdout]     |
[INFO] [stdout] 427 |     impl TullyFamily for Children {
[INFO] [stdout]     |                          ^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2018) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]     |
[INFO] [stdout] 427 |     impl TullyFamily for dyn Children {
[INFO] [stdout]     |                          +++
[INFO] [stdout] help: alternatively use a blanket implementation to implement `TullyFamily` for all types that also implement `Children`
[INFO] [stdout]     |
[INFO] [stdout] 427 -     impl TullyFamily for Children {
[INFO] [stdout] 427 +     impl<T: Children> TullyFamily for T {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] error: aborting due to 2 previous errors
[INFO] [stdout] 
[INFO] [stdout] Couldn't compile the test.
[INFO] [stdout] ---- src/ch02/s3_thread_safe.rs - ch02::s3_thread_safe::understand_channel_and_condvar (line 974) stdout ----
[INFO] [stdout] error[E0463]: can't find crate for `crossbeam_channel`
[INFO] [stdout]    --> src/ch02/s3_thread_safe.rs:976:1
[INFO] [stdout]     |
[INFO] [stdout] 976 | extern crate crossbeam_channel;
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ can't find crate
[INFO] [stdout] 
[INFO] [stdout] error[E0463]: can't find crate for `rayon`
[INFO] [stdout]    --> src/ch02/s3_thread_safe.rs:977:1
[INFO] [stdout]     |
[INFO] [stdout] 977 | extern crate rayon;
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^ can't find crate
[INFO] [stdout] 
[INFO] [stdout] error: cannot find macro `select` in this scope
[INFO] [stdout]     --> src/ch02/s3_thread_safe.rs:1060:9
[INFO] [stdout]      |
[INFO] [stdout] 1060 |         select! {
[INFO] [stdout]      |         ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]     --> src/ch02/s3_thread_safe.rs:1202:13
[INFO] [stdout]      |
[INFO] [stdout] 1202 |     let _ = work_sender.send(WorkMsg::Work(0));
[INFO] [stdout]      |             ^^^^^^^^^^^ cannot infer type
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]     --> src/ch02/s3_thread_safe.rs:1214:15
[INFO] [stdout]      |
[INFO] [stdout] 1214 |         match result_receiver.recv() {
[INFO] [stdout]      |               ^^^^^^^^^^^^^^^ cannot infer type
[INFO] [stdout] 
[INFO] [stdout] error: aborting due to 5 previous errors
[INFO] [stdout] 
[INFO] [stdout] Some errors have detailed explanations: E0282, E0463.
[INFO] [stdout] For more information about an error, try `rustc --explain E0282`.
[INFO] [stdout] Couldn't compile the test.
[INFO] [stdout] ---- src/ch02/s5_trait_and_generic.rs - ch02::s5_trait_and_generic::object_safety (line 377) stdout ----
[INFO] [stdout] error: unknown start of token: \u{ff0c}
[INFO] [stdout]    --> src/ch02/s5_trait_and_generic.rs:378:17
[INFO] [stdout]     |
[INFO] [stdout] 378 | 一个 trait 如果能实现自己，就认为它是对象安全的
[INFO] [stdout]     |                          ^^
[INFO] [stdout]     |
[INFO] [stdout] help: Unicode character '，' (Fullwidth Comma) looks like ',' (Comma), but it is not
[INFO] [stdout]     |
[INFO] [stdout] 378 - 一个 trait 如果能实现自己，就认为它是对象安全的
[INFO] [stdout] 378 + 一个 trait 如果能实现自己,就认为它是对象安全的
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] error: expected one of `!` or `::`, found keyword `trait`
[INFO] [stdout]    --> src/ch02/s5_trait_and_generic.rs:378:4
[INFO] [stdout]     |
[INFO] [stdout] 378 | 一个 trait 如果能实现自己，就认为它是对象安全的
[INFO] [stdout]     |      ^^^^^ expected one of `!` or `::`
[INFO] [stdout] 
[INFO] [stdout] error: aborting due to 2 previous errors
[INFO] [stdout] 
[INFO] [stdout] Couldn't compile the test.
[INFO] [stdout] ---- src/ch02/s5_trait_and_generic.rs - ch02::s5_trait_and_generic::blanket_impls (line 660) stdout ----
[INFO] [stdout] error: non-item in item list
[INFO] [stdout]    --> src/ch02/s5_trait_and_generic.rs:661:36
[INFO] [stdout]     |
[INFO] [stdout] 661 | impl <T: ToString> Blanket for T { ... }
[INFO] [stdout]     |                                  - ^^^ - item list ends here
[INFO] [stdout]     |                                  | |
[INFO] [stdout]     |                                  | non-item starts here
[INFO] [stdout]     |                                  item list starts here
[INFO] [stdout] 
[INFO] [stdout] error: non-item in item list
[INFO] [stdout]    --> src/ch02/s5_trait_and_generic.rs:664:37
[INFO] [stdout]     |
[INFO] [stdout] 664 |     impl <T: Clone> Blanket for T { ...}
[INFO] [stdout]     |                                   - ^^^- item list ends here
[INFO] [stdout]     |                                   | |
[INFO] [stdout]     |                                   | non-item starts here
[INFO] [stdout]     |                                   item list starts here
[INFO] [stdout] 
[INFO] [stdout] error[E0405]: cannot find trait `Blanket` in this scope
[INFO] [stdout]    --> src/ch02/s5_trait_and_generic.rs:661:20
[INFO] [stdout]     |
[INFO] [stdout] 661 | impl <T: ToString> Blanket for T { ... }
[INFO] [stdout]     |                    ^^^^^^^ not found in this scope
[INFO] [stdout] 
[INFO] [stdout] error[E0405]: cannot find trait `Blanket` in this scope
[INFO] [stdout]    --> src/ch02/s5_trait_and_generic.rs:664:21
[INFO] [stdout]     |
[INFO] [stdout] 664 |     impl <T: Clone> Blanket for T { ...}
[INFO] [stdout]     |                     ^^^^^^^ not found in this scope
[INFO] [stdout] 
[INFO] [stdout] error: aborting due to 4 previous errors
[INFO] [stdout] 
[INFO] [stdout] For more information about this error, try `rustc --explain E0405`.
[INFO] [stdout] Couldn't compile the test.
[INFO] [stdout] ---- src/ch02/s5_trait_and_generic.rs - ch02::s5_trait_and_generic::trait_dyn_dispatch (line 114) stdout ----
[INFO] [stdout] error: unknown start of token: `
[INFO] [stdout]    --> src/ch02/s5_trait_and_generic.rs:119:1
[INFO] [stdout]     |
[INFO] [stdout] 119 | ```rust
[INFO] [stdout]     | ^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: character appears 2 more times
[INFO] [stdout] help: Unicode character '`' (Grave Accent) looks like ''' (Single Quote), but it is not
[INFO] [stdout]     |
[INFO] [stdout] 119 - ```rust
[INFO] [stdout] 119 + '''rust
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] error: unknown start of token: `
[INFO] [stdout]    --> src/ch02/s5_trait_and_generic.rs:180:1
[INFO] [stdout]     |
[INFO] [stdout] 180 | ```
[INFO] [stdout]     | ^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: character appears 2 more times
[INFO] [stdout] help: Unicode character '`' (Grave Accent) looks like ''' (Single Quote), but it is not
[INFO] [stdout]     |
[INFO] [stdout] 180 - ```
[INFO] [stdout] 180 + '''
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] error: expected one of `!` or `[`, found `#`
[INFO] [stdout]    --> src/ch02/s5_trait_and_generic.rs:115:2
[INFO] [stdout]     |
[INFO] [stdout] 115 | ## trait 对象
[INFO] [stdout]     |  ^ expected one of `!` or `[`
[INFO] [stdout] 
[INFO] [stdout] error: aborting due to 3 previous errors
[INFO] [stdout] 
[INFO] [stdout] Couldn't compile the test.
[INFO] [stdout] ---- src/ch02/s5_trait_and_generic.rs - ch02::s5_trait_and_generic::trait_concept (line 41) stdout ----
[INFO] [stdout] error[E0283]: type annotations needed
[INFO] [stdout]   --> src/ch02/s5_trait_and_generic.rs:47:20
[INFO] [stdout]    |
[INFO] [stdout] 47 |     println!("{}", make_value(0));
[INFO] [stdout]    |                    ^^^^^^^^^^ cannot infer type of the type parameter `T` declared on the function `make_value`
[INFO] [stdout]    |
[INFO] [stdout]    = note: cannot satisfy `_: std::fmt::Display`
[INFO] [stdout] note: required by a bound in `make_value`
[INFO] [stdout]   --> src/ch02/s5_trait_and_generic.rs:51:18
[INFO] [stdout]    |
[INFO] [stdout] 51 | fn make_value<T: Display>(index: usize) -> T {
[INFO] [stdout]    |                  ^^^^^^^ required by this bound in `make_value`
[INFO] [stdout] help: consider specifying the generic argument
[INFO] [stdout]    |
[INFO] [stdout] 47 |     println!("{}", make_value::<T>(0));
[INFO] [stdout]    |                              +++++
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]   --> src/ch02/s5_trait_and_generic.rs:53:14
[INFO] [stdout]    |
[INFO] [stdout] 51 | fn make_value<T: Display>(index: usize) -> T {
[INFO] [stdout]    |               -                            -
[INFO] [stdout]    |               |                            |
[INFO] [stdout]    |               |                            expected `T` because of return type
[INFO] [stdout]    |               |                            help: consider using an impl return type: `impl Display`
[INFO] [stdout]    |               expected this type parameter
[INFO] [stdout] 52 |     match index {
[INFO] [stdout] 53 |         0 => "Hello, World",
[INFO] [stdout]    |              ^^^^^^^^^^^^^^ expected type parameter `T`, found `&str`
[INFO] [stdout]    |
[INFO] [stdout]    = note: expected type parameter `T`
[INFO] [stdout]                    found reference `&'static str`
[INFO] [stdout]    = note: the caller chooses a type for `T` which can be different from `&'static str`
[INFO] [stdout] 
[INFO] [stdout] error: aborting due to 2 previous errors
[INFO] [stdout] 
[INFO] [stdout] Some errors have detailed explanations: E0283, E0308.
[INFO] [stdout] For more information about an error, try `rustc --explain E0283`.
[INFO] [stdout] Couldn't compile the test.
[INFO] [stdout] ---- src/ch02/s3_thread_safe.rs - ch02::s3_thread_safe::understand_channel_and_condvar (line 573) stdout ----
[INFO] [stdout] error[E0463]: can't find crate for `crossbeam_channel`
[INFO] [stdout]    --> src/ch02/s3_thread_safe.rs:575:1
[INFO] [stdout]     |
[INFO] [stdout] 575 | extern crate crossbeam_channel;
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ can't find crate
[INFO] [stdout] 
[INFO] [stdout] error[E0463]: can't find crate for `rayon`
[INFO] [stdout]    --> src/ch02/s3_thread_safe.rs:576:1
[INFO] [stdout]     |
[INFO] [stdout] 576 | extern crate rayon;
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^ can't find crate
[INFO] [stdout] 
[INFO] [stdout] error[E0432]: unresolved import `parking_lot`
[INFO] [stdout]    --> src/ch02/s3_thread_safe.rs:581:5
[INFO] [stdout]     |
[INFO] [stdout] 581 | use parking_lot::{Condvar, Mutex};
[INFO] [stdout]     |     ^^^^^^^^^^^ use of unresolved module or unlinked crate `parking_lot`
[INFO] [stdout]     |
[INFO] [stdout]     = help: if you wanted to use a crate named `parking_lot`, use `cargo add parking_lot` to add it to your `Cargo.toml`
[INFO] [stdout] 
[INFO] [stdout] error: cannot find macro `select` in this scope
[INFO] [stdout]    --> src/ch02/s3_thread_safe.rs:638:9
[INFO] [stdout]     |
[INFO] [stdout] 638 |         select! {
[INFO] [stdout]     |         ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] error: unused import: `std::collections::HashMap`
[INFO] [stdout]    --> src/ch02/s3_thread_safe.rs:578:5
[INFO] [stdout]     |
[INFO] [stdout] 578 | use std::collections::HashMap;
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] note: the lint level is defined here
[INFO] [stdout]    --> src/ch02/s3_thread_safe.rs:572:9
[INFO] [stdout]     |
[INFO] [stdout] 572 | #![deny(warnings)]
[INFO] [stdout]     |         ^^^^^^^^
[INFO] [stdout]     = note: `#[deny(unused_imports)]` implied by `#[deny(warnings)]`
[INFO] [stdout] 
[INFO] [stdout] error: unused import: `std::sync::Arc`
[INFO] [stdout]    --> src/ch02/s3_thread_safe.rs:582:5
[INFO] [stdout]     |
[INFO] [stdout] 582 | use std::sync::Arc;
[INFO] [stdout]     |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]    --> src/ch02/s3_thread_safe.rs:687:5
[INFO] [stdout]     |
[INFO] [stdout] 687 |     work_sender.send(WorkMsg::Work(0));
[INFO] [stdout]     |     ^^^^^^^^^^^ cannot infer type
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]    --> src/ch02/s3_thread_safe.rs:694:15
[INFO] [stdout]     |
[INFO] [stdout] 694 |         match result_receiver.recv() {
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^ cannot infer type
[INFO] [stdout] 
[INFO] [stdout] error: aborting due to 8 previous errors
[INFO] [stdout] 
[INFO] [stdout] Some errors have detailed explanations: E0282, E0432, E0463.
[INFO] [stdout] For more information about an error, try `rustc --explain E0282`.
[INFO] [stdout] Couldn't compile the test.
[INFO] [stdout] ---- src/ch02/s5_trait_and_generic.rs - ch02::s5_trait_and_generic::blanket_impls (line 674) stdout ----
[INFO] [stdout] error[E0405]: cannot find trait `TryInto` in this scope
[INFO] [stdout]    --> src/ch02/s5_trait_and_generic.rs:705:12
[INFO] [stdout]     |
[INFO] [stdout] 705 |         U: TryInto<T, Error = E>,
[INFO] [stdout]     |            ^^^^^^^ not found in this scope
[INFO] [stdout]     |
[INFO] [stdout]     = note: 'std::convert::TryInto' is included in the prelude starting in Edition 2021
[INFO] [stdout] help: consider importing this trait
[INFO] [stdout]     |
[INFO] [stdout] 674 + use std::convert::TryInto;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] error: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/ch02/s5_trait_and_generic.rs:685:32
[INFO] [stdout]     |
[INFO] [stdout] 685 |     impl<T: ToString> Blanket<&ToString> for T {
[INFO] [stdout]     |                                ^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2018) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] note: the lint level is defined here
[INFO] [stdout]    --> src/ch02/s5_trait_and_generic.rs:672:9
[INFO] [stdout]     |
[INFO] [stdout] 672 | #![deny(warnings)]
[INFO] [stdout]     |         ^^^^^^^^
[INFO] [stdout]     = note: `#[deny(bare_trait_objects)]` implied by `#[deny(warnings)]`
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]     |
[INFO] [stdout] 685 |     impl<T: ToString> Blanket<&dyn ToString> for T {
[INFO] [stdout]     |                                +++
[INFO] [stdout] 
[INFO] [stdout] error: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/ch02/s5_trait_and_generic.rs:693:29
[INFO] [stdout]     |
[INFO] [stdout] 693 |     impl<T: Clone> Blanket<&CloneBlanket> for T {
[INFO] [stdout]     |                             ^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2018) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]     |
[INFO] [stdout] 693 |     impl<T: Clone> Blanket<&dyn CloneBlanket> for T {
[INFO] [stdout]     |                             +++
[INFO] [stdout] 
[INFO] [stdout] error: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/ch02/s5_trait_and_generic.rs:703:28
[INFO] [stdout]     |
[INFO] [stdout] 703 |     impl<T, E, U> Blanket<&TryIntoBlanket<T, Error = E>> for U
[INFO] [stdout]     |                            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2018) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]     |
[INFO] [stdout] 703 |     impl<T, E, U> Blanket<&dyn TryIntoBlanket<T, Error = E>> for U
[INFO] [stdout]     |                            +++
[INFO] [stdout] 
[INFO] [stdout] error: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/ch02/s5_trait_and_generic.rs:712:32
[INFO] [stdout]     |
[INFO] [stdout] 712 |     impl<T: ToString> Blanket<&ToString> for T {
[INFO] [stdout]     |                                ^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2018) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]     |
[INFO] [stdout] 712 |     impl<T: ToString> Blanket<&dyn ToString> for T {
[INFO] [stdout]     |                                +++
[INFO] [stdout] 
[INFO] [stdout] error: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/ch02/s5_trait_and_generic.rs:718:43
[INFO] [stdout]     |
[INFO] [stdout] 718 |     impl<T: AsRef<U>, U: ?Sized> Blanket<&AsRef<U>> for T {
[INFO] [stdout]     |                                           ^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2018) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]     |
[INFO] [stdout] 718 |     impl<T: AsRef<U>, U: ?Sized> Blanket<&dyn AsRef<U>> for T {
[INFO] [stdout]     |                                           +++
[INFO] [stdout] 
[INFO] [stdout] error[E0119]: conflicting implementations of trait `Blanket<&dyn ToString>`
[INFO] [stdout]    --> src/ch02/s5_trait_and_generic.rs:712:5
[INFO] [stdout]     |
[INFO] [stdout] 685 |     impl<T: ToString> Blanket<&ToString> for T {
[INFO] [stdout]     |     ------------------------------------------ first implementation here
[INFO] [stdout] ...
[INFO] [stdout] 712 |     impl<T: ToString> Blanket<&ToString> for T {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ conflicting implementation
[INFO] [stdout] 
[INFO] [stdout] error: aborting due to 7 previous errors
[INFO] [stdout] 
[INFO] [stdout] Some errors have detailed explanations: E0119, E0405.
[INFO] [stdout] For more information about an error, try `rustc --explain E0119`.
[INFO] [stdout] Couldn't compile the test.
[INFO] [stdout] ---- src/ch02/s5_trait_and_generic.rs - ch02::s5_trait_and_generic::trait_object (line 193) stdout ----
[INFO] [stdout] error: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/ch02/s5_trait_and_generic.rs:195:27
[INFO] [stdout]     |
[INFO] [stdout] 195 |         subjects: Vec<Box<Mammal>>,
[INFO] [stdout]     |                           ^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2018) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] note: the lint level is defined here
[INFO] [stdout]    --> src/ch02/s5_trait_and_generic.rs:191:9
[INFO] [stdout]     |
[INFO] [stdout] 191 | #![deny(warnings)]
[INFO] [stdout]     |         ^^^^^^^^
[INFO] [stdout]     = note: `#[deny(bare_trait_objects)]` implied by `#[deny(warnings)]`
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]     |
[INFO] [stdout] 195 |         subjects: Vec<Box<dyn Mammal>>,
[INFO] [stdout]     |                           +++
[INFO] [stdout] 
[INFO] [stdout] error: aborting due to 1 previous error
[INFO] [stdout] 
[INFO] [stdout] Couldn't compile the test.
[INFO] [stdout] ---- src/ch02/s5_trait_and_generic.rs - ch02::s5_trait_and_generic::trait_object (line 337) stdout ----
[INFO] [stdout] error: unknown start of token: \u{ff1a}
[INFO] [stdout]    --> src/ch02/s5_trait_and_generic.rs:338:3
[INFO] [stdout]     |
[INFO] [stdout] 338 | 假设：trait 继承(`trait MammalClone: Mammal+Clone`)布局图：
[INFO] [stdout]     |     ^^
[INFO] [stdout]     |
[INFO] [stdout] help: Unicode character '：' (Fullwidth Colon) looks like ':' (Colon), but it is not
[INFO] [stdout]     |
[INFO] [stdout] 338 - 假设：trait 继承(`trait MammalClone: Mammal+Clone`)布局图：
[INFO] [stdout] 338 + 假设:trait 继承(`trait MammalClone: Mammal+Clone`)布局图：
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] error: unknown start of token: `
[INFO] [stdout]    --> src/ch02/s5_trait_and_generic.rs:338:13
[INFO] [stdout]     |
[INFO] [stdout] 338 | 假设：trait 继承(`trait MammalClone: Mammal+Clone`)布局图：
[INFO] [stdout]     |                  ^
[INFO] [stdout]     |
[INFO] [stdout] help: Unicode character '`' (Grave Accent) looks like ''' (Single Quote), but it is not
[INFO] [stdout]     |
[INFO] [stdout] 338 - 假设：trait 继承(`trait MammalClone: Mammal+Clone`)布局图：
[INFO] [stdout] 338 + 假设：trait 继承('trait MammalClone: Mammal+Clone`)布局图：
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] error: unknown start of token: `
[INFO] [stdout]    --> src/ch02/s5_trait_and_generic.rs:338:45
[INFO] [stdout]     |
[INFO] [stdout] 338 | 假设：trait 继承(`trait MammalClone: Mammal+Clone`)布局图：
[INFO] [stdout]     |                                                  ^
[INFO] [stdout]     |
[INFO] [stdout] help: Unicode character '`' (Grave Accent) looks like ''' (Single Quote), but it is not
[INFO] [stdout]     |
[INFO] [stdout] 338 - 假设：trait 继承(`trait MammalClone: Mammal+Clone`)布局图：
[INFO] [stdout] 338 + 假设：trait 继承(`trait MammalClone: Mammal+Clone')布局图：
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] error: unknown start of token: \u{ff1a}
[INFO] [stdout]    --> src/ch02/s5_trait_and_generic.rs:338:50
[INFO] [stdout]     |
[INFO] [stdout] 338 | 假设：trait 继承(`trait MammalClone: Mammal+Clone`)布局图：
[INFO] [stdout]     |                                                          ^^
[INFO] [stdout]     |
[INFO] [stdout] help: Unicode character '：' (Fullwidth Colon) looks like ':' (Colon), but it is not
[INFO] [stdout]     |
[INFO] [stdout] 338 - 假设：trait 继承(`trait MammalClone: Mammal+Clone`)布局图：
[INFO] [stdout] 338 + 假设：trait 继承(`trait MammalClone: Mammal+Clone`)布局图:
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] error: unknown start of token: \u{ff1a}
[INFO] [stdout]    --> src/ch02/s5_trait_and_generic.rs:340:3
[INFO] [stdout]     |
[INFO] [stdout] 340 | 注意：非法
[INFO] [stdout]     |     ^^
[INFO] [stdout]     |
[INFO] [stdout] help: Unicode character '：' (Fullwidth Colon) looks like ':' (Colon), but it is not
[INFO] [stdout]     |
[INFO] [stdout] 340 - 注意：非法
[INFO] [stdout] 340 + 注意:非法
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] error: expected one of `!` or `::`, found `:`
[INFO] [stdout]    --> src/ch02/s5_trait_and_generic.rs:338:3
[INFO] [stdout]     |
[INFO] [stdout] 338 | 假设：trait 继承(`trait MammalClone: Mammal+Clone`)布局图：
[INFO] [stdout]     |     ^^ expected one of `!` or `::`
[INFO] [stdout] 
[INFO] [stdout] error: aborting due to 6 previous errors
[INFO] [stdout] 
[INFO] [stdout] Couldn't compile the test.
[INFO] [stdout] ---- src/ch02/s5_trait_and_generic.rs - ch02::s5_trait_and_generic::trait_concept (line 78) stdout ----
[INFO] [stdout] error[E0597]: `value` does not live long enough
[INFO] [stdout]   --> src/ch02/s5_trait_and_generic.rs:90:16
[INFO] [stdout]    |
[INFO] [stdout] 89 |     let value = "value".to_string();
[INFO] [stdout]    |         ----- binding `value` declared here
[INFO] [stdout] 90 |     make_debug(&value)
[INFO] [stdout]    |     -----------^^^^^^-
[INFO] [stdout]    |     |          |
[INFO] [stdout]    |     |          borrowed value does not live long enough
[INFO] [stdout]    |     argument requires that `value` is borrowed for `'static`
[INFO] [stdout] 91 | }
[INFO] [stdout]    | - `value` dropped here while still borrowed
[INFO] [stdout] 
[INFO] [stdout] error: aborting due to 1 previous error
[INFO] [stdout] 
[INFO] [stdout] For more information about this error, try `rustc --explain E0597`.
[INFO] [stdout] Couldn't compile the test.
[INFO] [stdout] ---- src/ch02/s5_trait_and_generic.rs - ch02::s5_trait_and_generic::trait_object (line 224) stdout ----
[INFO] [stdout] error[E0432]: unresolved import `std::raw`
[INFO] [stdout]    --> src/ch02/s5_trait_and_generic.rs:232:16
[INFO] [stdout]     |
[INFO] [stdout] 232 | use std::{mem, raw};
[INFO] [stdout]     |                ^^^ no `raw` in the root
[INFO] [stdout]     |
[INFO] [stdout]     = help: consider importing one of these modules instead:
[INFO] [stdout]             std::os::linux::raw
[INFO] [stdout]             std::os::raw
[INFO] [stdout]             std::os::unix::raw
[INFO] [stdout] 
[INFO] [stdout] error[E0635]: unknown feature `raw`
[INFO] [stdout]    --> src/ch02/s5_trait_and_generic.rs:226:16
[INFO] [stdout]     |
[INFO] [stdout] 226 |     #![feature(raw)]
[INFO] [stdout]     |                ^^^
[INFO] [stdout] 
[INFO] [stdout] error: aborting due to 2 previous errors
[INFO] [stdout] 
[INFO] [stdout] Some errors have detailed explanations: E0432, E0635.
[INFO] [stdout] For more information about an error, try `rustc --explain E0432`.
[INFO] [stdout] Couldn't compile the test.
[INFO] [stdout] ---- src/ch02/s5_trait_and_generic.rs - ch02::s5_trait_and_generic::trait_self_sized_bound (line 741) stdout ----
[INFO] [stdout] error: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/ch02/s5_trait_and_generic.rs:770:14
[INFO] [stdout]     |
[INFO] [stdout] 770 |     let a : &WithConstructor = &A ;
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2018) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] note: the lint level is defined here
[INFO] [stdout]    --> src/ch02/s5_trait_and_generic.rs:740:9
[INFO] [stdout]     |
[INFO] [stdout] 740 | #![deny(warnings)]
[INFO] [stdout]     |         ^^^^^^^^
[INFO] [stdout]     = note: `#[deny(bare_trait_objects)]` implied by `#[deny(warnings)]`
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]     |
[INFO] [stdout] 770 |     let a : &dyn WithConstructor = &A ;
[INFO] [stdout]     |              +++
[INFO] [stdout] 
[INFO] [stdout] error: aborting due to 1 previous error
[INFO] [stdout] 
[INFO] [stdout] Couldn't compile the test.
[INFO] [stdout] ---- src/ch02/s6_paradigms.rs - ch02::s6_paradigms::compiler_oriented_programming (line 21) stdout ----
[INFO] [stdout] error: expected one of `!` or `::`, found `Foo`
[INFO] [stdout]   --> src/ch02/s6_paradigms.rs:22:11
[INFO] [stdout]    |
[INFO] [stdout] 22 | interface Foo {}
[INFO] [stdout]    |           ^^^ expected one of `!` or `::`
[INFO] [stdout] 
[INFO] [stdout] error: aborting due to 1 previous error
[INFO] [stdout] 
[INFO] [stdout] Couldn't compile the test.
[INFO] [stdout] ---- src/ch02/s5_trait_and_generic.rs - ch02::s5_trait_and_generic::trait_object_to_enum (line 530) stdout ----
[INFO] [stdout] error[E0425]: cannot find type `LinearKnob` in this scope
[INFO] [stdout]    --> src/ch02/s5_trait_and_generic.rs:532:16
[INFO] [stdout]     |
[INFO] [stdout] 532 |         Linear(LinearKnob),
[INFO] [stdout]     |                ^^^^^^^^^^ not found in this scope
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find type `LogarithmicKnob` in this scope
[INFO] [stdout]    --> src/ch02/s5_trait_and_generic.rs:533:21
[INFO] [stdout]     |
[INFO] [stdout] 533 |         Logarithmic(LogarithmicKnob),
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^ not found in this scope
[INFO] [stdout] 
[INFO] [stdout] error[E0405]: cannot find trait `KnobControl` in this scope
[INFO] [stdout]    --> src/ch02/s5_trait_and_generic.rs:536:10
[INFO] [stdout]     |
[INFO] [stdout] 536 |     impl KnobControl for Knob {
[INFO] [stdout]     |          ^^^^^^^^^^^ not found in this scope
[INFO] [stdout] 
[INFO] [stdout] error: aborting due to 3 previous errors
[INFO] [stdout] 
[INFO] [stdout] Some errors have detailed explanations: E0405, E0425.
[INFO] [stdout] For more information about an error, try `rustc --explain E0405`.
[INFO] [stdout] Couldn't compile the test.
[INFO] [stdout] ---- src/ch02/s7_error_handle.rs - ch02::s7_error_handle::elim_failure (line 17) stdout ----
[INFO] [stdout] error[E0308]: arguments to this function are incorrect
[INFO] [stdout]   --> src/ch02/s7_error_handle.rs:22:5
[INFO] [stdout]    |
[INFO] [stdout] 22 |     sum(1u32, 2u32); // 违反契约，报错
[INFO] [stdout]    |     ^^^ ----  ---- expected `i32`, found `u32`
[INFO] [stdout]    |         |
[INFO] [stdout]    |         expected `i32`, found `u32`
[INFO] [stdout]    |
[INFO] [stdout] note: function defined here
[INFO] [stdout]   --> src/ch02/s7_error_handle.rs:18:4
[INFO] [stdout]    |
[INFO] [stdout] 18 | fn sum(a: i32, b: i32) -> i32 {
[INFO] [stdout]    |    ^^^ ------  ------
[INFO] [stdout] help: change the type of the numeric literal from `u32` to `i32`
[INFO] [stdout]    |
[INFO] [stdout] 22 -     sum(1u32, 2u32); // 违反契约，报错
[INFO] [stdout] 22 +     sum(1i32, 2u32); // 违反契约，报错
[INFO] [stdout]    |
[INFO] [stdout] help: change the type of the numeric literal from `u32` to `i32`
[INFO] [stdout]    |
[INFO] [stdout] 22 -     sum(1u32, 2u32); // 违反契约，报错
[INFO] [stdout] 22 +     sum(1u32, 2i32); // 违反契约，报错
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] error: aborting due to 1 previous error
[INFO] [stdout] 
[INFO] [stdout] For more information about this error, try `rustc --explain E0308`.
[INFO] [stdout] Couldn't compile the test.
[INFO] [stdout] ---- src/ch02/s5_trait_and_generic.rs - ch02::s5_trait_and_generic::trait_self_sized_bound (line 835) stdout ----
[INFO] [stdout] error: this relaxed bound is not permitted here
[INFO] [stdout]    --> src/ch02/s5_trait_and_generic.rs:837:48
[INFO] [stdout]     |
[INFO] [stdout] 837 |     fn build(param: usize) -> Self where Self: ?Sized;
[INFO] [stdout]     |                                                ^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: in this context, relaxed bounds are only allowed on type parameters defined on the closest item
[INFO] [stdout] 
[INFO] [stdout] error: this relaxed bound is not permitted here
[INFO] [stdout]    --> src/ch02/s5_trait_and_generic.rs:839:34
[INFO] [stdout]     |
[INFO] [stdout] 839 |     fn new() -> Self where Self: ?Sized {
[INFO] [stdout]     |                                  ^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: in this context, relaxed bounds are only allowed on type parameters defined on the closest item
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the size for values of type `Self` cannot be known at compilation time
[INFO] [stdout]    --> src/ch02/s5_trait_and_generic.rs:839:17
[INFO] [stdout]     |
[INFO] [stdout] 839 |     fn new() -> Self where Self: ?Sized {
[INFO] [stdout]     |                 ^^^^ doesn't have a size known at compile-time
[INFO] [stdout]     |
[INFO] [stdout]     = note: the return type of a function must have a statically known size
[INFO] [stdout] help: consider further restricting `Self`
[INFO] [stdout]     |
[INFO] [stdout] 839 |     fn new() -> Self where Self: ?Sized, Self: Sized {
[INFO] [stdout]     |                                        +++++++++++++
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the size for values of type `Self` cannot be known at compilation time
[INFO] [stdout]    --> src/ch02/s5_trait_and_generic.rs:840:9
[INFO] [stdout]     |
[INFO] [stdout] 840 |         Self::build(0)
[INFO] [stdout]     |         ^^^^^^^^^^^^^^ doesn't have a size known at compile-time
[INFO] [stdout]     |
[INFO] [stdout]     = note: the return type of a function must have a statically known size
[INFO] [stdout] help: consider further restricting `Self`
[INFO] [stdout]     |
[INFO] [stdout] 839 |     fn new() -> Self where Self: ?Sized, Self: Sized {
[INFO] [stdout]     |                                        +++++++++++++
[INFO] [stdout] 
[INFO] [stdout] error: aborting due to 4 previous errors
[INFO] [stdout] 
[INFO] [stdout] For more information about this error, try `rustc --explain E0277`.
[INFO] [stdout] Couldn't compile the test.
[INFO] [stdout] ---- src/ch02/s6_paradigms.rs - ch02::s6_paradigms::compiler_oriented_programming (line 28) stdout ----
[INFO] [stdout] error: expected `{}`, found `;`
[INFO] [stdout]   --> src/ch02/s6_paradigms.rs:31:9
[INFO] [stdout]    |
[INFO] [stdout] 31 | impl Bar;
[INFO] [stdout]    |         ^
[INFO] [stdout]    |
[INFO] [stdout]    = help: try using `{}` instead
[INFO] [stdout] 
[INFO] [stdout] error: aborting due to 1 previous error
[INFO] [stdout] 
[INFO] [stdout] Couldn't compile the test.
[INFO] [stdout] ---- src/ch02/s7_error_handle.rs - ch02::s7_error_handle::elim_failure (line 28) stdout ----
[INFO] [stdout] Test executable failed (exit status: 101).
[INFO] [stdout] 
[INFO] [stdout] stderr:
[INFO] [stdout] 
[INFO] [stdout] thread 'main' (1530) panicked at src/ch02/s7_error_handle.rs:4:5:
[INFO] [stdout] assertion failed: v.len() == 5
[INFO] [stdout] stack backtrace:
[INFO] [stdout]    0:     0x5b74c2a11982 - std[840933623431fd06]::backtrace_rs::backtrace::libunwind::trace
[INFO] [stdout]                                at /rustc/bd7d74411512a3dd3b35d2f699c51dd2557c7e7e/library/std/src/../../backtrace/src/backtrace/libunwind.rs:117:9
[INFO] [stdout]    1:     0x5b74c2a11982 - std[840933623431fd06]::backtrace_rs::backtrace::trace_unsynchronized::<std[840933623431fd06]::sys::backtrace::_print_fmt::{closure#1}>
[INFO] [stdout]                                at /rustc/bd7d74411512a3dd3b35d2f699c51dd2557c7e7e/library/std/src/../../backtrace/src/backtrace/mod.rs:66:14
[INFO] [stdout]    2:     0x5b74c2a11982 - std[840933623431fd06]::sys::backtrace::_print_fmt
[INFO] [stdout]                                at /rustc/bd7d74411512a3dd3b35d2f699c51dd2557c7e7e/library/std/src/sys/backtrace.rs:74:9
[INFO] [stdout]    3:     0x5b74c2a11982 - <<std[840933623431fd06]::sys::backtrace::BacktraceLock>::print::DisplayBacktrace as core[8f93d80df273fe75]::fmt::Display>::fmt
[INFO] [stdout]                                at /rustc/bd7d74411512a3dd3b35d2f699c51dd2557c7e7e/library/std/src/sys/backtrace.rs:44:26
[INFO] [stdout]    4:     0x5b74c2a2229a - <core[8f93d80df273fe75]::fmt::rt::Argument>::fmt
[INFO] [stdout]                                at /rustc/bd7d74411512a3dd3b35d2f699c51dd2557c7e7e/library/core/src/fmt/rt.rs:152:76
[INFO] [stdout]    5:     0x5b74c2a2229a - core[8f93d80df273fe75]::fmt::write
[INFO] [stdout]    6:     0x5b74c2a154d6 - std[840933623431fd06]::io::default_write_fmt::<std[840933623431fd06]::sys::stdio::unix::Stderr>
[INFO] [stdout]                                at /rustc/bd7d74411512a3dd3b35d2f699c51dd2557c7e7e/library/std/src/io/mod.rs:639:11
[INFO] [stdout]    7:     0x5b74c2a154d6 - <std[840933623431fd06]::sys::stdio::unix::Stderr as std[840933623431fd06]::io::Write>::write_fmt
[INFO] [stdout]                                at /rustc/bd7d74411512a3dd3b35d2f699c51dd2557c7e7e/library/std/src/io/mod.rs:1994:13
[INFO] [stdout]    8:     0x5b74c29fcd5f - <std[840933623431fd06]::sys::backtrace::BacktraceLock>::print
[INFO] [stdout]                                at /rustc/bd7d74411512a3dd3b35d2f699c51dd2557c7e7e/library/std/src/sys/backtrace.rs:47:9
[INFO] [stdout]    9:     0x5b74c29fcd5f - std[840933623431fd06]::panicking::default_hook::{closure#0}
[INFO] [stdout]                                at /rustc/bd7d74411512a3dd3b35d2f699c51dd2557c7e7e/library/std/src/panicking.rs:292:27
[INFO] [stdout]   10:     0x5b74c2a0de91 - std[840933623431fd06]::panicking::default_hook
[INFO] [stdout]                                at /rustc/bd7d74411512a3dd3b35d2f699c51dd2557c7e7e/library/std/src/panicking.rs:319:9
[INFO] [stdout]   11:     0x5b74c2a0e04b - std[840933623431fd06]::panicking::panic_with_hook
[INFO] [stdout]                                at /rustc/bd7d74411512a3dd3b35d2f699c51dd2557c7e7e/library/std/src/panicking.rs:825:13
[INFO] [stdout]   12:     0x5b74c29fce4a - std[840933623431fd06]::panicking::panic_handler::{closure#0}
[INFO] [stdout]                                at /rustc/bd7d74411512a3dd3b35d2f699c51dd2557c7e7e/library/std/src/panicking.rs:691:13
[INFO] [stdout]   13:     0x5b74c29f4b19 - std[840933623431fd06]::sys::backtrace::__rust_end_short_backtrace::<std[840933623431fd06]::panicking::panic_handler::{closure#0}, !>
[INFO] [stdout]                                at /rustc/bd7d74411512a3dd3b35d2f699c51dd2557c7e7e/library/std/src/sys/backtrace.rs:182:18
[INFO] [stdout]   14:     0x5b74c29fd63d - __rustc[5b4a0c6d8cc4a177]::rust_begin_unwind
[INFO] [stdout]                                at /rustc/bd7d74411512a3dd3b35d2f699c51dd2557c7e7e/library/std/src/panicking.rs:689:5
[INFO] [stdout]   15:     0x5b74c2a2292c - core[8f93d80df273fe75]::panicking::panic_fmt
[INFO] [stdout]                                at /rustc/bd7d74411512a3dd3b35d2f699c51dd2557c7e7e/library/core/src/panicking.rs:80:14
[INFO] [stdout]   16:     0x5b74c2a228f2 - core[8f93d80df273fe75]::panicking::panic
[INFO] [stdout]                                at /rustc/bd7d74411512a3dd3b35d2f699c51dd2557c7e7e/library/core/src/panicking.rs:150:5
[INFO] [stdout]   17:     0x5b74c29e6ae4 - rust_out[c8cdd22bfd421af4]::extend_vec
[INFO] [stdout]   18:     0x5b74c29e6b79 - rust_out[c8cdd22bfd421af4]::main
[INFO] [stdout]   19:     0x5b74c29e70c3 - <fn() as core[8f93d80df273fe75]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]   20:     0x5b74c29e6a66 - std[840933623431fd06]::sys::backtrace::__rust_begin_short_backtrace::<fn(), ()>
[INFO] [stdout]   21:     0x5b74c29e6a79 - std[840933623431fd06]::rt::lang_start::<()>::{closure#0}
[INFO] [stdout]   22:     0x5b74c2a0d486 - <&dyn core[8f93d80df273fe75]::ops::function::Fn<(), Output = i32> + core[8f93d80df273fe75]::panic::unwind_safe::RefUnwindSafe + core[8f93d80df273fe75]::marker::Sync as core[8f93d80df273fe75]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/bd7d74411512a3dd3b35d2f699c51dd2557c7e7e/library/core/src/ops/function.rs:287:21
[INFO] [stdout]   23:     0x5b74c2a0d486 - std[840933623431fd06]::panicking::catch_unwind::do_call::<&dyn core[8f93d80df273fe75]::ops::function::Fn<(), Output = i32> + core[8f93d80df273fe75]::panic::unwind_safe::RefUnwindSafe + core[8f93d80df273fe75]::marker::Sync, i32>
[INFO] [stdout]                                at /rustc/bd7d74411512a3dd3b35d2f699c51dd2557c7e7e/library/std/src/panicking.rs:581:40
[INFO] [stdout]   24:     0x5b74c2a0d486 - std[840933623431fd06]::panicking::catch_unwind::<i32, &dyn core[8f93d80df273fe75]::ops::function::Fn<(), Output = i32> + core[8f93d80df273fe75]::panic::unwind_safe::RefUnwindSafe + core[8f93d80df273fe75]::marker::Sync>
[INFO] [stdout]                                at /rustc/bd7d74411512a3dd3b35d2f699c51dd2557c7e7e/library/std/src/panicking.rs:544:19
[INFO] [stdout]   25:     0x5b74c2a0d486 - std[840933623431fd06]::panic::catch_unwind::<&dyn core[8f93d80df273fe75]::ops::function::Fn<(), Output = i32> + core[8f93d80df273fe75]::panic::unwind_safe::RefUnwindSafe + core[8f93d80df273fe75]::marker::Sync, i32>
[INFO] [stdout]                                at /rustc/bd7d74411512a3dd3b35d2f699c51dd2557c7e7e/library/std/src/panic.rs:359:14
[INFO] [stdout]   26:     0x5b74c2a0d486 - std[840933623431fd06]::rt::lang_start_internal::{closure#0}
[INFO] [stdout]                                at /rustc/bd7d74411512a3dd3b35d2f699c51dd2557c7e7e/library/std/src/rt.rs:175:24
[INFO] [stdout]   27:     0x5b74c2a0d486 - std[840933623431fd06]::panicking::catch_unwind::do_call::<std[840933623431fd06]::rt::lang_start_internal::{closure#0}, isize>
[INFO] [stdout]                                at /rustc/bd7d74411512a3dd3b35d2f699c51dd2557c7e7e/library/std/src/panicking.rs:581:40
[INFO] [stdout]   28:     0x5b74c2a0d486 - std[840933623431fd06]::panicking::catch_unwind::<isize, std[840933623431fd06]::rt::lang_start_internal::{closure#0}>
[INFO] [stdout]                                at /rustc/bd7d74411512a3dd3b35d2f699c51dd2557c7e7e/library/std/src/panicking.rs:544:19
[INFO] [stdout]   29:     0x5b74c2a0d486 - std[840933623431fd06]::panic::catch_unwind::<std[840933623431fd06]::rt::lang_start_internal::{closure#0}, isize>
[INFO] [stdout]                                at /rustc/bd7d74411512a3dd3b35d2f699c51dd2557c7e7e/library/std/src/panic.rs:359:14
[INFO] [stdout]   30:     0x5b74c2a0d486 - std[840933623431fd06]::rt::lang_start_internal
[INFO] [stdout]                                at /rustc/bd7d74411512a3dd3b35d2f699c51dd2557c7e7e/library/std/src/rt.rs:171:5
[INFO] [stdout]   31:     0x5b74c29e69f1 - std[840933623431fd06]::rt::lang_start::<()>
[INFO] [stdout]   32:     0x5b74c29e7125 - main
[INFO] [stdout]   33:     0x784d1ceac1ca - <unknown>
[INFO] [stdout]   34:     0x784d1ceac28b - __libc_start_main
[INFO] [stdout]   35:     0x5b74c29e6895 - _start
[INFO] [stdout]   36:                0x0 - <unknown>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] ---- src/ch02/s6_paradigms.rs - ch02::s6_paradigms::compiler_oriented_programming (line 140) stdout ----
[INFO] [stdout] error[E0425]: cannot find type `UnsafeCell` in this scope
[INFO] [stdout]    --> src/ch02/s6_paradigms.rs:144:12
[INFO] [stdout]     |
[INFO] [stdout] 144 |     value: UnsafeCell<T>,
[INFO] [stdout]     |            ^^^^^^^^^^ not found in this scope
[INFO] [stdout]     |
[INFO] [stdout] help: consider importing this struct
[INFO] [stdout]     |
[INFO] [stdout] 140 + use std::cell::UnsafeCell;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] error[E0433]: failed to resolve: use of undeclared type `UnsafeCell`
[INFO] [stdout]    --> src/ch02/s6_paradigms.rs:166:23
[INFO] [stdout]     |
[INFO] [stdout] 166 |         Cell { value: UnsafeCell::new(value) }
[INFO] [stdout]     |                       ^^^^^^^^^^ use of undeclared type `UnsafeCell`
[INFO] [stdout]     |
[INFO] [stdout] help: consider importing this struct
[INFO] [stdout]     |
[INFO] [stdout] 140 + use std::cell::UnsafeCell;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] error[E0658]: negative trait bounds are not fully implemented; use marker types for now
[INFO] [stdout]    --> src/ch02/s6_paradigms.rs:151:17
[INFO] [stdout]     |
[INFO] [stdout] 151 | impl<T: ?Sized> !Sync for Cell<T> {}
[INFO] [stdout]     |                 ^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: see issue #68318 <https://github.com/rust-lang/rust/issues/68318> for more information
[INFO] [stdout]     = help: add `#![feature(negative_impls)]` to the crate attributes to enable
[INFO] [stdout]     = note: this compiler was built on 2026-01-14; consider upgrading it if it is out of date
[INFO] [stdout] 
[INFO] [stdout] error[E0734]: stability attributes may not be used outside of the standard library
[INFO] [stdout]    --> src/ch02/s6_paradigms.rs:141:1
[INFO] [stdout]     |
[INFO] [stdout] 141 | #[stable(feature = "rust1", since = "1.0.0")]
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] error[E0734]: stability attributes may not be used outside of the standard library
[INFO] [stdout]    --> src/ch02/s6_paradigms.rs:147:1
[INFO] [stdout]     |
[INFO] [stdout] 147 | #[stable(feature = "rust1", since = "1.0.0")]
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] error[E0734]: stability attributes may not be used outside of the standard library
[INFO] [stdout]    --> src/ch02/s6_paradigms.rs:150:1
[INFO] [stdout]     |
[INFO] [stdout] 150 | #[stable(feature = "rust1", since = "1.0.0")]
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] error[E0734]: stability attributes may not be used outside of the standard library
[INFO] [stdout]    --> src/ch02/s6_paradigms.rs:153:1
[INFO] [stdout]     |
[INFO] [stdout] 153 | #[stable(feature = "rust1", since = "1.0.0")]
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] error[E0734]: stability attributes may not be used outside of the standard library
[INFO] [stdout]    --> src/ch02/s6_paradigms.rs:184:5
[INFO] [stdout]     |
[INFO] [stdout] 184 |     #[stable(feature = "move_cell", since = "1.17.0")]
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: can't compare `_doctest_main_src_ch02_s6_paradigms_rs_140_0::Cell<T>` with `_doctest_main_src_ch02_s6_paradigms_rs_140_0::Cell<T>`
[INFO] [stdout]    --> src/ch02/s6_paradigms.rs:161:27
[INFO] [stdout]     |
[INFO] [stdout] 161 | impl<T: Eq + Copy> Eq for Cell<T> {}
[INFO] [stdout]     |                           ^^^^^^^ no implementation for `_doctest_main_src_ch02_s6_paradigms_rs_140_0::Cell<T> == _doctest_main_src_ch02_s6_paradigms_rs_140_0::Cell<T>`
[INFO] [stdout]     |
[INFO] [stdout]     = help: the trait `PartialEq` is not implemented for `_doctest_main_src_ch02_s6_paradigms_rs_140_0::Cell<T>`
[INFO] [stdout] note: required by a bound in `Eq`
[INFO] [stdout]    --> /rustc/bd7d74411512a3dd3b35d2f699c51dd2557c7e7e/library/core/src/cmp.rs:338:0
[INFO] [stdout] help: consider annotating `_doctest_main_src_ch02_s6_paradigms_rs_140_0::Cell<T>` with `#[derive(PartialEq)]`
[INFO] [stdout]     |
[INFO] [stdout] 143 + #[derive(PartialEq)]
[INFO] [stdout] 144 | pub struct Cell<T: ?Sized> {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] error[E0283]: type annotations needed
[INFO] [stdout]    --> src/ch02/s6_paradigms.rs:157:9
[INFO] [stdout]     |
[INFO] [stdout] 157 |         Cell::new(self.get())
[INFO] [stdout]     |         ^^^^^^^^^ ---- --- required by a bound introduced by this call
[INFO] [stdout]     |         |         |
[INFO] [stdout]     |         |         type must be known at this point
[INFO] [stdout]     |         cannot infer type of the type parameter `T` declared on the struct `Cell`
[INFO] [stdout]     |
[INFO] [stdout]     = note: cannot satisfy `_: Copy`
[INFO] [stdout] note: required by a bound in `_doctest_main_src_ch02_s6_paradigms_rs_140_0::Cell::<T>::get`
[INFO] [stdout]    --> src/ch02/s6_paradigms.rs:175:9
[INFO] [stdout]     |
[INFO] [stdout] 175 | impl<T: Copy> Cell<T> {
[INFO] [stdout]     |         ^^^^ required by this bound in `Cell::<T>::get`
[INFO] [stdout] 176 |     pub fn get(&self) -> T {
[INFO] [stdout]     |            --- required by a bound in this associated function
[INFO] [stdout] help: consider specifying the generic argument
[INFO] [stdout]     |
[INFO] [stdout] 157 |         Cell::<T>::new(self.get())
[INFO] [stdout]     |             +++++
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no method named `replace` found for reference `&_doctest_main_src_ch02_s6_paradigms_rs_140_0::Cell<T>` in the current scope
[INFO] [stdout]    --> src/ch02/s6_paradigms.rs:170:24
[INFO] [stdout]     |
[INFO] [stdout] 170 |         let old = self.replace(val);
[INFO] [stdout]     |                        ^^^^^^^ method not found in `&_doctest_main_src_ch02_s6_paradigms_rs_140_0::Cell<T>`
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no method named `replace` found for reference `&_doctest_main_src_ch02_s6_paradigms_rs_140_0::Cell<T>` in the current scope
[INFO] [stdout]    --> src/ch02/s6_paradigms.rs:186:14
[INFO] [stdout]     |
[INFO] [stdout] 186 |         self.replace(Default::default())
[INFO] [stdout]     |              ^^^^^^^ method not found in `&_doctest_main_src_ch02_s6_paradigms_rs_140_0::Cell<T>`
[INFO] [stdout] 
[INFO] [stdout] error: aborting due to 12 previous errors
[INFO] [stdout] 
[INFO] [stdout] Some errors have detailed explanations: E0277, E0283, E0425, E0433, E0599, E0658, E0734.
[INFO] [stdout] For more information about an error, try `rustc --explain E0277`.
[INFO] [stdout] Couldn't compile the test.
[INFO] [stdout] ---- src/ch02/s6_paradigms.rs - ch02::s6_paradigms::compiler_oriented_programming (line 43) stdout ----
[INFO] [stdout] Test executable failed (signal: 6 (SIGABRT) (core dumped)).
[INFO] [stdout] 
[INFO] [stdout] stderr:
[INFO] [stdout] 
[INFO] [stdout] thread 'main' (1517) has overflowed its stack
[INFO] [stdout] fatal runtime error: stack overflow, aborting
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] ---- src/ch02/s8_metaprogramming.rs - ch02::s8_metaprogramming::any_refection (line 75) stdout ----
[INFO] [stdout] error: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/ch02/s8_metaprogramming.rs:81:23
[INFO] [stdout]    |
[INFO] [stdout] 81 |         let mut any: &Any;
[INFO] [stdout]    |                       ^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2018) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] note: the lint level is defined here
[INFO] [stdout]   --> src/ch02/s8_metaprogramming.rs:74:9
[INFO] [stdout]    |
[INFO] [stdout] 74 | #![deny(warnings)]
[INFO] [stdout]    |         ^^^^^^^^
[INFO] [stdout]    = note: `#[deny(bare_trait_objects)]` implied by `#[deny(warnings)]`
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 81 |         let mut any: &dyn Any;
[INFO] [stdout]    |                       +++
[INFO] [stdout] 
[INFO] [stdout] error: aborting due to 1 previous error
[INFO] [stdout] 
[INFO] [stdout] Couldn't compile the test.
[INFO] [stdout] ---- src/ch02/s8_metaprogramming.rs - ch02::s8_metaprogramming::any_refection (line 31) stdout ----
[INFO] [stdout] error: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/ch02/s8_metaprogramming.rs:39:26
[INFO] [stdout]    |
[INFO] [stdout] 39 |     fn as_any(&self) -> &Any {
[INFO] [stdout]    |                          ^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2018) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] note: the lint level is defined here
[INFO] [stdout]   --> src/ch02/s8_metaprogramming.rs:30:9
[INFO] [stdout]    |
[INFO] [stdout] 30 | #![deny(warnings)]
[INFO] [stdout]    |         ^^^^^^^^
[INFO] [stdout]    = note: `#[deny(bare_trait_objects)]` implied by `#[deny(warnings)]`
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 39 |     fn as_any(&self) -> &dyn Any {
[INFO] [stdout]    |                          +++
[INFO] [stdout] 
[INFO] [stdout] error: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/ch02/s8_metaprogramming.rs:35:26
[INFO] [stdout]    |
[INFO] [stdout] 35 |     fn as_any(&self) -> &Any;
[INFO] [stdout]    |                          ^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2018) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 35 |     fn as_any(&self) -> &dyn Any;
[INFO] [stdout]    |                          +++
[INFO] [stdout] 
[INFO] [stdout] error: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/ch02/s8_metaprogramming.rs:48:20
[INFO] [stdout]    |
[INFO] [stdout] 48 | impl PartialEq for Foo {
[INFO] [stdout]    |                    ^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2018) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 48 | impl PartialEq for dyn Foo {
[INFO] [stdout]    |                    +++
[INFO] [stdout] 
[INFO] [stdout] error: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/ch02/s8_metaprogramming.rs:49:26
[INFO] [stdout]    |
[INFO] [stdout] 49 |     fn eq(&self, other: &Foo) -> bool {
[INFO] [stdout]    |                          ^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2018) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 49 |     fn eq(&self, other: &dyn Foo) -> bool {
[INFO] [stdout]    |                          +++
[INFO] [stdout] 
[INFO] [stdout] error: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/ch02/s8_metaprogramming.rs:65:16
[INFO] [stdout]    |
[INFO] [stdout] 65 |     let foo1: &Foo = &bar;
[INFO] [stdout]    |                ^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2018) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 65 |     let foo1: &dyn Foo = &bar;
[INFO] [stdout]    |                +++
[INFO] [stdout] 
[INFO] [stdout] error: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/ch02/s8_metaprogramming.rs:66:16
[INFO] [stdout]    |
[INFO] [stdout] 66 |     let foo2: &Foo = &baz;
[INFO] [stdout]    |                ^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2018) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 66 |     let foo2: &dyn Foo = &baz;
[INFO] [stdout]    |                +++
[INFO] [stdout] 
[INFO] [stdout] error: aborting due to 6 previous errors
[INFO] [stdout] 
[INFO] [stdout] Couldn't compile the test.
[INFO] [stdout] ---- src/ch02/s8_metaprogramming.rs - ch02::s8_metaprogramming::any_refection (line 88) stdout ----
[INFO] [stdout] error: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/ch02/s8_metaprogramming.rs:94:17
[INFO] [stdout]    |
[INFO] [stdout] 94 |     let mut a: &Any;
[INFO] [stdout]    |                 ^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2018) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] note: the lint level is defined here
[INFO] [stdout]   --> src/ch02/s8_metaprogramming.rs:87:9
[INFO] [stdout]    |
[INFO] [stdout] 87 | #![deny(warnings)]
[INFO] [stdout]    |         ^^^^^^^^
[INFO] [stdout]    = note: `#[deny(bare_trait_objects)]` implied by `#[deny(warnings)]`
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 94 |     let mut a: &dyn Any;
[INFO] [stdout]    |                 +++
[INFO] [stdout] 
[INFO] [stdout] error: aborting due to 1 previous error
[INFO] [stdout] 
[INFO] [stdout] Couldn't compile the test.
[INFO] [stdout] ---- src/ch02/s7_error_handle.rs - ch02::s7_error_handle::error_handle (line 85) stdout ----
[INFO] [stdout] error[E0425]: cannot find function `get_shortest` in this scope
[INFO] [stdout]   --> src/ch02/s7_error_handle.rs:87:11
[INFO] [stdout]    |
[INFO] [stdout] 87 |     match get_shortest(names) {
[INFO] [stdout]    |           ^^^^^^^^^^^^ not found in this scope
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]   --> src/ch02/s7_error_handle.rs:88:32
[INFO] [stdout]    |
[INFO] [stdout] 88 |         Some(shortest) => Some(shortest.len()),
[INFO] [stdout]    |                                ^^^^^^^^ cannot infer type
[INFO] [stdout] 
[INFO] [stdout] error: aborting due to 2 previous errors
[INFO] [stdout] 
[INFO] [stdout] Some errors have detailed explanations: E0282, E0425.
[INFO] [stdout] For more information about an error, try `rustc --explain E0282`.
[INFO] [stdout] Couldn't compile the test.
[INFO] [stdout] ---- src/ch02/s8_metaprogramming.rs - ch02::s8_metaprogramming::declarative_macros (line 295) stdout ----
[INFO] [stdout] error[E0425]: cannot find value `a` in this scope
[INFO] [stdout]    --> src/ch02/s8_metaprogramming.rs:304:23
[INFO] [stdout]     |
[INFO] [stdout] 304 |       let four = sum!(a);
[INFO] [stdout]     |                       ^ not found in this scope
[INFO] [stdout]     |
[INFO] [stdout] help: an identifier with the same name is defined here, but is not accessible due to macro hygiene
[INFO] [stdout]    --> src/ch02/s8_metaprogramming.rs:298:15
[INFO] [stdout]     |
[INFO] [stdout] 298 |           let a = 2;
[INFO] [stdout]     |               ^
[INFO] [stdout] ...
[INFO] [stdout] 304 |       let four = sum!(a);
[INFO] [stdout]     |                  ------- in this macro invocation
[INFO] [stdout]     = note: this error originates in the macro `sum` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] error: aborting due to 1 previous error
[INFO] [stdout] 
[INFO] [stdout] For more information about this error, try `rustc --explain E0425`.
[INFO] [stdout] Couldn't compile the test.
[INFO] [stdout] ---- src/ch02/s9_unsafe_rust.rs - ch02::s9_unsafe_rust::security_abstract (line 120) stdout ----
[INFO] [stdout] error: `self` parameter is only allowed in associated functions
[INFO] [stdout]    --> src/ch02/s9_unsafe_rust.rs:121:15
[INFO] [stdout]     |
[INFO] [stdout] 121 | pub fn insert(&mut self, index: usize, element: T) {
[INFO] [stdout]     |               ^^^^^^^^^ not semantically valid as function parameter
[INFO] [stdout]     |
[INFO] [stdout]     = note: associated functions are those in `impl` or `trait` definitions
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find type `T` in this scope
[INFO] [stdout]    --> src/ch02/s9_unsafe_rust.rs:121:49
[INFO] [stdout]     |
[INFO] [stdout] 121 | pub fn insert(&mut self, index: usize, element: T) {
[INFO] [stdout]     |                                                 ^ not found in this scope
[INFO] [stdout]     |
[INFO] [stdout] help: you might be missing a type parameter
[INFO] [stdout]     |
[INFO] [stdout] 121 | pub fn insert<T>(&mut self, index: usize, element: T) {
[INFO] [stdout]     |              +++
[INFO] [stdout] 
[INFO] [stdout] error[E0433]: failed to resolve: use of unresolved module or unlinked crate `ptr`
[INFO] [stdout]    --> src/ch02/s9_unsafe_rust.rs:132:13
[INFO] [stdout]     |
[INFO] [stdout] 132 |             ptr::copy(p, p.offset(1), len - index);
[INFO] [stdout]     |             ^^^ use of unresolved module or unlinked crate `ptr`
[INFO] [stdout]     |
[INFO] [stdout]     = help: if you wanted to use a crate named `ptr`, use `cargo add ptr` to add it to your `Cargo.toml`
[INFO] [stdout] help: a builtin type with a similar name exists
[INFO] [stdout]     |
[INFO] [stdout] 132 -             ptr::copy(p, p.offset(1), len - index);
[INFO] [stdout] 132 +             str::copy(p, p.offset(1), len - index);
[INFO] [stdout]     |
[INFO] [stdout] help: consider importing this module
[INFO] [stdout]     |
[INFO] [stdout] 120 + use std::ptr;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] error[E0433]: failed to resolve: use of unresolved module or unlinked crate `ptr`
[INFO] [stdout]    --> src/ch02/s9_unsafe_rust.rs:133:13
[INFO] [stdout]     |
[INFO] [stdout] 133 |             ptr::write(p, element);
[INFO] [stdout]     |             ^^^ use of unresolved module or unlinked crate `ptr`
[INFO] [stdout]     |
[INFO] [stdout]     = help: if you wanted to use a crate named `ptr`, use `cargo add ptr` to add it to your `Cargo.toml`
[INFO] [stdout] help: a builtin type with a similar name exists
[INFO] [stdout]     |
[INFO] [stdout] 133 -             ptr::write(p, element);
[INFO] [stdout] 133 +             str::write(p, element);
[INFO] [stdout]     |
[INFO] [stdout] help: consider importing this module
[INFO] [stdout]     |
[INFO] [stdout] 120 + use std::ptr;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] error: aborting due to 4 previous errors
[INFO] [stdout] 
[INFO] [stdout] Some errors have detailed explanations: E0425, E0433.
[INFO] [stdout] For more information about an error, try `rustc --explain E0425`.
[INFO] [stdout] Couldn't compile the test.
[INFO] [stdout] ---- src/ch02/s9_unsafe_rust.rs - ch02::s9_unsafe_rust::security_abstract (line 502) stdout ----
[INFO] [stdout] error[E0597]: `val` does not live long enough
[INFO] [stdout]    --> src/ch02/s9_unsafe_rust.rs:524:11
[INFO] [stdout]     |
[INFO] [stdout] 522 | fn step1<'a>(r_c1: &MyCell<&'a i32>) {
[INFO] [stdout]     |          -- lifetime `'a` defined here
[INFO] [stdout] 523 |     let val: i32 = 13;
[INFO] [stdout]     |         --- binding `val` declared here
[INFO] [stdout] 524 |     step2(&val, r_c1); // error[E0597]: `val` does not live long enough
[INFO] [stdout]     |     ------^^^^-------
[INFO] [stdout]     |     |     |
[INFO] [stdout]     |     |     borrowed value does not live long enough
[INFO] [stdout]     |     argument requires that `val` is borrowed for `'a`
[INFO] [stdout] 525 |     println!("step1 value: {}", r_c1.value);
[INFO] [stdout] 526 | } // step1调用完，栈帧将被清理，val将不复存在，&val将成为悬垂指针
[INFO] [stdout]     | - `val` dropped here while still borrowed
[INFO] [stderr] error: doctest failed, to rerun pass `--doc`
[INFO] [stdout] 
[INFO] [stdout] error: aborting due to 1 previous error
[INFO] [stdout] 
[INFO] [stdout] For more information about this error, try `rustc --explain E0597`.
[INFO] [stdout] Couldn't compile the test.
[INFO] [stdout] ---- src/ch02/s9_unsafe_rust.rs - ch02::s9_unsafe_rust::security_abstract (line 541) stdout ----
[INFO] [stdout] error[E0597]: `s` does not live long enough
[INFO] [stdout]    --> src/ch02/s9_unsafe_rust.rs:561:12
[INFO] [stdout]     |
[INFO] [stdout] 560 |     let s = "hello".to_string();
[INFO] [stdout]     |         - binding `s` declared here
[INFO] [stdout] 561 |     B.foo2(&s)
[INFO] [stdout]     |     -------^^-
[INFO] [stdout]     |     |      |
[INFO] [stdout]     |     |      borrowed value does not live long enough
[INFO] [stdout]     |     argument requires that `s` is borrowed for `'static`
[INFO] [stdout] 562 | }
[INFO] [stdout]     | - `s` dropped here while still borrowed
[INFO] [stdout] 
[INFO] [stdout] error: aborting due to 1 previous error
[INFO] [stdout] 
[INFO] [stdout] For more information about this error, try `rustc --explain E0597`.
[INFO] [stdout] Couldn't compile the test.
[INFO] [stdout] ---- src/ch02/s9_unsafe_rust.rs - ch02::s9_unsafe_rust::security_abstract (line 460) stdout ----
[INFO] [stdout] error: assigning to `&T` is undefined behavior, consider using an `UnsafeCell`
[INFO] [stdout]    --> src/ch02/s9_unsafe_rust.rs:475:9
[INFO] [stdout]     |
[INFO] [stdout] 475 |         ptr::write(&self.value as *const _ as *mut _, value);
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, visit <https://doc.rust-lang.org/book/ch15-05-interior-mutability.html>
[INFO] [stdout]     = note: `#[deny(invalid_reference_casting)]` on by default
[INFO] [stdout] 
[INFO] [stdout] error: aborting due to 1 previous error
[INFO] [stdout] 
[INFO] [stdout] Couldn't compile the test.
[INFO] [stdout] ---- src/ch02/s9_unsafe_rust.rs - ch02::s9_unsafe_rust::unsafe_intro (line 69) stdout ----
[INFO] [stdout] error: creating a shared reference to mutable static
[INFO] [stdout]   --> src/ch02/s9_unsafe_rust.rs:75:33
[INFO] [stdout]    |
[INFO] [stdout] 75 |         println!("COUNTER: {}", COUNTER);
[INFO] [stdout]    |                                 ^^^^^^^ shared reference to mutable static
[INFO] [stdout]    |
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]    = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stdout] note: the lint level is defined here
[INFO] [stdout]   --> src/ch02/s9_unsafe_rust.rs:68:9
[INFO] [stdout]    |
[INFO] [stdout] 68 | #![deny(warnings)]
[INFO] [stdout]    |         ^^^^^^^^
[INFO] [stdout]    = note: `#[deny(static_mut_refs)]` implied by `#[deny(warnings)]`
[INFO] [stdout] 
[INFO] [stdout] error: aborting due to 1 previous error
[INFO] [stdout] 
[INFO] [stdout] Couldn't compile the test.
[INFO] [stdout] ---- src/ch03/s2_async_await.rs - ch03::s2_async_await::a_async_intro (line 70) stdout ----
[INFO] [stdout] error[E0425]: cannot find value `my_server` in this scope
[INFO] [stdout]   --> src/ch03/s2_async_await.rs:71:22
[INFO] [stdout]    |
[INFO] [stdout] 71 | let future = id_rpc(&my_server).and_then(|id| {
[INFO] [stdout]    |                      ^^^^^^^^^ not found in this scope
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find value `my_socket` in this scope
[INFO] [stdout]   --> src/ch03/s2_async_await.rs:76:18
[INFO] [stdout]    |
[INFO] [stdout] 76 |     write_string(my_socket, encoded)
[INFO] [stdout]    |                  ^^^^^^^^^ not found in this scope
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find function `id_rpc` in this scope
[INFO] [stdout]   --> src/ch03/s2_async_await.rs:71:14
[INFO] [stdout]    |
[INFO] [stdout] 71 | let future = id_rpc(&my_server).and_then(|id| {
[INFO] [stdout]    |              ^^^^^^ not found in this scope
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find function `get_row` in this scope
[INFO] [stdout]   --> src/ch03/s2_async_await.rs:72:5
[INFO] [stdout]    |
[INFO] [stdout] 72 |     get_row(id)
[INFO] [stdout]    |     ^^^^^^^ not found in this scope
[INFO] [stdout] 
[INFO] [stdout] error[E0433]: failed to resolve: use of unresolved module or unlinked crate `json`
[INFO] [stdout]   --> src/ch03/s2_async_await.rs:74:5
[INFO] [stdout]    |
[INFO] [stdout] 74 |     json::encode(row)
[INFO] [stdout]    |     ^^^^ use of unresolved module or unlinked crate `json`
[INFO] [stdout]    |
[INFO] [stdout]    = help: if you wanted to use a crate named `json`, use `cargo add json` to add it to your `Cargo.toml`
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find function `write_string` in this scope
[INFO] [stdout]   --> src/ch03/s2_async_await.rs:76:5
[INFO] [stdout]    |
[INFO] [stdout] 76 |     write_string(my_socket, encoded)
[INFO] [stdout]    |     ^^^^^^^^^^^^ not found in this scope
[INFO] [stdout] 
[INFO] [stdout] error: aborting due to 6 previous errors
[INFO] [stdout] 
[INFO] [stdout] Some errors have detailed explanations: E0425, E0433.
[INFO] [stdout] For more information about an error, try `rustc --explain E0425`.
[INFO] [stdout] Couldn't compile the test.
[INFO] [stdout] ---- src/ch02/s9_unsafe_rust.rs - ch02::s9_unsafe_rust::unsafe_intro (line 22) stdout ----
[INFO] [stdout] error: unnecessary `unsafe` block
[INFO] [stdout]   --> src/ch02/s9_unsafe_rust.rs:24:9
[INFO] [stdout]    |
[INFO] [stdout] 24 |         unsafe {
[INFO] [stdout]    |         ^^^^^^ unnecessary `unsafe` block
[INFO] [stdout]    |
[INFO] [stdout] note: the lint level is defined here
[INFO] [stdout]   --> src/ch02/s9_unsafe_rust.rs:21:9
[INFO] [stdout]    |
[INFO] [stdout] 21 | #![deny(warnings)]
[INFO] [stdout]    |         ^^^^^^^^
[INFO] [stdout]    = note: `#[deny(unused_unsafe)]` implied by `#[deny(warnings)]`
[INFO] [stdout] 
[INFO] [stdout] error: aborting due to 1 previous error
[INFO] [stdout] 
[INFO] [stdout] Couldn't compile the test.
[INFO] [stdout] ---- src/ch02/s9_unsafe_rust.rs - ch02::s9_unsafe_rust::security_abstract (line 145) stdout ----
[INFO] [stdout] error[E0597]: `x2` does not live long enough
[INFO] [stdout]    --> src/ch02/s9_unsafe_rust.rs:229:42
[INFO] [stdout]     |
[INFO] [stdout] 227 |         let (y2,x2 ); // 此处交换，会报错，注意编译错误
[INFO] [stdout]     |                 -- binding `x2` declared here
[INFO] [stdout] 228 |         x2 = Hello::new("x2", 13);
[INFO] [stdout] 229 |         y2 = MyBox::new(Hello::new("y2", &x2));
[INFO] [stdout]     |                                          ^^^ borrowed value does not live long enough
[INFO] [stdout] 230 |     }
[INFO] [stdout]     |     -
[INFO] [stdout]     |     |
[INFO] [stdout]     |     `x2` dropped here while still borrowed
[INFO] [stdout]     |     borrow might be used here, when `y2` is dropped and runs the `Drop` code for type `MyBox`
[INFO] [stdout]     |
[INFO] [stdout]     = note: values in a scope are dropped in the opposite order they are defined
[INFO] [stdout] 
[INFO] [stdout] error: aborting due to 1 previous error
[INFO] [stdout] 
[INFO] [stdout] For more information about this error, try `rustc --explain E0597`.
[INFO] [stdout] Couldn't compile the test.
[INFO] [stdout] ---- src/ch03/s2_async_await.rs - ch03::s2_async_await::e_generator (line 219) stdout ----
[INFO] [stdout] error[E0405]: cannot find trait `Future` in this scope
[INFO] [stdout]    --> src/ch03/s2_async_await.rs:224:18
[INFO] [stdout]     |
[INFO] [stdout] 224 | fn bar() -> impl Future<Output = u8> {
[INFO] [stdout]     |                  ^^^^^^ not found in this scope
[INFO] [stdout]     |
[INFO] [stdout] help: consider importing this trait
[INFO] [stdout]     |
[INFO] [stdout] 219 + use std::future::Future;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] error: aborting due to 1 previous error
[INFO] [stdout] 
[INFO] [stdout] For more information about this error, try `rustc --explain E0405`.
[INFO] [stdout] Couldn't compile the test.
[INFO] [stdout] ---- src/ch02/s8_metaprogramming.rs - ch02::s8_metaprogramming::derive_proc_macros (line 324) stdout ----
[INFO] [stdout] error: the `#[proc_macro]` attribute is only usable with crates of the `proc-macro` crate type
[INFO] [stdout]    --> src/ch02/s8_metaprogramming.rs:383:5
[INFO] [stdout]     |
[INFO] [stdout] 383 |     #[proc_macro]
[INFO] [stdout]     |     ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] error[E0433]: failed to resolve: there are too many leading `super` keywords
[INFO] [stdout]    --> src/ch02/s8_metaprogramming.rs:327:9
[INFO] [stdout]     |
[INFO] [stdout] 327 |     use super::*;
[INFO] [stdout]     |         ^^^^^ there are too many leading `super` keywords
[INFO] [stdout] 
[INFO] [stdout] error: cannot find macro `Token` in this scope
[INFO] [stdout]    --> src/ch02/s8_metaprogramming.rs:347:27
[INFO] [stdout]     |
[INFO] [stdout] 347 |             input.parse::<Token![->]>()?;
[INFO] [stdout]     |                           ^^^^^
[INFO] [stdout] 
[INFO] [stdout] error: cannot find macro `Token` in this scope
[INFO] [stdout]    --> src/ch02/s8_metaprogramming.rs:349:27
[INFO] [stdout]     |
[INFO] [stdout] 349 |             input.parse::<Token![::]>()?;
[INFO] [stdout]     |                           ^^^^^
[INFO] [stdout] 
[INFO] [stdout] error: cannot find macro `bracketed` in this scope
[INFO] [stdout]    --> src/ch02/s8_metaprogramming.rs:350:33
[INFO] [stdout]     |
[INFO] [stdout] 350 |             let bracket_token = bracketed!(content in input);
[INFO] [stdout]     |                                 ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] error: cannot find macro `Token` in this scope
[INFO] [stdout]    --> src/ch02/s8_metaprogramming.rs:364:27
[INFO] [stdout]     |
[INFO] [stdout] 364 |             input.parse::<Token![:]>()?;
[INFO] [stdout]     |                           ^^^^^
[INFO] [stdout] 
[INFO] [stdout] error: cannot find macro `Token` in this scope
[INFO] [stdout]    --> src/ch02/s8_metaprogramming.rs:366:27
[INFO] [stdout]     |
[INFO] [stdout] 366 |             input.parse::<Token![||]>()?;
[INFO] [stdout]     |                           ^^^^^
[INFO] [stdout] 
[INFO] [stdout] error: cannot find macro `Token` in this scope
[INFO] [stdout]    --> src/ch02/s8_metaprogramming.rs:368:27
[INFO] [stdout]     |
[INFO] [stdout] 368 |             input.parse::<Token![:]>()?;
[INFO] [stdout]     |                           ^^^^^
[INFO] [stdout] 
[INFO] [stdout] error: cannot find macro `parse_macro_input` in this scope
[INFO] [stdout]    --> src/ch02/s8_metaprogramming.rs:390:13
[INFO] [stdout]     |
[INFO] [stdout] 390 |         } = parse_macro_input!(input as DbOpByOrBy);
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] error: cannot find macro `quote` in this scope
[INFO] [stdout]    --> src/ch02/s8_metaprogramming.rs:396:24
[INFO] [stdout]     |
[INFO] [stdout] 396 |         let expanded = quote! {
[INFO] [stdout]     |                        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] error[E0433]: failed to resolve: use of unresolved module or unlinked crate `proc_macro2`
[INFO] [stdout]    --> src/ch02/s8_metaprogramming.rs:394:44
[INFO] [stdout]     |
[INFO] [stdout] 394 |         let fn_name = Ident::new(&fn_name, proc_macro2::Span::call_site());
[INFO] [stdout]     |                                            ^^^^^^^^^^^ use of unresolved module or unlinked crate `proc_macro2`
[INFO] [stdout]     |
[INFO] [stdout]     = help: if you wanted to use a crate named `proc_macro2`, use `cargo add proc_macro2` to add it to your `Cargo.toml`
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find type `Type` in this scope
[INFO] [stdout]    --> src/ch02/s8_metaprogramming.rs:330:20
[INFO] [stdout]     |
[INFO] [stdout] 330 |         pub model: Type,
[INFO] [stdout]     |                    ^^^^ not found in this scope
[INFO] [stdout]     |
[INFO] [stdout] help: consider importing this struct
[INFO] [stdout]     |
[INFO] [stdout] 324 + use std::mem::type_info::Type;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find type `Ident` in this scope
[INFO] [stdout]    --> src/ch02/s8_metaprogramming.rs:331:20
[INFO] [stdout]     |
[INFO] [stdout] 331 |         pub table: Ident,
[INFO] [stdout]     |                    ^^^^^ not found in this scope
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find type `Ident` in this scope
[INFO] [stdout]    --> src/ch02/s8_metaprogramming.rs:337:20
[INFO] [stdout]     |
[INFO] [stdout] 337 |         pub name1: Ident,
[INFO] [stdout]     |                    ^^^^^ not found in this scope
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find type `Type` in this scope
[INFO] [stdout]    --> src/ch02/s8_metaprogramming.rs:338:18
[INFO] [stdout]     |
[INFO] [stdout] 338 |         pub ty1: Type,
[INFO] [stdout]     |                  ^^^^ not found in this scope
[INFO] [stdout]     |
[INFO] [stdout] help: consider importing this struct
[INFO] [stdout]     |
[INFO] [stdout] 324 + use std::mem::type_info::Type;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find type `Ident` in this scope
[INFO] [stdout]    --> src/ch02/s8_metaprogramming.rs:339:20
[INFO] [stdout]     |
[INFO] [stdout] 339 |         pub name2: Ident,
[INFO] [stdout]     |                    ^^^^^ not found in this scope
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find type `Type` in this scope
[INFO] [stdout]    --> src/ch02/s8_metaprogramming.rs:340:18
[INFO] [stdout]     |
[INFO] [stdout] 340 |         pub ty2: Type,
[INFO] [stdout]     |                  ^^^^ not found in this scope
[INFO] [stdout]     |
[INFO] [stdout] help: consider importing this struct
[INFO] [stdout]     |
[INFO] [stdout] 324 + use std::mem::type_info::Type;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] error[E0405]: cannot find trait `Parse` in this scope
[INFO] [stdout]    --> src/ch02/s8_metaprogramming.rs:343:10
[INFO] [stdout]     |
[INFO] [stdout] 343 |     impl Parse for DbOpByOrBy {
[INFO] [stdout]     |          ^^^^^ not found in this scope
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find type `ParseStream` in this scope
[INFO] [stdout]    --> src/ch02/s8_metaprogramming.rs:344:25
[INFO] [stdout]     |
[INFO] [stdout] 344 |         fn parse(input: ParseStream) -> Result<Self> {
[INFO] [stdout]     |                         ^^^^^^^^^^^ not found in this scope
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find type `Type` in this scope
[INFO] [stdout]    --> src/ch02/s8_metaprogramming.rs:346:24
[INFO] [stdout]     |
[INFO] [stdout] 346 |             let model: Type = input.parse()?;
[INFO] [stdout]     |                        ^^^^ not found in this scope
[INFO] [stdout]     |
[INFO] [stdout] help: consider importing this struct
[INFO] [stdout]     |
[INFO] [stdout] 324 + use std::mem::type_info::Type;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find type `Ident` in this scope
[INFO] [stdout]    --> src/ch02/s8_metaprogramming.rs:348:24
[INFO] [stdout]     |
[INFO] [stdout] 348 |             let table: Ident = input.parse()?;
[INFO] [stdout]     |                        ^^^^^ not found in this scope
[INFO] [stdout] 
[INFO] [stdout] error[E0405]: cannot find trait `Parse` in this scope
[INFO] [stdout]    --> src/ch02/s8_metaprogramming.rs:361:10
[INFO] [stdout]     |
[INFO] [stdout] 361 |     impl Parse for FieldContentOr {
[INFO] [stdout]     |          ^^^^^ not found in this scope
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find type `ParseStream` in this scope
[INFO] [stdout]    --> src/ch02/s8_metaprogramming.rs:362:25
[INFO] [stdout]     |
[INFO] [stdout] 362 |         fn parse(input: ParseStream) -> Result<Self> {
[INFO] [stdout]     |                         ^^^^^^^^^^^ not found in this scope
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find type `Ident` in this scope
[INFO] [stdout]    --> src/ch02/s8_metaprogramming.rs:363:24
[INFO] [stdout]     |
[INFO] [stdout] 363 |             let name1: Ident = input.parse()?;
[INFO] [stdout]     |                        ^^^^^ not found in this scope
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find type `Type` in this scope
[INFO] [stdout]    --> src/ch02/s8_metaprogramming.rs:365:22
[INFO] [stdout]     |
[INFO] [stdout] 365 |             let ty1: Type = input.parse()?;
[INFO] [stdout]     |                      ^^^^ not found in this scope
[INFO] [stdout]     |
[INFO] [stdout] help: consider importing this struct
[INFO] [stdout]     |
[INFO] [stdout] 324 + use std::mem::type_info::Type;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find type `Ident` in this scope
[INFO] [stdout]    --> src/ch02/s8_metaprogramming.rs:367:24
[INFO] [stdout]     |
[INFO] [stdout] 367 |             let name2: Ident = input.parse()?;
[INFO] [stdout]     |                        ^^^^^ not found in this scope
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find type `Type` in this scope
[INFO] [stdout]    --> src/ch02/s8_metaprogramming.rs:369:22
[INFO] [stdout]     |
[INFO] [stdout] 369 |             let ty2: Type = input.parse()?;
[INFO] [stdout]     |                      ^^^^ not found in this scope
[INFO] [stdout]     |
[INFO] [stdout] help: consider importing this struct
[INFO] [stdout]     |
[INFO] [stdout] 324 + use std::mem::type_info::Type;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find type `TokenStream` in this scope
[INFO] [stdout]    --> src/ch02/s8_metaprogramming.rs:384:30
[INFO] [stdout]     |
[INFO] [stdout] 384 |     pub fn find_by_or(input: TokenStream) -> TokenStream {
[INFO] [stdout]     |                              ^^^^^^^^^^^ not found in this scope
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find type `TokenStream` in this scope
[INFO] [stdout]    --> src/ch02/s8_metaprogramming.rs:384:46
[INFO] [stdout]     |
[INFO] [stdout] 384 |     pub fn find_by_or(input: TokenStream) -> TokenStream {
[INFO] [stdout]     |                                              ^^^^^^^^^^^ not found in this scope
[INFO] [stdout] 
[INFO] [stdout] error[E0433]: failed to resolve: use of unresolved module or unlinked crate `token`
[INFO] [stdout]    --> src/ch02/s8_metaprogramming.rs:332:28
[INFO] [stdout]     |
[INFO] [stdout] 332 |         pub bracket_token: token::Bracket,
[INFO] [stdout]     |                            ^^^^^ use of unresolved module or unlinked crate `token`
[INFO] [stdout]     |
[INFO] [stdout]     = help: if you wanted to use a crate named `token`, use `cargo add token` to add it to your `Cargo.toml`
[INFO] [stdout] 
[INFO] [stdout] error[E0433]: failed to resolve: use of undeclared type `Ident`
[INFO] [stdout]    --> src/ch02/s8_metaprogramming.rs:394:23
[INFO] [stdout]     |
[INFO] [stdout] 394 |         let fn_name = Ident::new(&fn_name, proc_macro2::Span::call_site());
[INFO] [stdout]     |                       ^^^^^ use of undeclared type `Ident`
[INFO] [stdout] 
[INFO] [stdout] error[E0433]: failed to resolve: use of undeclared type `TokenStream`
[INFO] [stdout]    --> src/ch02/s8_metaprogramming.rs:406:9
[INFO] [stdout]     |
[INFO] [stdout] 406 |         TokenStream::from(expanded)
[INFO] [stdout]     |         ^^^^^^^^^^^ use of undeclared type `TokenStream`
[INFO] [stdout] 
[INFO] [stdout] error: aborting due to 32 previous errors
[INFO] [stdout] 
[INFO] [stdout] Some errors have detailed explanations: E0405, E0425, E0433.
[INFO] [stdout] For more information about an error, try `rustc --explain E0405`.
[INFO] [stdout] Couldn't compile the test.
[INFO] [stdout] ---- src/ch03/s2_async_await.rs - ch03::s2_async_await::a_async_intro (line 84) stdout ----
[INFO] [stdout] error[E0425]: cannot find value `my_server` in this scope
[INFO] [stdout]   --> src/ch03/s2_async_await.rs:85:18
[INFO] [stdout]    |
[INFO] [stdout] 85 | let id = id_rpc(&my_server).await;
[INFO] [stdout]    |                  ^^^^^^^^^ not found in this scope
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find value `my_socket` in this scope
[INFO] [stdout]   --> src/ch03/s2_async_await.rs:88:14
[INFO] [stdout]    |
[INFO] [stdout] 88 | write_string(my_socket, encoded).await;
[INFO] [stdout]    |              ^^^^^^^^^ not found in this scope
[INFO] [stdout] 
[INFO] [stdout] error[E0728]: `await` is only allowed inside `async` functions and blocks
[INFO] [stdout]   --> src/ch03/s2_async_await.rs:85:29
[INFO] [stdout]    |
[INFO] [stdout] 84 | fn main() { #[allow(non_snake_case)] fn _doctest_main_src_ch03_s2_async_await_rs_84_0() {
[INFO] [stdout]    |                                      -------------------------------------------------- this is not `async`
[INFO] [stdout] 85 | let id = id_rpc(&my_server).await;
[INFO] [stdout]    |                             ^^^^^ only allowed inside `async` functions and blocks
[INFO] [stdout] 
[INFO] [stdout] error[E0728]: `await` is only allowed inside `async` functions and blocks
[INFO] [stdout]   --> src/ch03/s2_async_await.rs:86:23
[INFO] [stdout]    |
[INFO] [stdout] 84 | fn main() { #[allow(non_snake_case)] fn _doctest_main_src_ch03_s2_async_await_rs_84_0() {
[INFO] [stdout]    |                                      -------------------------------------------------- this is not `async`
[INFO] [stdout] 85 | let id = id_rpc(&my_server).await;
[INFO] [stdout] 86 | let row = get_row(id).await;
[INFO] [stdout]    |                       ^^^^^ only allowed inside `async` functions and blocks
[INFO] [stdout] 
[INFO] [stdout] error[E0728]: `await` is only allowed inside `async` functions and blocks
[INFO] [stdout]   --> src/ch03/s2_async_await.rs:88:34
[INFO] [stdout]    |
[INFO] [stdout] 84 | fn main() { #[allow(non_snake_case)] fn _doctest_main_src_ch03_s2_async_await_rs_84_0() {
[INFO] [stdout]    |                                      -------------------------------------------------- this is not `async`
[INFO] [stdout] ...
[INFO] [stdout] 88 | write_string(my_socket, encoded).await;
[INFO] [stdout]    |                                  ^^^^^ only allowed inside `async` functions and blocks
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find function `id_rpc` in this scope
[INFO] [stdout]   --> src/ch03/s2_async_await.rs:85:10
[INFO] [stdout]    |
[INFO] [stdout] 85 | let id = id_rpc(&my_server).await;
[INFO] [stdout]    |          ^^^^^^ not found in this scope
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find function `get_row` in this scope
[INFO] [stdout]   --> src/ch03/s2_async_await.rs:86:11
[INFO] [stdout]    |
[INFO] [stdout] 86 | let row = get_row(id).await;
[INFO] [stdout]    |           ^^^^^^^ not found in this scope
[INFO] [stdout] 
[INFO] [stdout] error[E0433]: failed to resolve: use of unresolved module or unlinked crate `json`
[INFO] [stdout]   --> src/ch03/s2_async_await.rs:87:15
[INFO] [stdout]    |
[INFO] [stdout] 87 | let encoded = json::encode(row);
[INFO] [stdout]    |               ^^^^ use of unresolved module or unlinked crate `json`
[INFO] [stdout]    |
[INFO] [stdout]    = help: if you wanted to use a crate named `json`, use `cargo add json` to add it to your `Cargo.toml`
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find function `write_string` in this scope
[INFO] [stdout]   --> src/ch03/s2_async_await.rs:88:1
[INFO] [stdout]    |
[INFO] [stdout] 88 | write_string(my_socket, encoded).await;
[INFO] [stdout]    | ^^^^^^^^^^^^ not found in this scope
[INFO] [stdout] 
[INFO] [stdout] error: aborting due to 9 previous errors
[INFO] [stdout] 
[INFO] [stdout] Some errors have detailed explanations: E0425, E0433, E0728.
[INFO] [stdout] For more information about an error, try `rustc --explain E0425`.
[INFO] [stdout] Couldn't compile the test.
[INFO] [stdout] ---- src/ch03/s2_async_await.rs - ch03::s2_async_await::e_generator (line 403) stdout ----
[INFO] [stdout] error[E0557]: feature has been removed
[INFO] [stdout]    --> src/ch03/s2_async_await.rs:405:12
[INFO] [stdout]     |
[INFO] [stdout] 405 | #![feature(generators, generator_trait)]
[INFO] [stdout]     |            ^^^^^^^^^^ feature has been removed
[INFO] [stdout]     |
[INFO] [stdout]     = note: removed in 1.75.0; see <https://github.com/rust-lang/rust/pull/116958> for more information
[INFO] [stdout]     = note: renamed to `coroutines`
[INFO] [stdout] 
[INFO] [stdout] error[E0432]: unresolved imports `std::ops::Generator`, `std::ops::GeneratorState`
[INFO] [stdout]    --> src/ch03/s2_async_await.rs:410:16
[INFO] [stdout]     |
[INFO] [stdout] 410 | use std::ops::{Generator, GeneratorState};
[INFO] [stdout]     |                ^^^^^^^^^  ^^^^^^^^^^^^^^ no `GeneratorState` in `ops`
[INFO] [stdout]     |                |
[INFO] [stdout]     |                no `Generator` in `ops`
[INFO] [stdout] 
[INFO] [stdout] error[E0658]: yield syntax is experimental
[INFO] [stdout]    --> src/ch03/s2_async_await.rs:416:13
[INFO] [stdout]     |
[INFO] [stdout] 416 |             yield ();
[INFO] [stdout]     |             ^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: see issue #43122 <https://github.com/rust-lang/rust/issues/43122> for more information
[INFO] [stdout]     = help: add `#![feature(yield_expr)]` to the crate attributes to enable
[INFO] [stdout]     = note: this compiler was built on 2026-01-14; consider upgrading it if it is out of date
[INFO] [stdout] 
[INFO] [stdout] error[E0658]: yield syntax is experimental
[INFO] [stdout]    --> src/ch03/s2_async_await.rs:416:13
[INFO] [stdout]     |
[INFO] [stdout] 416 |             yield ();
[INFO] [stdout]     |             ^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: see issue #43122 <https://github.com/rust-lang/rust/issues/43122> for more information
[INFO] [stdout]     = help: add `#![feature(yield_expr)]` to the crate attributes to enable
[INFO] [stdout]     = note: this compiler was built on 2026-01-14; consider upgrading it if it is out of date
[INFO] [stdout] 
[INFO] [stdout] error: `yield` can only be used in `#[coroutine]` closures, or `gen` blocks
[INFO] [stdout]    --> src/ch03/s2_async_await.rs:416:13
[INFO] [stdout]     |
[INFO] [stdout] 416 |             yield ();
[INFO] [stdout]     |             ^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: use `#[coroutine]` to make this closure a coroutine
[INFO] [stdout]     |
[INFO] [stdout] 414 |     #[coroutine] move || {
[INFO] [stdout]     |     ++++++++++++
[INFO] [stdout] 
[INFO] [stdout] error[E0635]: unknown feature `generator_trait`
[INFO] [stdout]    --> src/ch03/s2_async_await.rs:405:24
[INFO] [stdout]     |
[INFO] [stdout] 405 | #![feature(generators, generator_trait)]
[INFO] [stdout]     |                        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] error: aborting due to 6 previous errors
[INFO] [stdout] 
[INFO] [stdout] Some errors have detailed explanations: E0432, E0557, E0635, E0658.
[INFO] [stdout] For more information about an error, try `rustc --explain E0432`.
[INFO] [stdout] Couldn't compile the test.
[INFO] [stdout] ---- src/ch03/s2_async_await.rs - ch03::s2_async_await::f_pin_unpin (line 630) stdout ----
[INFO] [stdout] error[E0382]: borrow of moved value: `a`
[INFO] [stdout]    --> src/ch03/s2_async_await.rs:638:39
[INFO] [stdout]     |
[INFO] [stdout] 637 |     let a = String::from("Hello");
[INFO] [stdout]     |         - move occurs because `a` has type `String`, which does not implement the `Copy` trait
[INFO] [stdout] 638 |     let _sr = SelfReferential { a, b: &a }; // error: borrow of moved value: `a`
[INFO] [stdout]     |                                 -     ^^ value borrowed here after move
[INFO] [stdout]     |                                 |
[INFO] [stdout]     |                                 value moved here
[INFO] [stdout]     |
[INFO] [stdout] help: consider cloning the value if the performance cost is acceptable
[INFO] [stdout]     |
[INFO] [stdout] 638 |     let _sr = SelfReferential { a: a.clone(), b: &a }; // error: borrow of moved value: `a`
[INFO] [stdout]     |                                  +++++++++++
[INFO] [stdout] 
[INFO] [stdout] error: aborting due to 1 previous error
[INFO] [stdout] 
[INFO] [stdout] For more information about this error, try `rustc --explain E0382`.
[INFO] [stdout] Couldn't compile the test.
[INFO] [stdout] ---- src/ch03/s2_async_await.rs - ch03::s2_async_await::f_pin_unpin (line 644) stdout ----
[INFO] [stdout] error[E0433]: failed to resolve: use of unresolved module or unlinked crate `mem`
[INFO] [stdout]    --> src/ch03/s2_async_await.rs:659:23
[INFO] [stdout]     |
[INFO] [stdout] 659 |     let stack_value = mem::replace(&mut *heap_value, SelfReferential {
[INFO] [stdout]     |                       ^^^ use of unresolved module or unlinked crate `mem`
[INFO] [stdout]     |
[INFO] [stdout]     = help: if you wanted to use a crate named `mem`, use `cargo add mem` to add it to your `Cargo.toml`
[INFO] [stdout] help: consider importing this module
[INFO] [stdout]     |
[INFO] [stdout] 645 + use std::mem;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find value `PhantomPinned` in this scope
[INFO] [stdout]    --> src/ch03/s2_async_await.rs:661:15
[INFO] [stdout]     |
[INFO] [stdout] 661 |         _pin: PhantomPinned,
[INFO] [stdout]     |               ^^^^^^^^^^^^^ not found in this scope
[INFO] [stdout]     |
[INFO] [stdout] help: consider importing this unit struct
[INFO] [stdout]     |
[INFO] [stdout] 645 + use std::marker::PhantomPinned;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] error[E0560]: struct `SelfReferential` has no field named `_pin`
[INFO] [stdout]    --> src/ch03/s2_async_await.rs:661:9
[INFO] [stdout]     |
[INFO] [stdout] 661 |         _pin: PhantomPinned,
[INFO] [stdout]     |         ^^^^ `SelfReferential` does not have this field
[INFO] [stdout]     |
[INFO] [stdout]     = note: all struct fields are already assigned
[INFO] [stdout] 
[INFO] [stdout] error: aborting due to 3 previous errors
[INFO] [stdout] 
[INFO] [stdout] Some errors have detailed explanations: E0425, E0433, E0560.
[INFO] [stdout] For more information about an error, try `rustc --explain E0425`.
[INFO] [stdout] Couldn't compile the test.
[INFO] [stdout] ---- src/ch03/s2_async_await.rs - ch03::s2_async_await::e_generator (line 340) stdout ----
[INFO] [stdout] error[E0557]: feature has been removed
[INFO] [stdout]    --> src/ch03/s2_async_await.rs:342:12
[INFO] [stdout]     |
[INFO] [stdout] 342 | #![feature(generators, generator_trait)]
[INFO] [stdout]     |            ^^^^^^^^^^ feature has been removed
[INFO] [stdout]     |
[INFO] [stdout]     = note: removed in 1.75.0; see <https://github.com/rust-lang/rust/pull/116958> for more information
[INFO] [stdout]     = note: renamed to `coroutines`
[INFO] [stdout] 
[INFO] [stdout] error[E0432]: unresolved import `std::ops::Generator`
[INFO] [stdout]    --> src/ch03/s2_async_await.rs:348:5
[INFO] [stdout]     |
[INFO] [stdout] 348 | use std::ops::Generator;
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^ no `Generator` in `ops`
[INFO] [stdout] 
[INFO] [stdout] error[E0658]: yield syntax is experimental
[INFO] [stdout]    --> src/ch03/s2_async_await.rs:353:13
[INFO] [stdout]     |
[INFO] [stdout] 353 |             yield x;
[INFO] [stdout]     |             ^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: see issue #43122 <https://github.com/rust-lang/rust/issues/43122> for more information
[INFO] [stdout]     = help: add `#![feature(yield_expr)]` to the crate attributes to enable
[INFO] [stdout]     = note: this compiler was built on 2026-01-14; consider upgrading it if it is out of date
[INFO] [stdout] 
[INFO] [stdout] error[E0658]: yield syntax is experimental
[INFO] [stdout]    --> src/ch03/s2_async_await.rs:353:13
[INFO] [stdout]     |
[INFO] [stdout] 353 |             yield x;
[INFO] [stdout]     |             ^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: see issue #43122 <https://github.com/rust-lang/rust/issues/43122> for more information
[INFO] [stdout]     = help: add `#![feature(yield_expr)]` to the crate attributes to enable
[INFO] [stdout]     = note: this compiler was built on 2026-01-14; consider upgrading it if it is out of date
[INFO] [stdout] 
[INFO] [stdout] error: `yield` can only be used in `#[coroutine]` closures, or `gen` blocks
[INFO] [stdout]    --> src/ch03/s2_async_await.rs:353:13
[INFO] [stdout]     |
[INFO] [stdout] 353 |             yield x;
[INFO] [stdout]     |             ^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: use `#[coroutine]` to make this closure a coroutine
[INFO] [stdout]     |
[INFO] [stdout] 351 |     #[coroutine] move || {
[INFO] [stdout]     |     ++++++++++++
[INFO] [stdout] 
[INFO] [stdout] error[E0635]: unknown feature `generator_trait`
[INFO] [stdout]    --> src/ch03/s2_async_await.rs:342:24
[INFO] [stdout]     |
[INFO] [stdout] 342 | #![feature(generators, generator_trait)]
[INFO] [stdout]     |                        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] error: aborting due to 6 previous errors
[INFO] [stdout] 
[INFO] [stdout] Some errors have detailed explanations: E0432, E0557, E0635, E0658.
[INFO] [stdout] For more information about an error, try `rustc --explain E0432`.
[INFO] [stdout] Couldn't compile the test.
[INFO] [stdout] ---- src/ch03/s2_async_await.rs - ch03::s2_async_await::f_pin_unpin (line 721) stdout ----
[INFO] [stdout] error[E0277]: `PhantomPinned` cannot be unpinned
[INFO] [stdout]    --> src/ch03/s2_async_await.rs:764:24
[INFO] [stdout]     |
[INFO] [stdout] 764 |     std::mem::swap(sf1.get_mut(), sf2.get_mut());
[INFO] [stdout]     |                        ^^^^^^^ within `SelfReferential`, the trait `Unpin` is not implemented for `PhantomPinned`
[INFO] [stdout]     |
[INFO] [stdout]     = note: consider using the `pin!` macro
[INFO] [stdout]             consider using `Box::pin` if you need to access the pinned value outside of the current scope
[INFO] [stdout] note: required because it appears within the type `SelfReferential`
[INFO] [stdout]    --> src/ch03/s2_async_await.rs:726:8
[INFO] [stdout]     |
[INFO] [stdout] 726 | struct SelfReferential {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^
[INFO] [stdout] note: required by a bound in `Pin::<&'a mut T>::get_mut`
[INFO] [stdout]    --> /rustc/bd7d74411512a3dd3b35d2f699c51dd2557c7e7e/library/core/src/pin.rs:1598:4
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: `PhantomPinned` cannot be unpinned
[INFO] [stdout]    --> src/ch03/s2_async_await.rs:764:39
[INFO] [stdout]     |
[INFO] [stdout] 764 |     std::mem::swap(sf1.get_mut(), sf2.get_mut());
[INFO] [stdout]     |                                       ^^^^^^^ within `SelfReferential`, the trait `Unpin` is not implemented for `PhantomPinned`
[INFO] [stdout]     |
[INFO] [stdout]     = note: consider using the `pin!` macro
[INFO] [stdout]             consider using `Box::pin` if you need to access the pinned value outside of the current scope
[INFO] [stdout] note: required because it appears within the type `SelfReferential`
[INFO] [stdout]    --> src/ch03/s2_async_await.rs:726:8
[INFO] [stdout]     |
[INFO] [stdout] 726 | struct SelfReferential {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^
[INFO] [stdout] note: required by a bound in `Pin::<&'a mut T>::get_mut`
[INFO] [stdout]    --> /rustc/bd7d74411512a3dd3b35d2f699c51dd2557c7e7e/library/core/src/pin.rs:1598:4
[INFO] [stdout] 
[INFO] [stdout] error: aborting due to 2 previous errors
[INFO] [stdout] 
[INFO] [stdout] For more information about this error, try `rustc --explain E0277`.
[INFO] [stdout] Couldn't compile the test.
[INFO] [stdout] ---- src/ch03/s2_async_await.rs - ch03::s2_async_await::e_generator (line 240) stdout ----
[INFO] [stdout] error[E0557]: feature has been removed
[INFO] [stdout]    --> src/ch03/s2_async_await.rs:241:12
[INFO] [stdout]     |
[INFO] [stdout] 241 | #![feature(generators, generator_trait)]
[INFO] [stdout]     |            ^^^^^^^^^^ feature has been removed
[INFO] [stdout]     |
[INFO] [stdout]     = note: removed in 1.75.0; see <https://github.com/rust-lang/rust/pull/116958> for more information
[INFO] [stdout]     = note: renamed to `coroutines`
[INFO] [stdout] 
[INFO] [stdout] error[E0432]: unresolved import `std::ops::Generator`
[INFO] [stdout]    --> src/ch03/s2_async_await.rs:243:5
[INFO] [stdout]     |
[INFO] [stdout] 243 | use std::ops::Generator;
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^ no `Generator` in `ops`
[INFO] [stdout] 
[INFO] [stdout] error[E0658]: yield syntax is experimental
[INFO] [stdout]    --> src/ch03/s2_async_await.rs:248:9
[INFO] [stdout]     |
[INFO] [stdout] 248 |         yield 1;
[INFO] [stdout]     |         ^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: see issue #43122 <https://github.com/rust-lang/rust/issues/43122> for more information
[INFO] [stdout]     = help: add `#![feature(yield_expr)]` to the crate attributes to enable
[INFO] [stdout]     = note: this compiler was built on 2026-01-14; consider upgrading it if it is out of date
[INFO] [stdout] 
[INFO] [stdout] error[E0658]: yield syntax is experimental
[INFO] [stdout]    --> src/ch03/s2_async_await.rs:249:9
[INFO] [stdout]     |
[INFO] [stdout] 249 |         yield 2;
[INFO] [stdout]     |         ^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: see issue #43122 <https://github.com/rust-lang/rust/issues/43122> for more information
[INFO] [stdout]     = help: add `#![feature(yield_expr)]` to the crate attributes to enable
[INFO] [stdout]     = note: this compiler was built on 2026-01-14; consider upgrading it if it is out of date
[INFO] [stdout] 
[INFO] [stdout] error[E0658]: yield syntax is experimental
[INFO] [stdout]    --> src/ch03/s2_async_await.rs:250:9
[INFO] [stdout]     |
[INFO] [stdout] 250 |         yield 3;
[INFO] [stdout]     |         ^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: see issue #43122 <https://github.com/rust-lang/rust/issues/43122> for more information
[INFO] [stdout]     = help: add `#![feature(yield_expr)]` to the crate attributes to enable
[INFO] [stdout]     = note: this compiler was built on 2026-01-14; consider upgrading it if it is out of date
[INFO] [stdout] 
[INFO] [stdout] error[E0658]: yield syntax is experimental
[INFO] [stdout]    --> src/ch03/s2_async_await.rs:248:9
[INFO] [stdout]     |
[INFO] [stdout] 248 |         yield 1;
[INFO] [stdout]     |         ^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: see issue #43122 <https://github.com/rust-lang/rust/issues/43122> for more information
[INFO] [stdout]     = help: add `#![feature(yield_expr)]` to the crate attributes to enable
[INFO] [stdout]     = note: this compiler was built on 2026-01-14; consider upgrading it if it is out of date
[INFO] [stdout] 
[INFO] [stdout] error: `yield` can only be used in `#[coroutine]` closures, or `gen` blocks
[INFO] [stdout]    --> src/ch03/s2_async_await.rs:248:9
[INFO] [stdout]     |
[INFO] [stdout] 248 |         yield 1;
[INFO] [stdout]     |         ^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: use `#[coroutine]` to make this closure a coroutine
[INFO] [stdout]     |
[INFO] [stdout] 247 |     let mut gen = #[coroutine] || {
[INFO] [stdout]     |                   ++++++++++++
[INFO] [stdout] 
[INFO] [stdout] error[E0658]: yield syntax is experimental
[INFO] [stdout]    --> src/ch03/s2_async_await.rs:249:9
[INFO] [stdout]     |
[INFO] [stdout] 249 |         yield 2;
[INFO] [stdout]     |         ^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: see issue #43122 <https://github.com/rust-lang/rust/issues/43122> for more information
[INFO] [stdout]     = help: add `#![feature(yield_expr)]` to the crate attributes to enable
[INFO] [stdout]     = note: this compiler was built on 2026-01-14; consider upgrading it if it is out of date
[INFO] [stdout] 
[INFO] [stdout] error[E0658]: yield syntax is experimental
[INFO] [stdout]    --> src/ch03/s2_async_await.rs:250:9
[INFO] [stdout]     |
[INFO] [stdout] 250 |         yield 3;
[INFO] [stdout]     |         ^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: see issue #43122 <https://github.com/rust-lang/rust/issues/43122> for more information
[INFO] [stdout]     = help: add `#![feature(yield_expr)]` to the crate attributes to enable
[INFO] [stdout]     = note: this compiler was built on 2026-01-14; consider upgrading it if it is out of date
[INFO] [stdout] 
[INFO] [stdout] error[E0635]: unknown feature `generator_trait`
[INFO] [stdout]    --> src/ch03/s2_async_await.rs:241:24
[INFO] [stdout]     |
[INFO] [stdout] 241 | #![feature(generators, generator_trait)]
[INFO] [stdout]     |                        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no method named `resume` found for struct `Pin<&mut {coroutine@src/ch03/s2_async_await.rs:9:19: 9:21}>` in the current scope
[INFO] [stdout]    --> src/ch03/s2_async_await.rs:260:32
[INFO] [stdout]     |
[INFO] [stdout] 260 |     let c = Pin::new(&mut gen).resume(());
[INFO] [stdout]     |                                ^^^^^^ method not found in `Pin<&mut {coroutine@src/ch03/s2_async_await.rs:9:19: 9:21}>`
[INFO] [stdout]     |
[INFO] [stdout]    --> /rustc/bd7d74411512a3dd3b35d2f699c51dd2557c7e7e/library/core/src/ops/coroutine.rs:119:7
[INFO] [stdout]     |
[INFO] [stdout]     = note: the method is available for `Pin<&mut {coroutine@src/ch03/s2_async_await.rs:9:19: 9:21}>` here
[INFO] [stdout]     |
[INFO] [stdout]     = help: items from traits can only be used if the trait is in scope
[INFO] [stdout] help: trait `Coroutine` which provides `resume` is implemented but not in scope; perhaps you want to import it
[INFO] [stdout]     |
[INFO] [stdout] 243 + use std::ops::Coroutine;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no method named `resume` found for struct `Pin<&mut {coroutine@src/ch03/s2_async_await.rs:9:19: 9:21}>` in the current scope
[INFO] [stdout]    --> src/ch03/s2_async_await.rs:262:32
[INFO] [stdout]     |
[INFO] [stdout] 262 |     let c = Pin::new(&mut gen).resume(());
[INFO] [stdout]     |                                ^^^^^^ method not found in `Pin<&mut {coroutine@src/ch03/s2_async_await.rs:9:19: 9:21}>`
[INFO] [stdout]     |
[INFO] [stdout]    --> /rustc/bd7d74411512a3dd3b35d2f699c51dd2557c7e7e/library/core/src/ops/coroutine.rs:119:7
[INFO] [stdout]     |
[INFO] [stdout]     = note: the method is available for `Pin<&mut {coroutine@src/ch03/s2_async_await.rs:9:19: 9:21}>` here
[INFO] [stdout]     |
[INFO] [stdout]     = help: items from traits can only be used if the trait is in scope
[INFO] [stdout] help: trait `Coroutine` which provides `resume` is implemented but not in scope; perhaps you want to import it
[INFO] [stdout]     |
[INFO] [stdout] 243 + use std::ops::Coroutine;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no method named `resume` found for struct `Pin<&mut {coroutine@src/ch03/s2_async_await.rs:9:19: 9:21}>` in the current scope
[INFO] [stdout]    --> src/ch03/s2_async_await.rs:264:32
[INFO] [stdout]     |
[INFO] [stdout] 264 |     let c = Pin::new(&mut gen).resume(());
[INFO] [stdout]     |                                ^^^^^^ method not found in `Pin<&mut {coroutine@src/ch03/s2_async_await.rs:9:19: 9:21}>`
[INFO] [stdout]     |
[INFO] [stdout]    --> /rustc/bd7d74411512a3dd3b35d2f699c51dd2557c7e7e/library/core/src/ops/coroutine.rs:119:7
[INFO] [stdout]     |
[INFO] [stdout]     = note: the method is available for `Pin<&mut {coroutine@src/ch03/s2_async_await.rs:9:19: 9:21}>` here
[INFO] [stdout]     |
[INFO] [stdout]     = help: items from traits can only be used if the trait is in scope
[INFO] [stdout] help: trait `Coroutine` which provides `resume` is implemented but not in scope; perhaps you want to import it
[INFO] [stdout]     |
[INFO] [stdout] 243 + use std::ops::Coroutine;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no method named `resume` found for struct `Pin<&mut {coroutine@src/ch03/s2_async_await.rs:9:19: 9:21}>` in the current scope
[INFO] [stdout]    --> src/ch03/s2_async_await.rs:266:32
[INFO] [stdout]     |
[INFO] [stdout] 266 |     let c = Pin::new(&mut gen).resume(());
[INFO] [stdout]     |                                ^^^^^^ method not found in `Pin<&mut {coroutine@src/ch03/s2_async_await.rs:9:19: 9:21}>`
[INFO] [stdout]     |
[INFO] [stdout]    --> /rustc/bd7d74411512a3dd3b35d2f699c51dd2557c7e7e/library/core/src/ops/coroutine.rs:119:7
[INFO] [stdout]     |
[INFO] [stdout]     = note: the method is available for `Pin<&mut {coroutine@src/ch03/s2_async_await.rs:9:19: 9:21}>` here
[INFO] [stdout]     |
[INFO] [stdout]     = help: items from traits can only be used if the trait is in scope
[INFO] [stdout] help: trait `Coroutine` which provides `resume` is implemented but not in scope; perhaps you want to import it
[INFO] [stdout]     |
[INFO] [stdout] 243 + use std::ops::Coroutine;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] error: aborting due to 14 previous errors
[INFO] [stdout] 
[INFO] [stdout] Some errors have detailed explanations: E0432, E0557, E0599, E0635, E0658.
[INFO] [stdout] For more information about an error, try `rustc --explain E0432`.
[INFO] [stdout] Couldn't compile the test.
[INFO] [stdout] ---- src/ch03/s2_async_await.rs - ch03::s2_async_await::e_generator (line 273) stdout ----
[INFO] [stdout] error[E0557]: feature has been removed
[INFO] [stdout]    --> src/ch03/s2_async_await.rs:275:12
[INFO] [stdout]     |
[INFO] [stdout] 275 | #![feature(generators, generator_trait)]
[INFO] [stdout]     |            ^^^^^^^^^^ feature has been removed
[INFO] [stdout]     |
[INFO] [stdout]     = note: removed in 1.75.0; see <https://github.com/rust-lang/rust/pull/116958> for more information
[INFO] [stdout]     = note: renamed to `coroutines`
[INFO] [stdout] 
[INFO] [stdout] error[E0432]: unresolved imports `std::ops::Generator`, `std::ops::GeneratorState`
[INFO] [stdout]    --> src/ch03/s2_async_await.rs:278:16
[INFO] [stdout]     |
[INFO] [stdout] 278 | use std::ops::{Generator, GeneratorState};
[INFO] [stdout]     |                ^^^^^^^^^  ^^^^^^^^^^^^^^ no `GeneratorState` in `ops`
[INFO] [stdout]     |                |
[INFO] [stdout]     |                no `Generator` in `ops`
[INFO] [stdout] 
[INFO] [stdout] error[E0635]: unknown feature `generator_trait`
[INFO] [stdout]    --> src/ch03/s2_async_await.rs:275:24
[INFO] [stdout]     |
[INFO] [stdout] 275 | #![feature(generators, generator_trait)]
[INFO] [stdout]     |                        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] error: aborting due to 3 previous errors
[INFO] [stdout] 
[INFO] [stdout] Some errors have detailed explanations: E0432, E0557, E0635.
[INFO] [stdout] For more information about an error, try `rustc --explain E0432`.
[INFO] [stdout] Couldn't compile the test.
[INFO] [stdout] ---- src/ch03/s2_async_await.rs - ch03::s2_async_await::f_pin_unpin (line 838) stdout ----
[INFO] [stdout] error[E0596]: cannot borrow data in dereference of `Pin<Box<SelfReferential>>` as mutable
[INFO] [stdout]    --> src/ch03/s2_async_await.rs:866:36
[INFO] [stdout]     |
[INFO] [stdout] 866 |     let stack_value = mem::replace(&mut *heap_value, SelfReferential {
[INFO] [stdout]     |                                    ^^^^^^^^^^^^^^^^ cannot borrow as mutable
[INFO] [stdout]     |
[INFO] [stdout]     = help: trait `DerefMut` is required to modify through a dereference, but it is not implemented for `Pin<Box<SelfReferential>>`
[INFO] [stdout] 
[INFO] [stdout] error: aborting due to 1 previous error
[INFO] [stdout] 
[INFO] [stdout] For more information about this error, try `rustc --explain E0596`.
[INFO] [stdout] Couldn't compile the test.
[INFO] [stdout] ---- src/ch03/s2_async_await.rs - ch03::s2_async_await::e_generator (line 436) stdout ----
[INFO] [stdout] error[E0557]: feature has been removed
[INFO] [stdout]    --> src/ch03/s2_async_await.rs:438:12
[INFO] [stdout]     |
[INFO] [stdout] 438 | #![feature(generators, generator_trait)]
[INFO] [stdout]     |            ^^^^^^^^^^ feature has been removed
[INFO] [stdout]     |
[INFO] [stdout]     = note: removed in 1.75.0; see <https://github.com/rust-lang/rust/pull/116958> for more information
[INFO] [stdout]     = note: renamed to `coroutines`
[INFO] [stdout] 
[INFO] [stdout] error[E0432]: unresolved import `std::ops::Generator`
[INFO] [stdout]    --> src/ch03/s2_async_await.rs:442:5
[INFO] [stdout]     |
[INFO] [stdout] 442 | use std::ops::Generator;
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^ no `Generator` in `ops`
[INFO] [stdout] 
[INFO] [stdout] error[E0658]: yield syntax is experimental
[INFO] [stdout]    --> src/ch03/s2_async_await.rs:450:13
[INFO] [stdout]     |
[INFO] [stdout] 450 |             yield x;
[INFO] [stdout]     |             ^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: see issue #43122 <https://github.com/rust-lang/rust/issues/43122> for more information
[INFO] [stdout]     = help: add `#![feature(yield_expr)]` to the crate attributes to enable
[INFO] [stdout]     = note: this compiler was built on 2026-01-14; consider upgrading it if it is out of date
[INFO] [stdout] 
[INFO] [stdout] error[E0658]: yield syntax is experimental
[INFO] [stdout]    --> src/ch03/s2_async_await.rs:452:17
[INFO] [stdout]     |
[INFO] [stdout] 452 |                 yield *ref_a;
[INFO] [stdout]     |                 ^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: see issue #43122 <https://github.com/rust-lang/rust/issues/43122> for more information
[INFO] [stdout]     = help: add `#![feature(yield_expr)]` to the crate attributes to enable
[INFO] [stdout]     = note: this compiler was built on 2026-01-14; consider upgrading it if it is out of date
[INFO] [stdout] 
[INFO] [stdout] error[E0658]: yield syntax is experimental
[INFO] [stdout]    --> src/ch03/s2_async_await.rs:450:13
[INFO] [stdout]     |
[INFO] [stdout] 450 |             yield x;
[INFO] [stdout]     |             ^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: see issue #43122 <https://github.com/rust-lang/rust/issues/43122> for more information
[INFO] [stdout]     = help: add `#![feature(yield_expr)]` to the crate attributes to enable
[INFO] [stdout]     = note: this compiler was built on 2026-01-14; consider upgrading it if it is out of date
[INFO] [stdout] 
[INFO] [stdout] error: `yield` can only be used in `#[coroutine]` closures, or `gen` blocks
[INFO] [stdout]    --> src/ch03/s2_async_await.rs:450:13
[INFO] [stdout]     |
[INFO] [stdout] 450 |             yield x;
[INFO] [stdout]     |             ^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: use `#[coroutine]` to make this closure a coroutine
[INFO] [stdout]     |
[INFO] [stdout] 446 |     #[coroutine] move || {
[INFO] [stdout]     |     ++++++++++++
[INFO] [stdout] 
[INFO] [stdout] error[E0658]: yield syntax is experimental
[INFO] [stdout]    --> src/ch03/s2_async_await.rs:452:17
[INFO] [stdout]     |
[INFO] [stdout] 452 |                 yield *ref_a;
[INFO] [stdout]     |                 ^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: see issue #43122 <https://github.com/rust-lang/rust/issues/43122> for more information
[INFO] [stdout]     = help: add `#![feature(yield_expr)]` to the crate attributes to enable
[INFO] [stdout]     = note: this compiler was built on 2026-01-14; consider upgrading it if it is out of date
[INFO] [stdout] 
[INFO] [stdout] error[E0635]: unknown feature `generator_trait`
[INFO] [stdout]    --> src/ch03/s2_async_await.rs:438:24
[INFO] [stdout]     |
[INFO] [stdout] 438 | #![feature(generators, generator_trait)]
[INFO] [stdout]     |                        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] error: aborting due to 8 previous errors
[INFO] [stdout] 
[INFO] [stdout] Some errors have detailed explanations: E0432, E0557, E0635, E0658.
[INFO] [stdout] For more information about an error, try `rustc --explain E0432`.
[INFO] [stdout] Couldn't compile the test.
[INFO] [stdout] ---- src/ch03/s2_async_await.rs - ch03::s2_async_await::e_generator (line 371) stdout ----
[INFO] [stdout] error[E0557]: feature has been removed
[INFO] [stdout]    --> src/ch03/s2_async_await.rs:373:12
[INFO] [stdout]     |
[INFO] [stdout] 373 | #![feature(generators, generator_trait)]
[INFO] [stdout]     |            ^^^^^^^^^^ feature has been removed
[INFO] [stdout]     |
[INFO] [stdout]     = note: removed in 1.75.0; see <https://github.com/rust-lang/rust/pull/116958> for more information
[INFO] [stdout]     = note: renamed to `coroutines`
[INFO] [stdout] 
[INFO] [stdout] error[E0432]: unresolved imports `std::ops::Generator`, `std::ops::GeneratorState`
[INFO] [stdout]    --> src/ch03/s2_async_await.rs:378:16
[INFO] [stdout]     |
[INFO] [stdout] 378 | use std::ops::{Generator, GeneratorState};
[INFO] [stdout]     |                ^^^^^^^^^  ^^^^^^^^^^^^^^ no `GeneratorState` in `ops`
[INFO] [stdout]     |                |
[INFO] [stdout]     |                no `Generator` in `ops`
[INFO] [stdout] 
[INFO] [stdout] error[E0658]: yield syntax is experimental
[INFO] [stdout]    --> src/ch03/s2_async_await.rs:385:13
[INFO] [stdout]     |
[INFO] [stdout] 385 |             yield x;
[INFO] [stdout]     |             ^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: see issue #43122 <https://github.com/rust-lang/rust/issues/43122> for more information
[INFO] [stdout]     = help: add `#![feature(yield_expr)]` to the crate attributes to enable
[INFO] [stdout]     = note: this compiler was built on 2026-01-14; consider upgrading it if it is out of date
[INFO] [stdout] 
[INFO] [stdout] error[E0658]: yield syntax is experimental
[INFO] [stdout]    --> src/ch03/s2_async_await.rs:385:13
[INFO] [stdout]     |
[INFO] [stdout] 385 |             yield x;
[INFO] [stdout]     |             ^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: see issue #43122 <https://github.com/rust-lang/rust/issues/43122> for more information
[INFO] [stdout]     = help: add `#![feature(yield_expr)]` to the crate attributes to enable
[INFO] [stdout]     = note: this compiler was built on 2026-01-14; consider upgrading it if it is out of date
[INFO] [stdout] 
[INFO] [stdout] error: `yield` can only be used in `#[coroutine]` closures, or `gen` blocks
[INFO] [stdout]    --> src/ch03/s2_async_await.rs:385:13
[INFO] [stdout]     |
[INFO] [stdout] 385 |             yield x;
[INFO] [stdout]     |             ^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: use `#[coroutine]` to make this closure a coroutine
[INFO] [stdout]     |
[INFO] [stdout] 381 |     #[coroutine] move || {
[INFO] [stdout]     |     ++++++++++++
[INFO] [stdout] 
[INFO] [stdout] error[E0635]: unknown feature `generator_trait`
[INFO] [stdout]    --> src/ch03/s2_async_await.rs:373:24
[INFO] [stdout]     |
[INFO] [stdout] 373 | #![feature(generators, generator_trait)]
[INFO] [stdout]     |                        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] error: aborting due to 6 previous errors
[INFO] [stdout] 
[INFO] [stdout] Some errors have detailed explanations: E0432, E0557, E0635, E0658.
[INFO] [stdout] For more information about an error, try `rustc --explain E0432`.
[INFO] [stdout] Couldn't compile the test.
[INFO] [stdout] ---- src/ch03/s2_async_await.rs - ch03::s2_async_await::f_pin_unpin (line 957) stdout ----
[INFO] [stdout] error: this file contains an unclosed delimiter
[INFO] [stdout]    --> src/ch03/s2_async_await.rs:969:67
[INFO] [stdout]     |
[INFO] [stdout] 958 | impl<Fut, F> Map<Fut, F> {
[INFO] [stdout]     |                          - unclosed delimiter
[INFO] [stdout] ...
[INFO] [stdout] 964 |     fn poll (mut self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll<T> {
[INFO] [stdout]     |                                                                         - unclosed delimiter
[INFO] [stdout] 965 |         //                                          |   |
[INFO] [stdout] 966 |         match self.as_mut().future().poll(cx) { // <----+ required here
[INFO] [stdout]     |                                               - unclosed delimiter
[INFO] [stdout] 967 |             Poll::Pending => Poll::Pending, //      |
[INFO] [stdout] 968 |             Poll::Ready(output) => { //             |
[INFO] [stdout]     |                                    - unclosed delimiter
[INFO] [stdout] 969 |                 let f = self.f().take() // <--------+ allows this
[INFO] [stdout]     |                                                                  ^
[INFO] [stdout] 
[INFO] [stdout] error: aborting due to 1 previous error
[INFO] [stdout] 
[INFO] [stdout] Couldn't compile the test.
[INFO] [stdout] ---- src/ch03/s2_async_await.rs - ch03::s2_async_await::e_generator (line 576) stdout ----
[INFO] [stdout] error[E0557]: feature has been removed
[INFO] [stdout]    --> src/ch03/s2_async_await.rs:577:12
[INFO] [stdout]     |
[INFO] [stdout] 577 | #![feature(generators, generator_trait)]
[INFO] [stdout]     |            ^^^^^^^^^^ feature has been removed
[INFO] [stdout]     |
[INFO] [stdout]     = note: removed in 1.75.0; see <https://github.com/rust-lang/rust/pull/116958> for more information
[INFO] [stdout]     = note: renamed to `coroutines`
[INFO] [stdout] 
[INFO] [stdout] error[E0432]: unresolved imports `std::ops::Generator`, `std::ops::GeneratorState`
[INFO] [stdout]    --> src/ch03/s2_async_await.rs:579:16
[INFO] [stdout]     |
[INFO] [stdout] 579 | use std::ops::{Generator, GeneratorState};
[INFO] [stdout]     |                ^^^^^^^^^  ^^^^^^^^^^^^^^ no `GeneratorState` in `ops`
[INFO] [stdout]     |                |
[INFO] [stdout]     |                no `Generator` in `ops`
[INFO] [stdout] 
[INFO] [stdout] error[E0658]: yield syntax is experimental
[INFO] [stdout]    --> src/ch03/s2_async_await.rs:587:9
[INFO] [stdout]     |
[INFO] [stdout] 587 |         yield borrowed.len();
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: see issue #43122 <https://github.com/rust-lang/rust/issues/43122> for more information
[INFO] [stdout]     = help: add `#![feature(yield_expr)]` to the crate attributes to enable
[INFO] [stdout]     = note: this compiler was built on 2026-01-14; consider upgrading it if it is out of date
[INFO] [stdout] 
[INFO] [stdout] error[E0658]: yield syntax is experimental
[INFO] [stdout]    --> src/ch03/s2_async_await.rs:594:9
[INFO] [stdout]     |
[INFO] [stdout] 594 |         yield borrowed.len();
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: see issue #43122 <https://github.com/rust-lang/rust/issues/43122> for more information
[INFO] [stdout]     = help: add `#![feature(yield_expr)]` to the crate attributes to enable
[INFO] [stdout]     = note: this compiler was built on 2026-01-14; consider upgrading it if it is out of date
[INFO] [stdout] 
[INFO] [stdout] error[E0658]: coroutine syntax is experimental
[INFO] [stdout]    --> src/ch03/s2_async_await.rs:584:16
[INFO] [stdout]     |
[INFO] [stdout] 584 |     let gen1 = static || {
[INFO] [stdout]     |                ^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: see issue #43122 <https://github.com/rust-lang/rust/issues/43122> for more information
[INFO] [stdout]     = help: add `#![feature(coroutines)]` to the crate attributes to enable
[INFO] [stdout]     = note: this compiler was built on 2026-01-14; consider upgrading it if it is out of date
[INFO] [stdout] 
[INFO] [stdout] error[E0658]: coroutine syntax is experimental
[INFO] [stdout]    --> src/ch03/s2_async_await.rs:591:16
[INFO] [stdout]     |
[INFO] [stdout] 591 |     let gen2 = static || {
[INFO] [stdout]     |                ^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: see issue #43122 <https://github.com/rust-lang/rust/issues/43122> for more information
[INFO] [stdout]     = help: add `#![feature(coroutines)]` to the crate attributes to enable
[INFO] [stdout]     = note: this compiler was built on 2026-01-14; consider upgrading it if it is out of date
[INFO] [stdout] 
[INFO] [stdout] error[E0658]: yield syntax is experimental
[INFO] [stdout]    --> src/ch03/s2_async_await.rs:587:9
[INFO] [stdout]     |
[INFO] [stdout] 587 |         yield borrowed.len();
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: see issue #43122 <https://github.com/rust-lang/rust/issues/43122> for more information
[INFO] [stdout]     = help: add `#![feature(yield_expr)]` to the crate attributes to enable
[INFO] [stdout]     = note: this compiler was built on 2026-01-14; consider upgrading it if it is out of date
[INFO] [stdout] 
[INFO] [stdout] error: `yield` can only be used in `#[coroutine]` closures, or `gen` blocks
[INFO] [stdout]    --> src/ch03/s2_async_await.rs:587:9
[INFO] [stdout]     |
[INFO] [stdout] 587 |         yield borrowed.len();
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: use `#[coroutine]` to make this closure a coroutine
[INFO] [stdout]     |
[INFO] [stdout] 584 |     let gen1 = #[coroutine] static || {
[INFO] [stdout]     |                ++++++++++++
[INFO] [stdout] 
[INFO] [stdout] error[E0658]: yield syntax is experimental
[INFO] [stdout]    --> src/ch03/s2_async_await.rs:594:9
[INFO] [stdout]     |
[INFO] [stdout] 594 |         yield borrowed.len();
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: see issue #43122 <https://github.com/rust-lang/rust/issues/43122> for more information
[INFO] [stdout]     = help: add `#![feature(yield_expr)]` to the crate attributes to enable
[INFO] [stdout]     = note: this compiler was built on 2026-01-14; consider upgrading it if it is out of date
[INFO] [stdout] 
[INFO] [stdout] error: `yield` can only be used in `#[coroutine]` closures, or `gen` blocks
[INFO] [stdout]    --> src/ch03/s2_async_await.rs:594:9
[INFO] [stdout]     |
[INFO] [stdout] 594 |         yield borrowed.len();
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: use `#[coroutine]` to make this closure a coroutine
[INFO] [stdout]     |
[INFO] [stdout] 591 |     let gen2 = #[coroutine] static || {
[INFO] [stdout]     |                ++++++++++++
[INFO] [stdout] 
[INFO] [stdout] error[E0635]: unknown feature `generator_trait`
[INFO] [stdout]    --> src/ch03/s2_async_await.rs:577:24
[INFO] [stdout]     |
[INFO] [stdout] 577 | #![feature(generators, generator_trait)]
[INFO] [stdout]     |                        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no method named `resume` found for struct `Pin<&mut {static coroutine@src/ch03/s2_async_await.rs:10:16: 10:25}>` in the current scope
[INFO] [stdout]    --> src/ch03/s2_async_await.rs:601:58
[INFO] [stdout]     |
[INFO] [stdout] 601 |     if let GeneratorState::Yielded(n) = pinned1.as_mut().resume(()) {
[INFO] [stdout]     |                                                          ^^^^^^ method not found in `Pin<&mut {static coroutine@src/ch03/s2_async_await.rs:10:16: 10:25}>`
[INFO] [stdout]     |
[INFO] [stdout]    --> /rustc/bd7d74411512a3dd3b35d2f699c51dd2557c7e7e/library/core/src/ops/coroutine.rs:119:7
[INFO] [stdout]     |
[INFO] [stdout]     = note: the method is available for `Pin<&mut {static coroutine@src/ch03/s2_async_await.rs:10:16: 10:25}>` here
[INFO] [stdout]     |
[INFO] [stdout]     = help: items from traits can only be used if the trait is in scope
[INFO] [stdout] help: trait `Coroutine` which provides `resume` is implemented but not in scope; perhaps you want to import it
[INFO] [stdout]     |
[INFO] [stdout] 579 + use std::ops::Coroutine;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no method named `resume` found for struct `Pin<&mut {static coroutine@src/ch03/s2_async_await.rs:17:16: 17:25}>` in the current scope
[INFO] [stdout]    --> src/ch03/s2_async_await.rs:605:58
[INFO] [stdout]     |
[INFO] [stdout] 605 |     if let GeneratorState::Yielded(n) = pinned2.as_mut().resume(()) {
[INFO] [stdout]     |                                                          ^^^^^^ method not found in `Pin<&mut {static coroutine@src/ch03/s2_async_await.rs:17:16: 17:25}>`
[INFO] [stdout]     |
[INFO] [stdout]    --> /rustc/bd7d74411512a3dd3b35d2f699c51dd2557c7e7e/library/core/src/ops/coroutine.rs:119:7
[INFO] [stdout]     |
[INFO] [stdout]     = note: the method is available for `Pin<&mut {static coroutine@src/ch03/s2_async_await.rs:17:16: 17:25}>` here
[INFO] [stdout]     |
[INFO] [stdout]     = help: items from traits can only be used if the trait is in scope
[INFO] [stdout] help: trait `Coroutine` which provides `resume` is implemented but not in scope; perhaps you want to import it
[INFO] [stdout]     |
[INFO] [stdout] 579 + use std::ops::Coroutine;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no method named `resume` found for struct `Pin<&mut {static coroutine@src/ch03/s2_async_await.rs:10:16: 10:25}>` in the current scope
[INFO] [stdout]    --> src/ch03/s2_async_await.rs:609:30
[INFO] [stdout]     |
[INFO] [stdout] 609 |     let _ = pinned1.as_mut().resume(());
[INFO] [stdout]     |                              ^^^^^^ method not found in `Pin<&mut {static coroutine@src/ch03/s2_async_await.rs:10:16: 10:25}>`
[INFO] [stdout]     |
[INFO] [stdout]    --> /rustc/bd7d74411512a3dd3b35d2f699c51dd2557c7e7e/library/core/src/ops/coroutine.rs:119:7
[INFO] [stdout]     |
[INFO] [stdout]     = note: the method is available for `Pin<&mut {static coroutine@src/ch03/s2_async_await.rs:10:16: 10:25}>` here
[INFO] [stdout]     |
[INFO] [stdout]     = help: items from traits can only be used if the trait is in scope
[INFO] [stdout] help: trait `Coroutine` which provides `resume` is implemented but not in scope; perhaps you want to import it
[INFO] [stdout]     |
[INFO] [stdout] 579 + use std::ops::Coroutine;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no method named `resume` found for struct `Pin<&mut {static coroutine@src/ch03/s2_async_await.rs:17:16: 17:25}>` in the current scope
[INFO] [stdout]    --> src/ch03/s2_async_await.rs:610:30
[INFO] [stdout]     |
[INFO] [stdout] 610 |     let _ = pinned2.as_mut().resume(());
[INFO] [stdout]     |                              ^^^^^^ method not found in `Pin<&mut {static coroutine@src/ch03/s2_async_await.rs:17:16: 17:25}>`
[INFO] [stdout]     |
[INFO] [stdout]    --> /rustc/bd7d74411512a3dd3b35d2f699c51dd2557c7e7e/library/core/src/ops/coroutine.rs:119:7
[INFO] [stdout]     |
[INFO] [stdout]     = note: the method is available for `Pin<&mut {static coroutine@src/ch03/s2_async_await.rs:17:16: 17:25}>` here
[INFO] [stdout]     |
[INFO] [stdout]     = help: items from traits can only be used if the trait is in scope
[INFO] [stdout] help: trait `Coroutine` which provides `resume` is implemented but not in scope; perhaps you want to import it
[INFO] [stdout]     |
[INFO] [stdout] 579 + use std::ops::Coroutine;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] error: aborting due to 15 previous errors
[INFO] [stdout] 
[INFO] [stdout] Some errors have detailed explanations: E0432, E0557, E0599, E0635, E0658.
[INFO] [stdout] For more information about an error, try `rustc --explain E0432`.
[INFO] [stdout] Couldn't compile the test.
[INFO] [stdout] ---- src/ch03/s2_async_await.rs - ch03::s2_async_await::e_generator (line 471) stdout ----
[INFO] [stdout] error[E0557]: feature has been removed
[INFO] [stdout]    --> src/ch03/s2_async_await.rs:472:12
[INFO] [stdout]     |
[INFO] [stdout] 472 | #![feature(generators, generator_trait)]
[INFO] [stdout]     |            ^^^^^^^^^^ feature has been removed
[INFO] [stdout]     |
[INFO] [stdout]     = note: removed in 1.75.0; see <https://github.com/rust-lang/rust/pull/116958> for more information
[INFO] [stdout]     = note: renamed to `coroutines`
[INFO] [stdout] 
[INFO] [stdout] error[E0432]: unresolved import `std::ops::Generator`
[INFO] [stdout]    --> src/ch03/s2_async_await.rs:474:5
[INFO] [stdout]     |
[INFO] [stdout] 474 | use std::ops::Generator;
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^ no `Generator` in `ops`
[INFO] [stdout] 
[INFO] [stdout] error[E0658]: yield syntax is experimental
[INFO] [stdout]    --> src/ch03/s2_async_await.rs:481:9
[INFO] [stdout]     |
[INFO] [stdout] 481 |         yield borrowed.len();
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: see issue #43122 <https://github.com/rust-lang/rust/issues/43122> for more information
[INFO] [stdout]     = help: add `#![feature(yield_expr)]` to the crate attributes to enable
[INFO] [stdout]     = note: this compiler was built on 2026-01-14; consider upgrading it if it is out of date
[INFO] [stdout] 
[INFO] [stdout] error: unused import: `std::pin::Pin`
[INFO] [stdout]    --> src/ch03/s2_async_await.rs:475:5
[INFO] [stdout]     |
[INFO] [stdout] 475 | use std::pin::Pin;
[INFO] [stdout]     |     ^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] note: the lint level is defined here
[INFO] [stdout]    --> src/ch03/s2_async_await.rs:470:9
[INFO] [stdout]     |
[INFO] [stdout] 470 | #![deny(warnings)]
[INFO] [stdout]     |         ^^^^^^^^
[INFO] [stdout]     = note: `#[deny(unused_imports)]` implied by `#[deny(warnings)]`
[INFO] [stdout] 
[INFO] [stdout] error[E0658]: yield syntax is experimental
[INFO] [stdout]    --> src/ch03/s2_async_await.rs:481:9
[INFO] [stdout]     |
[INFO] [stdout] 481 |         yield borrowed.len();
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: see issue #43122 <https://github.com/rust-lang/rust/issues/43122> for more information
[INFO] [stdout]     = help: add `#![feature(yield_expr)]` to the crate attributes to enable
[INFO] [stdout]     = note: this compiler was built on 2026-01-14; consider upgrading it if it is out of date
[INFO] [stdout] 
[INFO] [stdout] error: `yield` can only be used in `#[coroutine]` closures, or `gen` blocks
[INFO] [stdout]    --> src/ch03/s2_async_await.rs:481:9
[INFO] [stdout]     |
[INFO] [stdout] 481 |         yield borrowed.len();
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: use `#[coroutine]` to make this closure a coroutine
[INFO] [stdout]     |
[INFO] [stdout] 477 |     let mut generator = #[coroutine] move || {
[INFO] [stdout]     |                         ++++++++++++
[INFO] [stdout] 
[INFO] [stdout] error[E0635]: unknown feature `generator_trait`
[INFO] [stdout]    --> src/ch03/s2_async_await.rs:472:24
[INFO] [stdout]     |
[INFO] [stdout] 472 | #![feature(generators, generator_trait)]
[INFO] [stdout]     |                        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] error[E0626]: borrow may still be in use when coroutine yields
[INFO] [stdout]    --> src/ch03/s2_async_await.rs:479:24
[INFO] [stdout]     |
[INFO] [stdout] 477 |     let mut generator = move || {
[INFO] [stdout]     |                         ------- within this coroutine
[INFO] [stdout] 478 |         let to_borrow = String::from("Hello");
[INFO] [stdout] 479 |         let borrowed = &to_borrow;
[INFO] [stdout]     |                        ^^^^^^^^^^
[INFO] [stdout] 480 |         // error[E0626]: borrow may still be in use when generator yields
[INFO] [stdout] 481 |         yield borrowed.len();
[INFO] [stdout]     |         -------------------- possible yield occurs here
[INFO] [stdout]     |
[INFO] [stdout] help: add `static` to mark this coroutine as unmovable
[INFO] [stdout]     |
[INFO] [stdout] 477 |     let mut generator = static move || {
[INFO] [stdout]     |                         ++++++
[INFO] [stdout] 
[INFO] [stdout] error: aborting due to 8 previous errors
[INFO] [stdout] 
[INFO] [stdout] Some errors have detailed explanations: E0432, E0557, E0626, E0635, E0658.
[INFO] [stdout] For more information about an error, try `rustc --explain E0432`.
[INFO] [stdout] Couldn't compile the test.
[INFO] [stdout] ---- src/ch03/s2_async_await.rs - ch03::s2_async_await::f_pin_unpin (line 790) stdout ----
[INFO] [stdout] error[E0599]: no method named `get_mut` found for struct `Pin<Box<SelfReferential>>` in the current scope
[INFO] [stdout]    --> src/ch03/s2_async_await.rs:829:24
[INFO] [stdout]     |
[INFO] [stdout] 829 |     std::mem::swap(sf1.get_mut(), sf1.get_mut());
[INFO] [stdout]     |                        ^^^^^^^ method not found in `Pin<Box<SelfReferential>>`
[INFO] [stdout]     |
[INFO] [stdout] note: method is available for `Pin<&mut Box<SelfReferential>>`
[INFO] [stdout]    --> /rustc/bd7d74411512a3dd3b35d2f699c51dd2557c7e7e/library/core/src/pin.rs:1598:4
[INFO] [stdout]     = note: the method was found for
[INFO] [stdout]             - `Pin<&'a mut T>`
[INFO] [stdout]     = help: items from traits can only be used if the trait is implemented and in scope
[INFO] [stdout]     = note: the following trait defines an item `get_mut`, perhaps you need to implement it:
[INFO] [stdout]             candidate #1: `SliceIndex`
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no method named `get_mut` found for struct `Pin<Box<SelfReferential>>` in the current scope
[INFO] [stdout]    --> src/ch03/s2_async_await.rs:829:39
[INFO] [stdout]     |
[INFO] [stdout] 829 |     std::mem::swap(sf1.get_mut(), sf1.get_mut());
[INFO] [stdout]     |                                       ^^^^^^^ method not found in `Pin<Box<SelfReferential>>`
[INFO] [stdout]     |
[INFO] [stdout] note: method is available for `Pin<&mut Box<SelfReferential>>`
[INFO] [stdout]    --> /rustc/bd7d74411512a3dd3b35d2f699c51dd2557c7e7e/library/core/src/pin.rs:1598:4
[INFO] [stdout]     = note: the method was found for
[INFO] [stdout]             - `Pin<&'a mut T>`
[INFO] [stdout]     = help: items from traits can only be used if the trait is implemented and in scope
[INFO] [stdout]     = note: the following trait defines an item `get_mut`, perhaps you need to implement it:
[INFO] [stdout]             candidate #1: `SliceIndex`
[INFO] [stdout] 
[INFO] [stdout] error: aborting due to 2 previous errors
[INFO] [stdout] 
[INFO] [stdout] For more information about this error, try `rustc --explain E0599`.
[INFO] [stdout] Couldn't compile the test.
[INFO] [stdout] ---- src/ch03/s2_async_await.rs - ch03::s2_async_await::f_pin_unpin (line 885) stdout ----
[INFO] [stdout] error[E0405]: cannot find trait `Generator` in this scope
[INFO] [stdout]    --> src/ch03/s2_async_await.rs:889:8
[INFO] [stdout]     |
[INFO] [stdout] 889 |     T: Generator<ResumeTy, Yield = ()>,
[INFO] [stdout]     |        ^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]    --> /rustc/bd7d74411512a3dd3b35d2f699c51dd2557c7e7e/library/core/src/iter/traits/iterator.rs:40:0
[INFO] [stdout]     |
[INFO] [stdout]     = note: similarly named trait `Iterator` defined here
[INFO] [stdout] help: a trait with a similar name exists
[INFO] [stdout]     |
[INFO] [stdout] 889 -     T: Generator<ResumeTy, Yield = ()>,
[INFO] [stdout] 889 +     T: Iterator<ResumeTy, Yield = ()>,
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find type `ResumeTy` in this scope
[INFO] [stdout]    --> src/ch03/s2_async_await.rs:889:18
[INFO] [stdout]     |
[INFO] [stdout] 889 |     T: Generator<ResumeTy, Yield = ()>,
[INFO] [stdout]     |                  ^^^^^^^^ not found in this scope
[INFO] [stdout] 
[INFO] [stdout] error[E0405]: cannot find trait `Future` in this scope
[INFO] [stdout]    --> src/ch03/s2_async_await.rs:887:48
[INFO] [stdout]     |
[INFO] [stdout] 887 | pub const fn from_generator<T>(gen: T) -> impl Future<Output = T::Return>
[INFO] [stdout]     |                                                ^^^^^^ not found in this scope
[INFO] [stdout]     |
[INFO] [stdout] help: consider importing this trait
[INFO] [stdout]     |
[INFO] [stdout] 885 + use std::future::Future;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] error[E0405]: cannot find trait `Generator` in this scope
[INFO] [stdout]    --> src/ch03/s2_async_await.rs:892:25
[INFO] [stdout]     |
[INFO] [stdout] 892 |     struct GenFuture<T: Generator<ResumeTy, Yield = ()>>(T);
[INFO] [stdout]     |                         ^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]    --> /rustc/bd7d74411512a3dd3b35d2f699c51dd2557c7e7e/library/core/src/iter/traits/iterator.rs:40:0
[INFO] [stdout]     |
[INFO] [stdout]     = note: similarly named trait `Iterator` defined here
[INFO] [stdout] help: a trait with a similar name exists
[INFO] [stdout]     |
[INFO] [stdout] 892 -     struct GenFuture<T: Generator<ResumeTy, Yield = ()>>(T);
[INFO] [stdout] 892 +     struct GenFuture<T: Iterator<ResumeTy, Yield = ()>>(T);
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find type `ResumeTy` in this scope
[INFO] [stdout]    --> src/ch03/s2_async_await.rs:892:35
[INFO] [stdout]     |
[INFO] [stdout] 892 |     struct GenFuture<T: Generator<ResumeTy, Yield = ()>>(T);
[INFO] [stdout]     |                                   ^^^^^^^^ not found in this scope
[INFO] [stdout] 
[INFO] [stdout] error[E0405]: cannot find trait `Generator` in this scope
[INFO] [stdout]    --> src/ch03/s2_async_await.rs:896:13
[INFO] [stdout]     |
[INFO] [stdout] 896 |     impl<T: Generator<ResumeTy, Yield = ()>> !Unpin for GenFuture<T> {}
[INFO] [stdout]     |             ^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]    --> /rustc/bd7d74411512a3dd3b35d2f699c51dd2557c7e7e/library/core/src/iter/traits/iterator.rs:40:0
[INFO] [stdout]     |
[INFO] [stdout]     = note: similarly named trait `Iterator` defined here
[INFO] [stdout] help: a trait with a similar name exists
[INFO] [stdout]     |
[INFO] [stdout] 896 -     impl<T: Generator<ResumeTy, Yield = ()>> !Unpin for GenFuture<T> {}
[INFO] [stdout] 896 +     impl<T: Iterator<ResumeTy, Yield = ()>> !Unpin for GenFuture<T> {}
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find type `ResumeTy` in this scope
[INFO] [stdout]    --> src/ch03/s2_async_await.rs:896:23
[INFO] [stdout]     |
[INFO] [stdout] 896 |     impl<T: Generator<ResumeTy, Yield = ()>> !Unpin for GenFuture<T> {}
[INFO] [stdout]     |                       ^^^^^^^^ not found in this scope
[INFO] [stdout] 
[INFO] [stdout] error[E0405]: cannot find trait `Future` in this scope
[INFO] [stdout]    --> src/ch03/s2_async_await.rs:898:46
[INFO] [stdout]     |
[INFO] [stdout] 898 |     impl<T: Generator<ResumeTy, Yield = ()>> Future for GenFuture<T> {
[INFO] [stdout]     |                                              ^^^^^^ not found in this scope
[INFO] [stdout]     |
[INFO] [stdout] help: consider importing this trait
[INFO] [stdout]     |
[INFO] [stdout] 885 + use std::future::Future;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] error[E0405]: cannot find trait `Generator` in this scope
[INFO] [stdout]    --> src/ch03/s2_async_await.rs:898:13
[INFO] [stdout]     |
[INFO] [stdout] 898 |     impl<T: Generator<ResumeTy, Yield = ()>> Future for GenFuture<T> {
[INFO] [stdout]     |             ^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]    --> /rustc/bd7d74411512a3dd3b35d2f699c51dd2557c7e7e/library/core/src/iter/traits/iterator.rs:40:0
[INFO] [stdout]     |
[INFO] [stdout]     = note: similarly named trait `Iterator` defined here
[INFO] [stdout] help: a trait with a similar name exists
[INFO] [stdout]     |
[INFO] [stdout] 898 -     impl<T: Generator<ResumeTy, Yield = ()>> Future for GenFuture<T> {
[INFO] [stdout] 898 +     impl<T: Iterator<ResumeTy, Yield = ()>> Future for GenFuture<T> {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find type `ResumeTy` in this scope
[INFO] [stdout]    --> src/ch03/s2_async_await.rs:898:23
[INFO] [stdout]     |
[INFO] [stdout] 898 |     impl<T: Generator<ResumeTy, Yield = ()>> Future for GenFuture<T> {
[INFO] [stdout]     |                       ^^^^^^^^ not found in this scope
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find type `Pin` in this scope
[INFO] [stdout]    --> src/ch03/s2_async_await.rs:900:23
[INFO] [stdout]     |
[INFO] [stdout] 900 |         fn poll(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll<Self::Output> {
[INFO] [stdout]     |                       ^^^ not found in this scope
[INFO] [stdout]     |
[INFO] [stdout] help: consider importing this struct
[INFO] [stdout]     |
[INFO] [stdout] 885 + use std::pin::Pin;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find type `Context` in this scope
[INFO] [stdout]    --> src/ch03/s2_async_await.rs:900:48
[INFO] [stdout]     |
[INFO] [stdout] 900 |         fn poll(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll<Self::Output> {
[INFO] [stdout]     |                                                ^^^^^^^ not found in this scope
[INFO] [stdout]     |
[INFO] [stdout] help: consider importing this struct
[INFO] [stdout]     |
[INFO] [stdout] 885 + use std::task::Context;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find type `Poll` in this scope
[INFO] [stdout]    --> src/ch03/s2_async_await.rs:900:64
[INFO] [stdout]     |
[INFO] [stdout] 900 |         fn poll(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll<Self::Output> {
[INFO] [stdout]     |                                                                ^^^^ not found in this scope
[INFO] [stdout]     |
[INFO] [stdout] help: consider importing this enum
[INFO] [stdout]     |
[INFO] [stdout] 885 + use std::task::Poll;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] error[E0433]: failed to resolve: use of undeclared type `Pin`
[INFO] [stdout]    --> src/ch03/s2_async_await.rs:902:32
[INFO] [stdout]     |
[INFO] [stdout] 902 |             let gen = unsafe { Pin::map_unchecked_mut(self, |s| &mut s.0) };
[INFO] [stdout]     |                                ^^^ use of undeclared type `Pin`
[INFO] [stdout]     |
[INFO] [stdout] help: consider importing this struct
[INFO] [stdout]     |
[INFO] [stdout] 885 + use std::pin::Pin;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] error[E0433]: failed to resolve: use of undeclared type `NonNull`
[INFO] [stdout]    --> src/ch03/s2_async_await.rs:907:39
[INFO] [stdout]     |
[INFO] [stdout] 907 |             match gen.resume(ResumeTy(NonNull::from(cx).cast::<Context<'static>>())) {
[INFO] [stdout]     |                                       ^^^^^^^ use of undeclared type `NonNull`
[INFO] [stdout]     |
[INFO] [stdout] help: consider importing this struct
[INFO] [stdout]     |
[INFO] [stdout] 885 + use std::ptr::NonNull;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find type `Context` in this scope
[INFO] [stdout]    --> src/ch03/s2_async_await.rs:907:64
[INFO] [stdout]     |
[INFO] [stdout] 907 |             match gen.resume(ResumeTy(NonNull::from(cx).cast::<Context<'static>>())) {
[INFO] [stdout]     |                                                                ^^^^^^^ not found in this scope
[INFO] [stdout]     |
[INFO] [stdout] help: consider importing this struct
[INFO] [stdout]     |
[INFO] [stdout] 885 + use std::task::Context;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] error[E0433]: failed to resolve: use of undeclared type `Poll`
[INFO] [stdout]    --> src/ch03/s2_async_await.rs:908:48
[INFO] [stdout]     |
[INFO] [stdout] 908 |                 GeneratorState::Yielded(()) => Poll::Pending,
[INFO] [stdout]     |                                                ^^^^ use of undeclared type `Poll`
[INFO] [stdout]     |
[INFO] [stdout] help: consider importing this enum
[INFO] [stdout]     |
[INFO] [stdout] 885 + use std::task::Poll;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] error[E0433]: failed to resolve: use of undeclared type `Poll`
[INFO] [stdout]    --> src/ch03/s2_async_await.rs:909:48
[INFO] [stdout]     |
[INFO] [stdout] 909 |                 GeneratorState::Complete(x) => Poll::Ready(x),
[INFO] [stdout]     |                                                ^^^^ use of undeclared type `Poll`
[INFO] [stdout]     |
[INFO] [stdout] help: consider importing this enum
[INFO] [stdout]     |
[INFO] [stdout] 885 + use std::task::Poll;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] error[E0658]: use of an internal attribute
[INFO] [stdout]    --> src/ch03/s2_async_await.rs:891:5
[INFO] [stdout]     |
[INFO] [stdout] 891 |     #[rustc_diagnostic_item = "gen_future"]
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: add `#![feature(rustc_attrs)]` to the crate attributes to enable
[INFO] [stdout]     = note: the `#[rustc_diagnostic_item]` attribute allows the compiler to reference types from the standard library for diagnostic purposes
[INFO] [stdout] 
[INFO] [stdout] error[E0658]: negative trait bounds are not fully implemented; use marker types for now
[INFO] [stdout]    --> src/ch03/s2_async_await.rs:896:46
[INFO] [stdout]     |
[INFO] [stdout] 896 |     impl<T: Generator<ResumeTy, Yield = ()>> !Unpin for GenFuture<T> {}
[INFO] [stdout]     |                                              ^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: see issue #68318 <https://github.com/rust-lang/rust/issues/68318> for more information
[INFO] [stdout]     = help: add `#![feature(negative_impls)]` to the crate attributes to enable
[INFO] [stdout]     = note: this compiler was built on 2026-01-14; consider upgrading it if it is out of date
[INFO] [stdout] 
[INFO] [stdout] error[E0433]: failed to resolve: use of undeclared type `GeneratorState`
[INFO] [stdout]    --> src/ch03/s2_async_await.rs:908:17
[INFO] [stdout]     |
[INFO] [stdout] 908 |                 GeneratorState::Yielded(()) => Poll::Pending,
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^ use of undeclared type `GeneratorState`
[INFO] [stdout] 
[INFO] [stdout] error[E0433]: failed to resolve: use of undeclared type `GeneratorState`
[INFO] [stdout]    --> src/ch03/s2_async_await.rs:909:17
[INFO] [stdout]     |
[INFO] [stdout] 909 |                 GeneratorState::Complete(x) => Poll::Ready(x),
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^ use of undeclared type `GeneratorState`
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find function, tuple struct or tuple variant `ResumeTy` in this scope
[INFO] [stdout]    --> src/ch03/s2_async_await.rs:907:30
[INFO] [stdout]     |
[INFO] [stdout] 907 |             match gen.resume(ResumeTy(NonNull::from(cx).cast::<Context<'static>>())) {
[INFO] [stdout]     |                              ^^^^^^^^ not found in this scope
[INFO] [stdout] 
[INFO] [stdout] error: aborting due to 23 previous errors
[INFO] [stdout] 
[INFO] [stdout] Some errors have detailed explanations: E0405, E0425, E0433, E0658.
[INFO] [stdout] For more information about an error, try `rustc --explain E0405`.
[INFO] [stdout] Couldn't compile the test.
[INFO] [stdout] 
[INFO] [stdout] failures:
[INFO] [stdout]     src/ch01/ctfe.rs - ch01::ctfe::array_chunk_show (line 299)
[INFO] [stdout]     src/ch01/ctfe.rs - ch01::ctfe::const_fn_error (line 122)
[INFO] [stdout]     src/ch01/ctfe.rs - ch01::ctfe::const_generic_show (line 241)
[INFO] [stdout]     src/ch01/ctfe.rs - ch01::ctfe::if_while_true (line 205)
[INFO] [stdout]     src/ch01/ctfe.rs - ch01::ctfe::mir_show (line 186)
[INFO] [stdout]     src/ch01/ctfe.rs - ch01::ctfe::must_const_expr (line 10)
[INFO] [stdout]     src/ch01/ctfe.rs - ch01::ctfe::others_const_fn (line 168)
[INFO] [stdout]     src/ch01/expr.rs - ch01::expr::semi_and_block_expr (line 50)
[INFO] [stdout]     src/ch01/lexical.rs - ch01::lexical::outer_module (line 133)
[INFO] [stdout]     src/ch01/lexical.rs - ch01::lexical::path_show (line 86)
[INFO] [stdout]     src/ch02/s1_ownership.rs - ch02::s1_ownership::custom_types (line 90)
[INFO] [stdout]     src/ch02/s1_ownership.rs - ch02::s1_ownership::understand_copy (line 212)
[INFO] [stdout]     src/ch02/s1_ownership.rs - ch02::s1_ownership::understand_drop (line 356)
[INFO] [stdout]     src/ch02/s1_ownership.rs - ch02::s1_ownership::understand_drop (line 402)
[INFO] [stdout]     src/ch02/s1_ownership.rs - ch02::s1_ownership::understand_drop (line 419)
[INFO] [stdout]     src/ch02/s1_ownership.rs - ch02::s1_ownership::understand_drop (line 439)
[INFO] [stdout]     src/ch02/s1_ownership.rs - ch02::s1_ownership::understand_move (line 280)
[INFO] [stdout]     src/ch02/s2_lifetime.rs - ch02::s2_lifetime::understand_lifetime (line 100)
[INFO] [stdout]     src/ch02/s2_lifetime.rs - ch02::s2_lifetime::understand_lifetime (line 117)
[INFO] [stdout]     src/ch02/s2_lifetime.rs - ch02::s2_lifetime::understand_lifetime (line 68)
[INFO] [stdout]     src/ch02/s2_lifetime.rs - ch02::s2_lifetime::understand_lifetime (line 84)
[INFO] [stdout]     src/ch02/s2_lifetime.rs - ch02::s2_lifetime::understand_lifetime_early_late_bound (line 143)
[INFO] [stdout]     src/ch02/s2_lifetime.rs - ch02::s2_lifetime::understand_lifetime_early_late_bound (line 194)
[INFO] [stdout]     src/ch02/s2_lifetime.rs - ch02::s2_lifetime::understand_lifetime_for_closure (line 236)
[INFO] [stdout]     src/ch02/s2_lifetime.rs - ch02::s2_lifetime::understand_lifetime_hrtb (line 402)
[INFO] [stdout]     src/ch02/s2_lifetime.rs - ch02::s2_lifetime::understand_lifetime_hrtb (line 424)
[INFO] [stdout]     src/ch02/s2_lifetime.rs - ch02::s2_lifetime::understand_lifetime_hrtb (line 447)
[INFO] [stdout]     src/ch02/s2_lifetime.rs - ch02::s2_lifetime::understand_lifetime_in_generic_type (line 306)
[INFO] [stdout]     src/ch02/s2_lifetime.rs - ch02::s2_lifetime::understand_nll (line 30)
[INFO] [stdout]     src/ch02/s3_thread_safe.rs - ch02::s3_thread_safe::understand_channel_and_condvar (line 250)
[INFO] [stdout]     src/ch02/s3_thread_safe.rs - ch02::s3_thread_safe::understand_channel_and_condvar (line 355)
[INFO] [stdout]     src/ch02/s3_thread_safe.rs - ch02::s3_thread_safe::understand_channel_and_condvar (line 462)
[INFO] [stdout]     src/ch02/s3_thread_safe.rs - ch02::s3_thread_safe::understand_channel_and_condvar (line 573)
[INFO] [stdout]     src/ch02/s3_thread_safe.rs - ch02::s3_thread_safe::understand_channel_and_condvar (line 756)
[INFO] [stdout]     src/ch02/s3_thread_safe.rs - ch02::s3_thread_safe::understand_channel_and_condvar (line 974)
[INFO] [stdout]     src/ch02/s3_thread_safe.rs - ch02::s3_thread_safe::understand_shared_thread (line 128)
[INFO] [stdout]     src/ch02/s3_thread_safe.rs - ch02::s3_thread_safe::understand_shared_thread (line 150)
[INFO] [stdout]     src/ch02/s3_thread_safe.rs - ch02::s3_thread_safe::understand_shared_thread (line 61)
[INFO] [stdout]     src/ch02/s3_thread_safe.rs - ch02::s3_thread_safe::understand_shared_thread (line 77)
[INFO] [stdout]     src/ch02/s5_trait_and_generic.rs - ch02::s5_trait_and_generic::blanket_impls (line 633)
[INFO] [stdout]     src/ch02/s5_trait_and_generic.rs - ch02::s5_trait_and_generic::blanket_impls (line 660)
[INFO] [stdout]     src/ch02/s5_trait_and_generic.rs - ch02::s5_trait_and_generic::blanket_impls (line 674)
[INFO] [stdout]     src/ch02/s5_trait_and_generic.rs - ch02::s5_trait_and_generic::object_safety (line 377)
[INFO] [stdout]     src/ch02/s5_trait_and_generic.rs - ch02::s5_trait_and_generic::object_safety (line 402)
[INFO] [stdout]     src/ch02/s5_trait_and_generic.rs - ch02::s5_trait_and_generic::trait_concept (line 41)
[INFO] [stdout]     src/ch02/s5_trait_and_generic.rs - ch02::s5_trait_and_generic::trait_concept (line 78)
[INFO] [stdout]     src/ch02/s5_trait_and_generic.rs - ch02::s5_trait_and_generic::trait_dyn_dispatch (line 114)
[INFO] [stdout]     src/ch02/s5_trait_and_generic.rs - ch02::s5_trait_and_generic::trait_object (line 193)
[INFO] [stdout]     src/ch02/s5_trait_and_generic.rs - ch02::s5_trait_and_generic::trait_object (line 224)
[INFO] [stdout]     src/ch02/s5_trait_and_generic.rs - ch02::s5_trait_and_generic::trait_object (line 337)
[INFO] [stdout]     src/ch02/s5_trait_and_generic.rs - ch02::s5_trait_and_generic::trait_object_to_enum (line 530)
[INFO] [stdout]     src/ch02/s5_trait_and_generic.rs - ch02::s5_trait_and_generic::trait_self_sized_bound (line 741)
[INFO] [stdout]     src/ch02/s5_trait_and_generic.rs - ch02::s5_trait_and_generic::trait_self_sized_bound (line 835)
[INFO] [stdout]     src/ch02/s6_paradigms.rs - ch02::s6_paradigms::compiler_oriented_programming (line 140)
[INFO] [stdout]     src/ch02/s6_paradigms.rs - ch02::s6_paradigms::compiler_oriented_programming (line 21)
[INFO] [stdout]     src/ch02/s6_paradigms.rs - ch02::s6_paradigms::compiler_oriented_programming (line 28)
[INFO] [stdout]     src/ch02/s6_paradigms.rs - ch02::s6_paradigms::compiler_oriented_programming (line 43)
[INFO] [stdout]     src/ch02/s7_error_handle.rs - ch02::s7_error_handle::elim_failure (line 17)
[INFO] [stdout]     src/ch02/s7_error_handle.rs - ch02::s7_error_handle::elim_failure (line 28)
[INFO] [stdout]     src/ch02/s7_error_handle.rs - ch02::s7_error_handle::error_handle (line 85)
[INFO] [stdout]     src/ch02/s8_metaprogramming.rs - ch02::s8_metaprogramming::any_refection (line 31)
[INFO] [stdout]     src/ch02/s8_metaprogramming.rs - ch02::s8_metaprogramming::any_refection (line 75)
[INFO] [stdout]     src/ch02/s8_metaprogramming.rs - ch02::s8_metaprogramming::any_refection (line 88)
[INFO] [stdout]     src/ch02/s8_metaprogramming.rs - ch02::s8_metaprogramming::declarative_macros (line 295)
[INFO] [stdout]     src/ch02/s8_metaprogramming.rs - ch02::s8_metaprogramming::derive_proc_macros (line 324)
[INFO] [stdout]     src/ch02/s9_unsafe_rust.rs - ch02::s9_unsafe_rust::security_abstract (line 120)
[INFO] [stdout]     src/ch02/s9_unsafe_rust.rs - ch02::s9_unsafe_rust::security_abstract (line 145)
[INFO] [stdout]     src/ch02/s9_unsafe_rust.rs - ch02::s9_unsafe_rust::security_abstract (line 460)
[INFO] [stdout]     src/ch02/s9_unsafe_rust.rs - ch02::s9_unsafe_rust::security_abstract (line 502)
[INFO] [stdout]     src/ch02/s9_unsafe_rust.rs - ch02::s9_unsafe_rust::security_abstract (line 541)
[INFO] [stdout]     src/ch02/s9_unsafe_rust.rs - ch02::s9_unsafe_rust::unsafe_intro (line 22)
[INFO] [stdout]     src/ch02/s9_unsafe_rust.rs - ch02::s9_unsafe_rust::unsafe_intro (line 69)
[INFO] [stdout]     src/ch03/s2_async_await.rs - ch03::s2_async_await::a_async_intro (line 70)
[INFO] [stdout]     src/ch03/s2_async_await.rs - ch03::s2_async_await::a_async_intro (line 84)
[INFO] [stdout]     src/ch03/s2_async_await.rs - ch03::s2_async_await::e_generator (line 219)
[INFO] [stdout]     src/ch03/s2_async_await.rs - ch03::s2_async_await::e_generator (line 240)
[INFO] [stdout]     src/ch03/s2_async_await.rs - ch03::s2_async_await::e_generator (line 273)
[INFO] [stdout]     src/ch03/s2_async_await.rs - ch03::s2_async_await::e_generator (line 340)
[INFO] [stdout]     src/ch03/s2_async_await.rs - ch03::s2_async_await::e_generator (line 371)
[INFO] [stdout]     src/ch03/s2_async_await.rs - ch03::s2_async_await::e_generator (line 403)
[INFO] [stdout]     src/ch03/s2_async_await.rs - ch03::s2_async_await::e_generator (line 436)
[INFO] [stdout]     src/ch03/s2_async_await.rs - ch03::s2_async_await::e_generator (line 471)
[INFO] [stdout]     src/ch03/s2_async_await.rs - ch03::s2_async_await::e_generator (line 576)
[INFO] [stdout]     src/ch03/s2_async_await.rs - ch03::s2_async_await::f_pin_unpin (line 630)
[INFO] [stdout]     src/ch03/s2_async_await.rs - ch03::s2_async_await::f_pin_unpin (line 644)
[INFO] [stdout]     src/ch03/s2_async_await.rs - ch03::s2_async_await::f_pin_unpin (line 721)
[INFO] [stdout]     src/ch03/s2_async_await.rs - ch03::s2_async_await::f_pin_unpin (line 790)
[INFO] [stdout]     src/ch03/s2_async_await.rs - ch03::s2_async_await::f_pin_unpin (line 838)
[INFO] [stdout]     src/ch03/s2_async_await.rs - ch03::s2_async_await::f_pin_unpin (line 885)
[INFO] [stdout]     src/ch03/s2_async_await.rs - ch03::s2_async_await::f_pin_unpin (line 957)
[INFO] [stdout] 
[INFO] [stdout] test result: FAILED. 58 passed; 90 failed; 0 ignored; 0 measured; 0 filtered out; finished in 11.92s
[INFO] [stdout] 
[INFO] running `Command { std: "docker" "inspect" "59c79095e865d8c8b2a47d42bfbff5f57120d9ba6e55f2c6bc7cc2e3fb07fb23", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "59c79095e865d8c8b2a47d42bfbff5f57120d9ba6e55f2c6bc7cc2e3fb07fb23", kill_on_drop: false }`
[INFO] [stdout] 59c79095e865d8c8b2a47d42bfbff5f57120d9ba6e55f2c6bc7cc2e3fb07fb23
