[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 master#1871252fc8bb672d40787e67404e6eaae7059369 for pr-125151
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fyxxuweb%2Frust-inviting" "/workspace/builds/worker-6-tc1/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-6-tc1/source'...
[INFO] [stderr] done.
[INFO] validating manifest of git repo https://github.com/yxxuweb/rust-inviting on toolchain 1871252fc8bb672d40787e67404e6eaae7059369
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1871252fc8bb672d40787e67404e6eaae7059369" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[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-6-tc1/source/Cargo.toml
[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" "+1871252fc8bb672d40787e67404e6eaae7059369" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc1/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:beeedbb442662e57d416641ecc3200b38e573c25b057896194468d05594dd835" "/opt/rustwide/cargo-home/bin/cargo" "+1871252fc8bb672d40787e67404e6eaae7059369" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] 8c14e5a6be280409fda0f32941d1fcb22fa8a552536595e91b5037b3e8813a08
[INFO] running `Command { std: "docker" "start" "-a" "8c14e5a6be280409fda0f32941d1fcb22fa8a552536595e91b5037b3e8813a08", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "8c14e5a6be280409fda0f32941d1fcb22fa8a552536595e91b5037b3e8813a08", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "8c14e5a6be280409fda0f32941d1fcb22fa8a552536595e91b5037b3e8813a08", kill_on_drop: false }`
[INFO] [stdout] 8c14e5a6be280409fda0f32941d1fcb22fa8a552536595e91b5037b3e8813a08
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc1/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:beeedbb442662e57d416641ecc3200b38e573c25b057896194468d05594dd835" "/opt/rustwide/cargo-home/bin/cargo" "+1871252fc8bb672d40787e67404e6eaae7059369" "build" "--frozen" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] df14575198a0b07e7b6049edee110a303c3b9f89950442e5d0d07b0019c0777e
[INFO] running `Command { std: "docker" "start" "-a" "df14575198a0b07e7b6049edee110a303c3b9f89950442e5d0d07b0019c0777e", 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)]` 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: 2 warnings emitted
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 0.11s
[INFO] running `Command { std: "docker" "inspect" "df14575198a0b07e7b6049edee110a303c3b9f89950442e5d0d07b0019c0777e", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "df14575198a0b07e7b6049edee110a303c3b9f89950442e5d0d07b0019c0777e", kill_on_drop: false }`
[INFO] [stdout] df14575198a0b07e7b6049edee110a303c3b9f89950442e5d0d07b0019c0777e
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc1/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:beeedbb442662e57d416641ecc3200b38e573c25b057896194468d05594dd835" "/opt/rustwide/cargo-home/bin/cargo" "+1871252fc8bb672d40787e67404e6eaae7059369" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] c77c2fe4c7a5b2fe237bbf00f5cb9f83079437c12de7602f7df45e725889392a
[INFO] running `Command { std: "docker" "start" "-a" "c77c2fe4c7a5b2fe237bbf00f5cb9f83079437c12de7602f7df45e725889392a", kill_on_drop: false }`
[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)]` 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] [stderr]    Compiling inviting-rust v0.1.0 (/opt/rustwide/workdir)
[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: 2 warnings emitted
[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)]` 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: 2 warnings emitted
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 0.20s
[INFO] running `Command { std: "docker" "inspect" "c77c2fe4c7a5b2fe237bbf00f5cb9f83079437c12de7602f7df45e725889392a", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "c77c2fe4c7a5b2fe237bbf00f5cb9f83079437c12de7602f7df45e725889392a", kill_on_drop: false }`
[INFO] [stdout] c77c2fe4c7a5b2fe237bbf00f5cb9f83079437c12de7602f7df45e725889392a
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc1/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:beeedbb442662e57d416641ecc3200b38e573c25b057896194468d05594dd835" "/opt/rustwide/cargo-home/bin/cargo" "+1871252fc8bb672d40787e67404e6eaae7059369" "test" "--frozen", kill_on_drop: false }`
[INFO] [stdout] 95c8266456859af61c579ece4ec858276afb40a6e7628f819f3d6af832d29c60
[INFO] running `Command { std: "docker" "start" "-a" "95c8266456859af61c579ece4ec858276afb40a6e7628f819f3d6af832d29c60", 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)]` 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.00s
[INFO] [stderr]      Running unittests src/lib.rs (/opt/rustwide/target/debug/deps/inviting_rust-a28ed5be487d7d5d)
[INFO] [stdout] 
[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] [stderr]    Doc-tests inviting_rust
[INFO] [stdout] 
[INFO] [stdout] running 148 tests
[INFO] [stdout] test src/ch01/ctfe.rs - ch01::ctfe::mir_show (line 186) ... FAILED
[INFO] [stdout] test src/ch01/ctfe.rs - ch01::ctfe::must_const_expr (line 10) ... FAILED
[INFO] [stdout] test src/ch01/expr.rs - ch01::expr::semi_and_block_expr (line 50) ... 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::if_while_true (line 205) ... 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::const_generic_show (line 241) ... FAILED
[INFO] [stdout] test src/ch01/lexical.rs - ch01::lexical::outer_module (line 133) ... FAILED
[INFO] [stdout] test src/ch01/lexical.rs - ch01::lexical::path_show (line 86) ... FAILED
[INFO] [stdout] test src/ch02/s1_ownership.rs - ch02::s1_ownership::custom_types (line 90) ... FAILED
[INFO] [stdout] test src/ch01/ctfe.rs - ch01::ctfe::const_fib (line 43) ... ok
[INFO] [stdout] test src/ch01/lexical.rs - ch01::lexical::ident_show (line 12) ... 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_if (line 97) ... ok
[INFO] [stdout] test src/ch01/ctfe.rs - ch01::ctfe::const_array_len (line 26) ... ok
[INFO] [stdout] test src/ch01/expr.rs - ch01::expr::fizzbuzz_match (line 76) ... ok
[INFO] [stdout] test src/ch01/ctfe.rs - ch01::ctfe::const_fn_ (line 87) ... ok
[INFO] [stdout] test src/ch01/ctfe.rs - ch01::ctfe::array_chunk_show (line 299) ... ok
[INFO] [stdout] test src/ch02/s1_ownership.rs - ch02::s1_ownership::understand_drop (line 356) ... FAILED
[INFO] [stdout] test src/ch01/lexical.rs - ch01::lexical::macro_show (line 42) ... ok
[INFO] [stdout] test src/ch01/mod.rs - ch01::title (line 12) ... ok
[INFO] [stdout] test src/ch02/s1_ownership.rs - ch02::s1_ownership::understand_copy (line 166) ... 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 402) ... FAILED
[INFO] [stdout] test src/ch02/s1_ownership.rs - ch02::s1_ownership::primitive_types (line 42) ... ok
[INFO] [stdout] test src/ch02/s2_lifetime.rs - ch02::s2_lifetime::understand_lifetime (line 100) ... FAILED
[INFO] [stdout] test src/ch01/expr.rs - ch01::expr::eop (line 11) ... 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_move (line 280) ... FAILED
[INFO] [stdout] test src/ch02/s1_ownership.rs - ch02::s1_ownership::understand_copy (line 179) ... 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 439) ... FAILED
[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/s1_ownership.rs - ch02::s1_ownership::understand_copy (line 243) ... ok
[INFO] [stdout] test src/ch02/s2_lifetime.rs - ch02::s2_lifetime::understand_lifetime_hrtb (line 424) ... FAILED
[INFO] [stdout] test src/ch02/s2_lifetime.rs - ch02::s2_lifetime::understand_lifetime_hrtb (line 402) ... FAILED
[INFO] [stdout] test src/ch02/s1_ownership.rs - ch02::s1_ownership::understand_drop (line 326) ... ok
[INFO] [stdout] test src/ch02/s2_lifetime.rs - ch02::s2_lifetime::understand_lifetime_in_generic_type (line 306) ... 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::understand_drop (line 341) ... ok
[INFO] [stdout] test src/ch02/s1_ownership.rs - ch02::s1_ownership::understand_copy_clone (line 136) ... ok
[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_nll (line 30) ... FAILED
[INFO] [stdout] test src/ch02/s1_ownership.rs - ch02::s1_ownership::understand_drop (line 372) ... ok
[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/s3_thread_safe.rs - ch02::s3_thread_safe::understand_channel_and_condvar (line 250) ... 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/s3_thread_safe.rs - ch02::s3_thread_safe::understand_channel_and_condvar (line 573) ... FAILED
[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_channel_and_condvar (line 756) ... 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/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_copy (line 212) ... FAILED
[INFO] [stdout] test src/ch02/s2_lifetime.rs - ch02::s2_lifetime::understand_lifetime_hrtb (line 383) ... ok
[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_shared_thread (line 150) ... 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 61) ... FAILED
[INFO] [stdout] test src/ch02/s3_thread_safe.rs - ch02::s3_thread_safe::understand_shared_thread (line 77) ... FAILED
[INFO] [stdout] test src/ch02/s2_lifetime.rs - ch02::s2_lifetime::understand_lifetime_early_late_bound (line 194) ... 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_in_generic_type (line 274) ... ok
[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::object_safety (line 402) ... 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_concept (line 78) ... FAILED
[INFO] [stdout] test src/ch02/s2_lifetime.rs - ch02::s2_lifetime::understand_scope (line 10) ... ok
[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_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/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_object (line 224) ... 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/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 220) ... ok
[INFO] [stdout] test src/ch02/s4_lockfree.rs - ch02::s4_lockfree::memory_reordering (line 131) ... ok
[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_self_sized_bound (line 835) ... FAILED
[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/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_concept (line 19) ... 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::trait_concept (line 63) ... ok
[INFO] [stdout] test src/ch02/s6_paradigms.rs - ch02::s6_paradigms::compiler_oriented_programming (line 140) ... FAILED
[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_concept (line 29) ... ok
[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::any_refection (line 31) ... FAILED
[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_object_to_enum (line 555) ... ok
[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 88) ... 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/s6_paradigms.rs - ch02::s6_paradigms::compiler_oriented_programming (line 63) ... ok
[INFO] [stdout] test src/ch02/s7_error_handle.rs - ch02::s7_error_handle::error_handle (line 144) ... ok
[INFO] [stdout] test src/ch02/s7_error_handle.rs - ch02::s7_error_handle::error_handle (line 57) ... ok
[INFO] [stdout] test src/ch02/s7_error_handle.rs - ch02::s7_error_handle::error_handle (line 100) ... ok
[INFO] [stdout] test src/ch02/s7_error_handle.rs - ch02::s7_error_handle::elim_failure (line 28) ... FAILED
[INFO] [stdout] test src/ch02/s7_error_handle.rs - ch02::s7_error_handle::panic_cant_handle (line 197) ... ok
[INFO] [stdout] test src/ch02/s7_error_handle.rs - ch02::s7_error_handle::panic_cant_handle (line 214) ... ok
[INFO] [stdout] test src/ch02/s8_metaprogramming.rs - ch02::s8_metaprogramming::declarative_macros (line 295) ... FAILED
[INFO] [stdout] test src/ch02/s8_metaprogramming.rs - ch02::s8_metaprogramming::declarative_macros (line 122) ... ok
[INFO] [stdout] test src/ch02/s9_unsafe_rust.rs - ch02::s9_unsafe_rust::security_abstract (line 120) ... FAILED
[INFO] [stdout] test src/ch02/s9_unsafe_rust.rs - ch02::s9_unsafe_rust::security_abstract (line 145) ... FAILED
[INFO] [stdout] test src/ch02/s9_unsafe_rust.rs - ch02::s9_unsafe_rust::security_abstract (line 460) ... 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::derive_proc_macros (line 324) ... FAILED
[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/s9_unsafe_rust.rs - ch02::s9_unsafe_rust::unsafe_intro (line 22) ... FAILED
[INFO] [stdout] test src/ch03/s2_async_await.rs - ch03::s2_async_await::a_async_intro (line 70) ... FAILED
[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 156) ... ok
[INFO] [stdout] test src/ch02/s8_metaprogramming.rs - ch02::s8_metaprogramming::declarative_macros (line 208) ... ok
[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 219) ... FAILED
[INFO] [stdout] test src/ch02/s8_metaprogramming.rs - ch02::s8_metaprogramming::declarative_macros (line 233) ... ok
[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 340) ... 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::e_generator (line 403) ... 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::e_generator (line 436) ... FAILED
[INFO] [stdout] test src/ch02/s9_unsafe_rust.rs - ch02::s9_unsafe_rust::security_abstract (line 240) ... ok
[INFO] [stdout] test src/ch02/s9_unsafe_rust.rs - ch02::s9_unsafe_rust::security_abstract (line 91) ... ok
[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 644) ... FAILED
[INFO] [stdout] test src/ch03/s2_async_await.rs - ch03::s2_async_await::f_pin_unpin (line 630) ... FAILED
[INFO] [stdout] test src/ch02/s9_unsafe_rust.rs - ch02::s9_unsafe_rust::security_abstract (line 334) ... ok
[INFO] [stdout] test src/ch02/s9_unsafe_rust.rs - ch02::s9_unsafe_rust::security_abstract (line 567) ... ok
[INFO] [stdout] test src/ch02/s9_unsafe_rust.rs - ch02::s9_unsafe_rust::unsafe_intro (line 69) ... ok
[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::f_pin_unpin (line 721) ... 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::f_pin_unpin (line 957) ... 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::f_pin_unpin (line 790) ... FAILED
[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::e_generator (line 489) ... 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/s3_thread_safe.rs - ch02::s3_thread_safe::understand_shared_thread (line 95) ... 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::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] 8 |     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] 1 | #![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::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] 5 |     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`: `let AN`
[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/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] 4 | /     ;
[INFO] [stdout] 5 | |     ;
[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] 1 | #![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] 16 |     ; // ->  ()
[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] 11 |         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] 15 |     &{;}; // -> &()
[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] 14 |     &();
[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] 14 |     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] 15 |     &{;}; // -> &()
[INFO] [stdout]    |     ^^^^ the borrow produces a value
[INFO] [stdout]    |
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]    |
[INFO] [stdout] 15 |     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::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] 8 |     println!("{}", A);
[INFO] [stdout]   |                    ^ `Answer` cannot be formatted with the default formatter
[INFO] [stdout]   |
[INFO] [stdout]   = help: the trait `std::fmt::Display` is not implemented for `Answer`
[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::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] 10 |     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] 1  | #![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] 3 |   fn if_true(x: i32) -> i32 {
[INFO] [stdout]   |                         --- expected `i32` because of this return type
[INFO] [stdout] 4 | /     if true {  // error[E0308]: mismatched types，expected type `i32` found type `()`
[INFO] [stdout] 5 | |         return x+1;
[INFO] [stdout] 6 | |     }
[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] 9  |   fn while_true(x: i32) -> i32 {
[INFO] [stdout]    |                            --- expected `i32` because of return type
[INFO] [stdout] 10 | /     while true {  // error[E0308]: mismatched types，expected type `i32` found type `()`
[INFO] [stdout] 11 | |         return x+1;
[INFO] [stdout] 12 | |     }
[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] 12 ~     }
[INFO] [stdout] 13 +     /* `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/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] 3 | #![feature(const_fn)]
[INFO] [stdout]   |            ^^^^^^^^ feature has been removed
[INFO] [stdout]   |
[INFO] [stdout]   = note: split into finer-grained feature gates
[INFO] [stdout] 
[INFO] [stdout] error[E0015]: cannot call non-const fn `<str as ToString>::to_string` in constant functions
[INFO] [stdout]  --> src/ch01/ctfe.rs:127:13
[INFO] [stdout]   |
[INFO] [stdout] 7 |     "Hello".to_string()
[INFO] [stdout]   |             ^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: calls in constant functions are limited to constant functions, tuple structs and tuple variants
[INFO] [stdout] help: add `#![feature(const_trait_impl)]` to the crate attributes to enable
[INFO] [stdout]   |
[INFO] [stdout] 6 + #![feature(const_trait_impl)]
[INFO] [stdout]   |
[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::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] 4 | #![feature(const_in_array_repeat_expressions)]
[INFO] [stdout]   |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ feature has been removed
[INFO] [stdout]   |
[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] 3 | #![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] 1 | #![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:256:21
[INFO] [stdout]    |
[INFO] [stdout] 17 |             items: [MaybeUninit::uninit(); N],
[INFO] [stdout]    |                     ^^^^^^^^^^^^^^^^^^^^^ the trait `std::marker::Copy` is not implemented for `T`, which is required by `MaybeUninit<T>: std::marker::Copy`
[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: create an inline `const` block, see RFC #2920 <https://github.com/rust-lang/rfcs/pull/2920> for more information
[INFO] [stdout] help: consider restricting type parameter `T`
[INFO] [stdout]    |
[INFO] [stdout] 14 | impl<T: std::marker::Copy, const N: usize> ArrayVec<T,  {N} > {
[INFO] [stdout]    |       +++++++++++++++++++
[INFO] [stdout] help: consider creating a new `const` item and initializing it with the result of the function call to be used in the repeat position
[INFO] [stdout]    |
[INFO] [stdout] 14 + const ARRAY_REPEAT_VALUE: MaybeUninit<T> = MaybeUninit::uninit();
[INFO] [stdout] 15 ~ impl<T, const N: usize> ArrayVec<T,  {N} > {
[INFO] [stdout] 16 |     pub const fn new() -> ArrayVec<T, {N} > {
[INFO] [stdout] 17 |         ArrayVec {
[INFO] [stdout] 18 ~             items: [ARRAY_REPEAT_VALUE; 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::outer_module (line 133) stdout ----
[INFO] [stdout] error: expected `;`, found keyword `pub`
[INFO] [stdout]  --> src/ch01/lexical.rs:134:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | 注释示例
[INFO] [stdout]   |         ^ help: add `;` here
[INFO] [stdout] 5 | 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/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] 39 | (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] 1  | #![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] 39 | 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] 40 | Vec::<u8>::with_capacity(1024);
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]    |
[INFO] [stdout] 40 | 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/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] 24 |     println!("{:?}", a);  // work
[INFO] [stdout]    |                      ^ `A` cannot be formatted using `{:?}`
[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] 4  + #[derive(Debug)]
[INFO] [stdout] 5  | 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] 28 |     println!("{:?}", a);  // work
[INFO] [stdout]    |                      ^ `Point` cannot be formatted using `{:?}`
[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] 7  + #[derive(Debug)]
[INFO] [stdout] 8  | 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] 30 |     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] 33 |     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] 33 -     let a = Member{name: "Alex".to_string(), age: "18"};
[INFO] [stdout] 33 +     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] 33 |     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 356) stdout ----
[INFO] [stdout] error: unreachable expression
[INFO] [stdout]   --> src/ch02/s1_ownership.rs:365:16
[INFO] [stdout]    |
[INFO] [stdout] 11 |     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] 1  | #![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::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] 15 |         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] 1  | #![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] 15 |         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] 15 |         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 402) stdout ----
[INFO] [stdout] error: path statement drops value
[INFO] [stdout]   --> src/ch02/s1_ownership.rs:413:29
[INFO] [stdout]    |
[INFO] [stdout] 13 |     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] 1  | #![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] 13 |     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] 13 |     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:112:50
[INFO] [stdout]    |
[INFO] [stdout] 3  | fn main() { #[allow(non_snake_case)] fn _doctest_main_src_ch02_s2_lifetime_rs_100_0() {
[INFO] [stdout]    |           - unclosed delimiter
[INFO] [stdout] ...
[INFO] [stdout] 15 | } _doctest_main_src_ch02_s2_lifetime_rs_100_0() }
[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/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:129:50
[INFO] [stdout]    |
[INFO] [stdout] 3  | fn main() { #[allow(non_snake_case)] fn _doctest_main_src_ch02_s2_lifetime_rs_117_0() {
[INFO] [stdout]    |           - unclosed delimiter
[INFO] [stdout] ...
[INFO] [stdout] 15 | } _doctest_main_src_ch02_s2_lifetime_rs_117_0() }
[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_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] 10 |     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] 10 -     let s2 = *s;
[INFO] [stdout] 10 +     let s2 = s;
[INFO] [stdout]    |
[INFO] [stdout] help: consider cloning the value if the performance cost is acceptable
[INFO] [stdout]    |
[INFO] [stdout] 10 -     let s2 = *s;
[INFO] [stdout] 10 +     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 (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] 8 |     &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/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] 9  |           let x: Box<_> = box ArcInner {
[INFO] [stdout]    |  _________________________^
[INFO] [stdout] 10 | |             strong: atomic::AtomicUsize::new(1),
[INFO] [stdout] 11 | |             weak: atomic::AtomicUsize::new(1),
[INFO] [stdout] 12 | |             data,
[INFO] [stdout] 13 | |         };
[INFO] [stdout]    | |_________^
[INFO] [stdout]    |
[INFO] [stdout] help: use `Box::new()` instead
[INFO] [stdout]    |
[INFO] [stdout] 9  ~         let x: Box<_> = Box::new(ArcInner {
[INFO] [stdout] 10 +             strong: atomic::AtomicUsize::new(1),
[INFO] [stdout] 11 +             weak: atomic::AtomicUsize::new(1),
[INFO] [stdout] 12 +             data,
[INFO] [stdout] 13 ~         });
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] error[E0412]: cannot find type `Arc` in this scope
[INFO] [stdout]  --> src/ch02/s1_ownership.rs:441:9
[INFO] [stdout]   |
[INFO] [stdout] 5 | impl<T> Arc<T> {
[INFO] [stdout]   |         ^^^ not found in this scope
[INFO] [stdout]   |
[INFO] [stdout] help: consider importing this struct
[INFO] [stdout]   |
[INFO] [stdout] 4 + use std::sync::Arc;
[INFO] [stdout]   |
[INFO] [stdout] 
[INFO] [stdout] error[E0412]: cannot find type `Arc` in this scope
[INFO] [stdout]  --> src/ch02/s1_ownership.rs:442:28
[INFO] [stdout]   |
[INFO] [stdout] 6 |     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] 4 + use std::sync::Arc;
[INFO] [stdout]   |
[INFO] [stdout] 
[INFO] [stdout] error[E0412]: cannot find type `Weak` in this scope
[INFO] [stdout]   --> src/ch02/s1_ownership.rs:457:9
[INFO] [stdout]    |
[INFO] [stdout] 21 | impl<T> Weak<T> {
[INFO] [stdout]    |         ^^^^ not found in this scope
[INFO] [stdout]    |
[INFO] [stdout] help: consider importing one of these items
[INFO] [stdout]    |
[INFO] [stdout] 4  + use std::rc::Weak;
[INFO] [stdout]    |
[INFO] [stdout] 4  + use std::sync::Weak;
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] error[E0433]: failed to resolve: use of undeclared crate or module `mem`
[INFO] [stdout]   --> src/ch02/s1_ownership.rs:460:9
[INFO] [stdout]    |
[INFO] [stdout] 24 |         mem::forget(self);
[INFO] [stdout]    |         ^^^ use of undeclared crate or module `mem`
[INFO] [stdout]    |
[INFO] [stdout] help: consider importing one of these items
[INFO] [stdout]    |
[INFO] [stdout] 4  + use core::mem;
[INFO] [stdout]    |
[INFO] [stdout] 4  + 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] 15 |         Self::from_inner(Box::leak(x).into())
[INFO] [stdout]    |                          ^^^^^^^^^    ---- type must be known at this point
[INFO] [stdout]    |                          |
[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] 15 |         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, E0412, E0433.
[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_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:149:18
[INFO] [stdout]   |
[INFO] [stdout] 8 |     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:145:6
[INFO] [stdout]   |
[INFO] [stdout] 4 | 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] 6 |     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:239:23
[INFO] [stdout]   |
[INFO] [stdout] 5 |     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/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:435:15
[INFO] [stdout]    |
[INFO] [stdout] 13 | 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/nightly/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] 1  | #![deny(warnings)]
[INFO] [stdout]    |         ^^^^^^^^
[INFO] [stdout]    = note: `#[deny(bare_trait_objects)]` implied by `#[deny(warnings)]`
[INFO] [stdout] help: if this is an object-safe trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 13 | 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/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] 12 | 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/nightly/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] 1  | #![deny(warnings)]
[INFO] [stdout]    |         ^^^^^^^^
[INFO] [stdout]    = note: `#[deny(bare_trait_objects)]` implied by `#[deny(warnings)]`
[INFO] [stdout] help: if this is an object-safe trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 12 | 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] 12 | fn foo<'a>(b: Box<DoSomething<&'a usize>>) {
[INFO] [stdout]    |        -- lifetime `'a` defined here
[INFO] [stdout] 13 |     let s: usize = 10;
[INFO] [stdout]    |         - binding `s` declared here
[INFO] [stdout] 14 |     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] 15 | }
[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_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] 7  | impl<T> Trait for fn(T) {
[INFO] [stdout]    | ----------------------- first implementation here
[INFO] [stdout] ...
[INFO] [stdout] 13 | 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] 1  | #![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/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] 3 | 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] 57 |       let mut checker = if rand::random() {
[INFO] [stdout]    |  _______________________-
[INFO] [stdout] 58 | |         println!("Initializing Xor Checksum");
[INFO] [stdout] 59 | |         Box::new(Xor)
[INFO] [stdout]    | |         ------------- expected because of this
[INFO] [stdout] 60 | |     } else {
[INFO] [stdout] 61 | |         println!("Initializing Add Checksum");
[INFO] [stdout] 62 | |         Box::new(Add)
[INFO] [stdout]    | |         ^^^^^^^^^^^^^ expected `Box<Xor>`, found `Box<Add>`
[INFO] [stdout] 63 | |     };
[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/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] 8  |     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] 12 |         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] 8  |     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] 14 |             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] 8  |     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] 16 |             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] 8  |     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] 19 |             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/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] 4 | 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] 5 | 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:364:5
[INFO] [stdout]    |
[INFO] [stdout] 11 | use parking_lot::{Condvar, Mutex};
[INFO] [stdout]    |     ^^^^^^^^^^^ use of undeclared crate or module `parking_lot`
[INFO] [stdout] 
[INFO] [stdout] error: unused import: `std::collections::HashMap`
[INFO] [stdout]  --> src/ch02/s3_thread_safe.rs:361:5
[INFO] [stdout]   |
[INFO] [stdout] 8 | 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] 1 | #![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:365:5
[INFO] [stdout]    |
[INFO] [stdout] 12 | use std::sync::Arc;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] error: aborting due to 5 previous errors
[INFO] [stdout] 
[INFO] [stdout] Some errors have detailed explanations: E0432, E0463.
[INFO] [stdout] For more information about an error, try `rustc --explain E0432`.
[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] 4 | 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] 5 | 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:256:5
[INFO] [stdout]   |
[INFO] [stdout] 8 | 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] 1 | #![deny(warnings)]
[INFO] [stdout]   |         ^^^^^^^^
[INFO] [stdout]   = note: `#[deny(unused_imports)]` implied by `#[deny(warnings)]`
[INFO] [stdout] 
[INFO] [stdout] error: unused imports: `Arc`, `Condvar`, `Mutex`
[INFO] [stdout]  --> src/ch02/s3_thread_safe.rs:257:17
[INFO] [stdout]   |
[INFO] [stdout] 9 | use std::sync::{Arc, Condvar, Mutex};
[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 E0463`.
[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] 4 | 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] 5 | 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:471:5
[INFO] [stdout]    |
[INFO] [stdout] 11 | use parking_lot::{Condvar, Mutex};
[INFO] [stdout]    |     ^^^^^^^^^^^ use of undeclared crate or module `parking_lot`
[INFO] [stdout] 
[INFO] [stdout] error: cannot find macro `select` in this scope
[INFO] [stdout]   --> src/ch02/s3_thread_safe.rs:500:9
[INFO] [stdout]    |
[INFO] [stdout] 40 |         select! {
[INFO] [stdout]    |         ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] error: unused import: `std::collections::HashMap`
[INFO] [stdout]  --> src/ch02/s3_thread_safe.rs:468:5
[INFO] [stdout]   |
[INFO] [stdout] 8 | 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] 1 | #![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:472:5
[INFO] [stdout]    |
[INFO] [stdout] 12 | use std::sync::Arc;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] error: aborting due to 6 previous errors
[INFO] [stdout] 
[INFO] [stdout] Some errors have detailed explanations: E0432, E0463.
[INFO] [stdout] For more information about an error, try `rustc --explain E0432`.
[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] 4 | 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] 5 | 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:582:5
[INFO] [stdout]    |
[INFO] [stdout] 11 | use parking_lot::{Condvar, Mutex};
[INFO] [stdout]    |     ^^^^^^^^^^^ use of undeclared crate or module `parking_lot`
[INFO] [stdout] 
[INFO] [stdout] error: cannot find macro `select` in this scope
[INFO] [stdout]   --> src/ch02/s3_thread_safe.rs:639:9
[INFO] [stdout]    |
[INFO] [stdout] 68 |         select! {
[INFO] [stdout]    |         ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] error: unused import: `std::collections::HashMap`
[INFO] [stdout]  --> src/ch02/s3_thread_safe.rs:579:5
[INFO] [stdout]   |
[INFO] [stdout] 8 | 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] 1 | #![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:583:5
[INFO] [stdout]    |
[INFO] [stdout] 12 | use std::sync::Arc;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] error: aborting due to 6 previous errors
[INFO] [stdout] 
[INFO] [stdout] Some errors have detailed explanations: E0432, E0463.
[INFO] [stdout] For more information about an error, try `rustc --explain E0432`.
[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] 4 | 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] 5 | 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:833:9
[INFO] [stdout]    |
[INFO] [stdout] 79 |         select! {
[INFO] [stdout]    |         ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] error: unused import: `Condvar`
[INFO] [stdout]  --> src/ch02/s3_thread_safe.rs:763:22
[INFO] [stdout]   |
[INFO] [stdout] 9 | 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] 1 | #![deny(warnings)]
[INFO] [stdout]   |         ^^^^^^^^
[INFO] [stdout]   = note: `#[deny(unused_imports)]` implied by `#[deny(warnings)]`
[INFO] [stdout] 
[INFO] [stdout] error: aborting due to 4 previous errors
[INFO] [stdout] 
[INFO] [stdout] For more information about this error, try `rustc --explain E0463`.
[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] 4 | 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] 5 | 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:1061:9
[INFO] [stdout]    |
[INFO] [stdout] 89 |         select! {
[INFO] [stdout]    |         ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] error: aborting due to 3 previous errors
[INFO] [stdout] 
[INFO] [stdout] For more information about this error, try `rustc --explain E0463`.
[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] 3 | use crossbeam;
[INFO] [stdout]   |     ^^^^^^^^^ no external crate `crossbeam`
[INFO] [stdout] 
[INFO] [stdout] error: unused imports: `thread`, `time::Duration`
[INFO] [stdout]  --> src/ch02/s3_thread_safe.rs:130:11
[INFO] [stdout]   |
[INFO] [stdout] 4 | 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] 1 | #![deny(warnings)]
[INFO] [stdout]   |         ^^^^^^^^
[INFO] [stdout]   = note: `#[deny(unused_imports)]` implied by `#[deny(warnings)]`
[INFO] [stdout] 
[INFO] [stdout] error: aborting due to 2 previous errors
[INFO] [stdout] 
[INFO] [stdout] For more information about this error, try `rustc --explain E0432`.
[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/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] 3 | use crossbeam; // 0.6.0
[INFO] [stdout]   |     ^^^^^^^^^ no external crate `crossbeam`
[INFO] [stdout] 
[INFO] [stdout] error: aborting due to 1 previous error
[INFO] [stdout] 
[INFO] [stdout] For more information about this error, try `rustc --explain E0432`.
[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] 7  |     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] 8  |     for i in 0..10 {
[INFO] [stdout]    |     -------------- inside of this loop
[INFO] [stdout] 9  |         thread::spawn(move || {
[INFO] [stdout]    |                       ^^^^^^^ value moved into closure here, in previous iteration of loop
[INFO] [stdout] 10 |             v.push(i);
[INFO] [stdout]    |             - use occurs due to use in closure
[INFO] [stdout]    |
[INFO] [stdout] help: consider moving the expression out of the loop so it is only moved once
[INFO] [stdout]    |
[INFO] [stdout] 8  ~     let mut value = v.push(i);
[INFO] [stdout] 9  ~     for i in 0..10 {
[INFO] [stdout] 10 |         thread::spawn(move || {
[INFO] [stdout] 11 ~             value;
[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_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] 4 |   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] 5 | /     std::thread::spawn(move || {
[INFO] [stdout] 6 | |     vref.push(3);
[INFO] [stdout] 7 | |     });
[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/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] 7  |     impl Blanket for u8 {
[INFO] [stdout]    |     ------------------- first implementation here
[INFO] [stdout] ...
[INFO] [stdout] 14 |     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/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] 34 |         U: TryInto<T, Error = E>,
[INFO] [stdout]    |            ^^^^^^^ not found in this scope
[INFO] [stdout]    |
[INFO] [stdout]    = note: 'core::convert::TryInto' is included in the prelude starting in Edition 2021
[INFO] [stdout]    = note: 'std::convert::TryInto' is included in the prelude starting in Edition 2021
[INFO] [stdout] help: consider importing one of these items
[INFO] [stdout]    |
[INFO] [stdout] 3  + use core::convert::TryInto;
[INFO] [stdout]    |
[INFO] [stdout] 3  + 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] 14 |     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/nightly/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] 1  | #![deny(warnings)]
[INFO] [stdout]    |         ^^^^^^^^
[INFO] [stdout]    = note: `#[deny(bare_trait_objects)]` implied by `#[deny(warnings)]`
[INFO] [stdout] help: if this is an object-safe trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 14 |     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] 22 |     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/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is an object-safe trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 22 |     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] 32 |     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/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is an object-safe trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 32 |     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] 41 |     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/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is an object-safe trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 41 |     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] 47 |     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/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is an object-safe trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 47 |     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] 14 |     impl<T: ToString> Blanket<&ToString> for T {
[INFO] [stdout]    |     ------------------------------------------ first implementation here
[INFO] [stdout] ...
[INFO] [stdout] 41 |     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::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] 17 |     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/nightly/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] 1  | #![deny(warnings)]
[INFO] [stdout]    |         ^^^^^^^^
[INFO] [stdout]    = note: `#[deny(bare_trait_objects)]` implied by `#[deny(warnings)]`
[INFO] [stdout] help: if this is an object-safe trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 17 |     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] 17 |     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] 27 |     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/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is an object-safe trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 27 |     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] 27 |     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/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] 4 | 一个 trait 如果能实现自己，就认为它是对象安全的
[INFO] [stdout]   |                          ^^
[INFO] [stdout]   |
[INFO] [stdout] help: Unicode character '，' (Fullwidth Comma) looks like ',' (Comma), but it is not
[INFO] [stdout]   |
[INFO] [stdout] 4 | 一个 trait 如果能实现自己,就认为它是对象安全的
[INFO] [stdout]   |                          ~
[INFO] [stdout] 
[INFO] [stdout] error: expected one of `!`, `.`, `::`, `;`, `?`, `{`, `}`, or an operator, found keyword `trait`
[INFO] [stdout]  --> src/ch02/s5_trait_and_generic.rs:378:4
[INFO] [stdout]   |
[INFO] [stdout] 4 | 一个 trait 如果能实现自己，就认为它是对象安全的
[INFO] [stdout]   |      ^^^^^ expected one of 8 possible tokens
[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] 4 | 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] 7 |     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] 4 | 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] 7 |     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_concept (line 78) stdout ----
[INFO] [stdout] error[E0597]: `value` does not live long enough
[INFO] [stdout]   --> src/ch02/s5_trait_and_generic.rs:91:16
[INFO] [stdout]    |
[INFO] [stdout] 15 |     let value = "value".to_string();
[INFO] [stdout]    |         ----- binding `value` declared here
[INFO] [stdout] 16 |     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] 17 | }
[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 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] 5 |         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/nightly/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] 1 | #![deny(warnings)]
[INFO] [stdout]   |         ^^^^^^^^
[INFO] [stdout]   = note: `#[deny(bare_trait_objects)]` implied by `#[deny(warnings)]`
[INFO] [stdout] help: if this is an object-safe trait, use `dyn`
[INFO] [stdout]   |
[INFO] [stdout] 5 |         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_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] 8 | ```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] 8 | '''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] 69 | ```
[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] 69 | '''
[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] 4 | ## 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] 8  |     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] 12 | 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] 8  |     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] 12 | 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] 13 |     match index {
[INFO] [stdout] 14 |         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/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] 4 | 假设：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] 4 | 假设: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] 4 | 假设：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] 4 | 假设：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] 4 | 假设：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] 4 | 假设：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] 4 | 假设：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] 4 | 假设：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] 6 | 注意：非法
[INFO] [stdout]   |     ^^
[INFO] [stdout]   |
[INFO] [stdout] help: Unicode character '：' (Fullwidth Colon) looks like ':' (Colon), but it is not
[INFO] [stdout]   |
[INFO] [stdout] 6 | 注意:非法
[INFO] [stdout]   |     ~
[INFO] [stdout] 
[INFO] [stdout] error: expected one of `!`, `.`, `::`, `;`, `?`, `{`, `}`, or an operator, found `:`
[INFO] [stdout]  --> src/ch02/s5_trait_and_generic.rs:338:3
[INFO] [stdout]   |
[INFO] [stdout] 4 | 假设：trait 继承(`trait MammalClone: Mammal+Clone`)布局图：
[INFO] [stdout]   |     ^^ expected one of 8 possible tokens
[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_object (line 224) stdout ----
[INFO] [stdout] error[E0432]: unresolved import `std::raw`
[INFO] [stdout]  --> src/ch02/s5_trait_and_generic.rs:229:16
[INFO] [stdout]   |
[INFO] [stdout] 7 | use std::{mem, raw};
[INFO] [stdout]   |                ^^^ no `raw` in the root
[INFO] [stdout]   |
[INFO] [stdout]   = help: consider importing one of these items 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:227:16
[INFO] [stdout]   |
[INFO] [stdout] 5 |     #![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_object_to_enum (line 530) stdout ----
[INFO] [stdout] error[E0412]: cannot find type `LinearKnob` in this scope
[INFO] [stdout]  --> src/ch02/s5_trait_and_generic.rs:532:16
[INFO] [stdout]   |
[INFO] [stdout] 5 |         Linear(LinearKnob),
[INFO] [stdout]   |                ^^^^^^^^^^ not found in this scope
[INFO] [stdout] 
[INFO] [stdout] error[E0412]: cannot find type `LogarithmicKnob` in this scope
[INFO] [stdout]  --> src/ch02/s5_trait_and_generic.rs:533:21
[INFO] [stdout]   |
[INFO] [stdout] 6 |         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] 9 |     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, E0412.
[INFO] [stdout] For more information about an 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_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:771:14
[INFO] [stdout]    |
[INFO] [stdout] 32 |     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/nightly/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] 1  | #![deny(warnings)]
[INFO] [stdout]    |         ^^^^^^^^
[INFO] [stdout]    = note: `#[deny(bare_trait_objects)]` implied by `#[deny(warnings)]`
[INFO] [stdout] help: if this is an object-safe trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 32 |     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 an operator, found `Foo`
[INFO] [stdout]  --> src/ch02/s6_paradigms.rs:22:11
[INFO] [stdout]   |
[INFO] [stdout] 4 | interface Foo {}
[INFO] [stdout]   |           ^^^ expected one of 8 possible tokens
[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_self_sized_bound (line 835) stdout ----
[INFO] [stdout] error: `?Trait` bounds are only permitted at the point where a type parameter is declared
[INFO] [stdout]  --> src/ch02/s5_trait_and_generic.rs:837:48
[INFO] [stdout]   |
[INFO] [stdout] 5 |     fn build(param: usize) -> Self where Self: ?Sized;
[INFO] [stdout]   |                                                ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] error: `?Trait` bounds are only permitted at the point where a type parameter is declared
[INFO] [stdout]  --> src/ch02/s5_trait_and_generic.rs:839:34
[INFO] [stdout]   |
[INFO] [stdout] 7 |     fn new() -> Self where 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:839:17
[INFO] [stdout]   |
[INFO] [stdout] 7 |     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] 7 |     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] 8 |         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] 7 |     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] 6 | 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/s6_paradigms.rs - ch02::s6_paradigms::compiler_oriented_programming (line 140) stdout ----
[INFO] [stdout] error[E0412]: cannot find type `UnsafeCell` in this scope
[INFO] [stdout]  --> src/ch02/s6_paradigms.rs:145:12
[INFO] [stdout]   |
[INFO] [stdout] 8 |     value: UnsafeCell<T>,
[INFO] [stdout]   |            ^^^^^^^^^^ not found in this scope
[INFO] [stdout]   |
[INFO] [stdout] help: consider importing one of these items
[INFO] [stdout]   |
[INFO] [stdout] 4 + use core::cell::UnsafeCell;
[INFO] [stdout]   |
[INFO] [stdout] 4 + 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:167:23
[INFO] [stdout]    |
[INFO] [stdout] 30 |         Cell { value: UnsafeCell::new(value) }
[INFO] [stdout]    |                       ^^^^^^^^^^ use of undeclared type `UnsafeCell`
[INFO] [stdout]    |
[INFO] [stdout] help: consider importing one of these items
[INFO] [stdout]    |
[INFO] [stdout] 4  + use core::cell::UnsafeCell;
[INFO] [stdout]    |
[INFO] [stdout] 4  + use std::cell::UnsafeCell;
[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:142:1
[INFO] [stdout]   |
[INFO] [stdout] 5 | #[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:148:1
[INFO] [stdout]    |
[INFO] [stdout] 11 | #[stable(feature = "rust1", since = "1.0.0")]
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] error[E0658]: negative trait bounds are not yet fully implemented; use marker types for now
[INFO] [stdout]   --> src/ch02/s6_paradigms.rs:152:17
[INFO] [stdout]    |
[INFO] [stdout] 15 | 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 2024-05-15; 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:151:1
[INFO] [stdout]    |
[INFO] [stdout] 14 | #[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:154:1
[INFO] [stdout]    |
[INFO] [stdout] 17 | #[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:185:5
[INFO] [stdout]    |
[INFO] [stdout] 48 |     #[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:162:27
[INFO] [stdout]    |
[INFO] [stdout] 25 | 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/1871252fc8bb672d40787e67404e6eaae7059369/library/core/src/cmp.rs:329:1
[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:171:24
[INFO] [stdout]    |
[INFO] [stdout] 34 |         let old = self.replace(val);
[INFO] [stdout]    |                        ^^^^^^^ method not found in `&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:187:14
[INFO] [stdout]    |
[INFO] [stdout] 50 |         self.replace(Default::default())
[INFO] [stdout]    |              ^^^^^^^ method not found in `&Cell<T>`
[INFO] [stdout] 
[INFO] [stdout] error: aborting due to 11 previous errors
[INFO] [stdout] 
[INFO] [stdout] Some errors have detailed explanations: E0277, E0412, 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/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] 7 |     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] 3 | 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] 7 |     sum(1i32, 2u32); // 违反契约，报错
[INFO] [stdout]   |          ~~~
[INFO] [stdout] help: change the type of the numeric literal from `u32` to `i32`
[INFO] [stdout]   |
[INFO] [stdout] 7 |     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/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] 4 |     match get_shortest(names) {
[INFO] [stdout]   |           ^^^^^^^^^^^^ not found in this scope
[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/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:36:26
[INFO] [stdout]   |
[INFO] [stdout] 7 |     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/nightly/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] 1 | #![deny(warnings)]
[INFO] [stdout]   |         ^^^^^^^^
[INFO] [stdout]   = note: `#[deny(bare_trait_objects)]` implied by `#[deny(warnings)]`
[INFO] [stdout] help: if this is an object-safe trait, use `dyn`
[INFO] [stdout]   |
[INFO] [stdout] 7 |     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:40:26
[INFO] [stdout]    |
[INFO] [stdout] 11 |     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/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is an object-safe trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 11 |     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:49:20
[INFO] [stdout]    |
[INFO] [stdout] 20 | 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/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is an object-safe trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 20 | 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:50:26
[INFO] [stdout]    |
[INFO] [stdout] 21 |     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/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is an object-safe trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 21 |     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:66:16
[INFO] [stdout]    |
[INFO] [stderr] error: doctest failed, to rerun pass `--doc`
[INFO] [stdout] 37 |     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/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is an object-safe trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 37 |     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:67:16
[INFO] [stdout]    |
[INFO] [stdout] 38 |     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/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is an object-safe trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 38 |     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 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] 8 |         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/nightly/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] 1 | #![deny(warnings)]
[INFO] [stdout]   |         ^^^^^^^^
[INFO] [stdout]   = note: `#[deny(bare_trait_objects)]` implied by `#[deny(warnings)]`
[INFO] [stdout] help: if this is an object-safe trait, use `dyn`
[INFO] [stdout]   |
[INFO] [stdout] 8 |         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 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] 8 |     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/nightly/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] 1 | #![deny(warnings)]
[INFO] [stdout]   |         ^^^^^^^^
[INFO] [stdout]   = note: `#[deny(bare_trait_objects)]` implied by `#[deny(warnings)]`
[INFO] [stdout] help: if this is an object-safe trait, use `dyn`
[INFO] [stdout]   |
[INFO] [stdout] 8 |     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::elim_failure (line 28) stdout ----
[INFO] [stdout] Test executable failed (exit status: 101).
[INFO] [stdout] 
[INFO] [stdout] stderr:
[INFO] [stdout] thread 'main' panicked at src/ch02/s7_error_handle.rs:5:5:
[INFO] [stdout] assertion failed: v.len() == 5
[INFO] [stdout] stack backtrace:
[INFO] [stdout]    0:     0x55e671ec0fe5 - std::backtrace_rs::backtrace::libunwind::trace::h59d96bdb08384354
[INFO] [stdout]                                at /rustc/1871252fc8bb672d40787e67404e6eaae7059369/library/std/src/../../backtrace/src/backtrace/libunwind.rs:105:5
[INFO] [stdout]    1:     0x55e671ec0fe5 - std::backtrace_rs::backtrace::trace_unsynchronized::h9cf5becacfc93fba
[INFO] [stdout]                                at /rustc/1871252fc8bb672d40787e67404e6eaae7059369/library/std/src/../../backtrace/src/backtrace/mod.rs:66:5
[INFO] [stdout]    2:     0x55e671ec0fe5 - std::sys_common::backtrace::_print_fmt::h10b76d10405dbd48
[INFO] [stdout]                                at /rustc/1871252fc8bb672d40787e67404e6eaae7059369/library/std/src/sys_common/backtrace.rs:68:5
[INFO] [stdout]    3:     0x55e671ec0fe5 - <std::sys_common::backtrace::_print::DisplayBacktrace as core::fmt::Display>::fmt::h6ed9e62a156d84e4
[INFO] [stdout]                                at /rustc/1871252fc8bb672d40787e67404e6eaae7059369/library/std/src/sys_common/backtrace.rs:44:22
[INFO] [stdout]    4:     0x55e671ede09b - core::fmt::rt::Argument::fmt::h645c680983f03c9f
[INFO] [stdout]                                at /rustc/1871252fc8bb672d40787e67404e6eaae7059369/library/core/src/fmt/rt.rs:165:63
[INFO] [stdout]    5:     0x55e671ede09b - core::fmt::write::h8bcd80919a02be29
[INFO] [stdout]                                at /rustc/1871252fc8bb672d40787e67404e6eaae7059369/library/core/src/fmt/mod.rs:1169:21
[INFO] [stdout]    6:     0x55e671ebf26f - std::io::Write::write_fmt::hed769ca6c29434ec
[INFO] [stdout]                                at /rustc/1871252fc8bb672d40787e67404e6eaae7059369/library/std/src/io/mod.rs:1835:15
[INFO] [stdout]    7:     0x55e671ec0dbe - std::sys_common::backtrace::_print::h6306f131a28d62b0
[INFO] [stdout]                                at /rustc/1871252fc8bb672d40787e67404e6eaae7059369/library/std/src/sys_common/backtrace.rs:47:5
[INFO] [stdout]    8:     0x55e671ec0dbe - std::sys_common::backtrace::print::h7079288e0a26dfcc
[INFO] [stdout]                                at /rustc/1871252fc8bb672d40787e67404e6eaae7059369/library/std/src/sys_common/backtrace.rs:34:9
[INFO] [stdout]    9:     0x55e671ec2129 - std::panicking::default_hook::{{closure}}::hb063ecec81a736ba
[INFO] [stdout]   10:     0x55e671ec1e6d - std::panicking::default_hook::hd56ee406bf547b5c
[INFO] [stdout]                                at /rustc/1871252fc8bb672d40787e67404e6eaae7059369/library/std/src/panicking.rs:298:9
[INFO] [stdout]   11:     0x55e671ec25c3 - std::panicking::rust_panic_with_hook::h624aa3ca42ebb8f2
[INFO] [stdout]                                at /rustc/1871252fc8bb672d40787e67404e6eaae7059369/library/std/src/panicking.rs:795:13
[INFO] [stdout]   12:     0x55e671ec246b - std::panicking::begin_panic_handler::{{closure}}::hbc4e76194a5e287c
[INFO] [stdout]                                at /rustc/1871252fc8bb672d40787e67404e6eaae7059369/library/std/src/panicking.rs:656:13
[INFO] [stdout]   13:     0x55e671ec14a9 - std::sys_common::backtrace::__rust_end_short_backtrace::h847fedc9d1ff7b6d
[INFO] [stdout]                                at /rustc/1871252fc8bb672d40787e67404e6eaae7059369/library/std/src/sys_common/backtrace.rs:171:18
[INFO] [stdout]   14:     0x55e671ec21d7 - rust_begin_unwind
[INFO] [stdout]                                at /rustc/1871252fc8bb672d40787e67404e6eaae7059369/library/std/src/panicking.rs:652:5
[INFO] [stdout]   15:     0x55e671ea5b63 - core::panicking::panic_fmt::hec11a924b87ce965
[INFO] [stdout]                                at /rustc/1871252fc8bb672d40787e67404e6eaae7059369/library/core/src/panicking.rs:72:14
[INFO] [stdout]   16:     0x55e671ea5c0c - core::panicking::panic::hb6a980c1ddfde273
[INFO] [stdout]                                at /rustc/1871252fc8bb672d40787e67404e6eaae7059369/library/core/src/panicking.rs:146:5
[INFO] [stdout]   17:     0x55e671ea7bb7 - rust_out::extend_vec::hf46a2aa34032ff1f
[INFO] [stdout]   18:     0x55e671ea7c1c - rust_out::main::h696a342f0ae7cd72
[INFO] [stdout]   19:     0x55e671ea6833 - core::ops::function::FnOnce::call_once::hacff659aa20c7b40
[INFO] [stdout]   20:     0x55e671ea6306 - std::sys_common::backtrace::__rust_begin_short_backtrace::hcc6b8bea3112e884
[INFO] [stdout]   21:     0x55e671ea6359 - std::rt::lang_start::{{closure}}::h4db0ca8543e29a47
[INFO] [stdout]   22:     0x55e671ebd48d - core::ops::function::impls::<impl core::ops::function::FnOnce<A> for &F>::call_once::h239f0051f1e18680
[INFO] [stdout]                                at /rustc/1871252fc8bb672d40787e67404e6eaae7059369/library/core/src/ops/function.rs:284:13
[INFO] [stdout]   23:     0x55e671ebd48d - std::panicking::try::do_call::hf7072797cbfea7fa
[INFO] [stdout]                                at /rustc/1871252fc8bb672d40787e67404e6eaae7059369/library/std/src/panicking.rs:559:40
[INFO] [stdout]   24:     0x55e671ebd48d - std::panicking::try::h3a37e38691a5244b
[INFO] [stdout]                                at /rustc/1871252fc8bb672d40787e67404e6eaae7059369/library/std/src/panicking.rs:523:19
[INFO] [stdout]   25:     0x55e671ebd48d - std::panic::catch_unwind::hc7cc1460e4236209
[INFO] [stdout]                                at /rustc/1871252fc8bb672d40787e67404e6eaae7059369/library/std/src/panic.rs:149:14
[INFO] [stdout]   26:     0x55e671ebd48d - std::rt::lang_start_internal::{{closure}}::hce632608b277cffc
[INFO] [stdout]                                at /rustc/1871252fc8bb672d40787e67404e6eaae7059369/library/std/src/rt.rs:141:48
[INFO] [stdout]   27:     0x55e671ebd48d - std::panicking::try::do_call::hafc0f13e6abd9d79
[INFO] [stdout]                                at /rustc/1871252fc8bb672d40787e67404e6eaae7059369/library/std/src/panicking.rs:559:40
[INFO] [stdout]   28:     0x55e671ebd48d - std::panicking::try::h67b8f1800ef15799
[INFO] [stdout]                                at /rustc/1871252fc8bb672d40787e67404e6eaae7059369/library/std/src/panicking.rs:523:19
[INFO] [stdout]   29:     0x55e671ebd48d - std::panic::catch_unwind::he5b260dc522c68be
[INFO] [stdout]                                at /rustc/1871252fc8bb672d40787e67404e6eaae7059369/library/std/src/panic.rs:149:14
[INFO] [stdout]   30:     0x55e671ebd48d - std::rt::lang_start_internal::hf119eb75d1ffe221
[INFO] [stdout]                                at /rustc/1871252fc8bb672d40787e67404e6eaae7059369/library/std/src/rt.rs:141:20
[INFO] [stdout]   31:     0x55e671ea6337 - std::rt::lang_start::ha9360cc92730957e
[INFO] [stdout]   32:     0x55e671ea7cb5 - main
[INFO] [stdout]   33:     0x7f8acafbfd90 - <unknown>
[INFO] [stdout]   34:     0x7f8acafbfe40 - __libc_start_main
[INFO] [stdout]   35:     0x55e671ea6235 - _start
[INFO] [stdout]   36:                0x0 - <unknown>
[INFO] [stdout] 
[INFO] [stdout] 
[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] 11 |       let four = sum!(a);
[INFO] [stdout]    |                       ^ not found in this scope
[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] 4 | 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[E0412]: cannot find type `T` in this scope
[INFO] [stdout]  --> src/ch02/s9_unsafe_rust.rs:121:49
[INFO] [stdout]   |
[INFO] [stdout] 4 | 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] 4 | pub fn insert<T>(&mut self, index: usize, element: T) {
[INFO] [stdout]   |              +++
[INFO] [stdout] 
[INFO] [stdout] error[E0433]: failed to resolve: use of undeclared crate or module `ptr`
[INFO] [stdout]   --> src/ch02/s9_unsafe_rust.rs:132:13
[INFO] [stdout]    |
[INFO] [stdout] 15 |             ptr::copy(p, p.offset(1), len - index);
[INFO] [stdout]    |             ^^^ use of undeclared crate or module `ptr`
[INFO] [stdout]    |
[INFO] [stdout] help: a builtin type with a similar name exists
[INFO] [stdout]    |
[INFO] [stdout] 15 |             str::copy(p, p.offset(1), len - index);
[INFO] [stdout]    |             ~~~
[INFO] [stdout] help: consider importing one of these items
[INFO] [stdout]    |
[INFO] [stdout] 3  + use core::ptr;
[INFO] [stdout]    |
[INFO] [stdout] 3  + use std::ptr;
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] error[E0433]: failed to resolve: use of undeclared crate or module `ptr`
[INFO] [stdout]   --> src/ch02/s9_unsafe_rust.rs:133:13
[INFO] [stdout]    |
[INFO] [stdout] 16 |             ptr::write(p, element);
[INFO] [stdout]    |             ^^^ use of undeclared crate or module `ptr`
[INFO] [stdout]    |
[INFO] [stdout] help: a builtin type with a similar name exists
[INFO] [stdout]    |
[INFO] [stdout] 16 |             str::write(p, element);
[INFO] [stdout]    |             ~~~
[INFO] [stdout] help: consider importing one of these items
[INFO] [stdout]    |
[INFO] [stdout] 3  + use core::ptr;
[INFO] [stdout]    |
[INFO] [stdout] 3  + 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: E0412, E0433.
[INFO] [stdout] For more information about an error, try `rustc --explain E0412`.
[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:227:42
[INFO] [stdout]    |
[INFO] [stdout] 82 |         let (y2,x2 ); // 此处交换，会报错，注意编译错误
[INFO] [stdout]    |                 -- binding `x2` declared here
[INFO] [stdout] 83 |         x2 = Hello::new("x2", 13);
[INFO] [stdout] 84 |         y2 = MyBox::new(Hello::new("y2", &x2));
[INFO] [stdout]    |                                          ^^^ borrowed value does not live long enough
[INFO] [stdout] 85 |     }
[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/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] 17 |         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/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' has overflowed its stack
[INFO] [stdout] fatal runtime error: stack overflow
[INFO] [stdout] 
[INFO] [stdout] 
[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:384:5
[INFO] [stdout]    |
[INFO] [stdout] 63 |     #[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:328:5
[INFO] [stdout]   |
[INFO] [stdout] 7 | 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:348:27
[INFO] [stdout]    |
[INFO] [stdout] 27 |             input.parse::<Token![->]>()?;
[INFO] [stdout]    |                           ^^^^^
[INFO] [stdout] 
[INFO] [stdout] error: cannot find macro `Token` in this scope
[INFO] [stdout]   --> src/ch02/s8_metaprogramming.rs:350:27
[INFO] [stdout]    |
[INFO] [stdout] 29 |             input.parse::<Token![::]>()?;
[INFO] [stdout]    |                           ^^^^^
[INFO] [stdout] 
[INFO] [stdout] error: cannot find macro `bracketed` in this scope
[INFO] [stdout]   --> src/ch02/s8_metaprogramming.rs:351:33
[INFO] [stdout]    |
[INFO] [stdout] 30 |             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:365:27
[INFO] [stdout]    |
[INFO] [stdout] 44 |             input.parse::<Token![:]>()?;
[INFO] [stdout]    |                           ^^^^^
[INFO] [stdout] 
[INFO] [stdout] error: cannot find macro `Token` in this scope
[INFO] [stdout]   --> src/ch02/s8_metaprogramming.rs:367:27
[INFO] [stdout]    |
[INFO] [stdout] 46 |             input.parse::<Token![||]>()?;
[INFO] [stdout]    |                           ^^^^^
[INFO] [stdout] 
[INFO] [stdout] error: cannot find macro `Token` in this scope
[INFO] [stdout]   --> src/ch02/s8_metaprogramming.rs:369:27
[INFO] [stdout]    |
[INFO] [stdout] 48 |             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:391:13
[INFO] [stdout]    |
[INFO] [stdout] 70 |         } = 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:397:24
[INFO] [stdout]    |
[INFO] [stdout] 76 |         let expanded = quote! {
[INFO] [stdout]    |                        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] error[E0433]: failed to resolve: use of undeclared crate or module `proc_macro2`
[INFO] [stdout]   --> src/ch02/s8_metaprogramming.rs:395:44
[INFO] [stdout]    |
[INFO] [stdout] 74 |         let fn_name = Ident::new(&fn_name, proc_macro2::Span::call_site());
[INFO] [stdout]    |                                            ^^^^^^^^^^^ use of undeclared crate or module `proc_macro2`
[INFO] [stdout] 
[INFO] [stdout] error[E0412]: cannot find type `Type` in this scope
[INFO] [stdout]   --> src/ch02/s8_metaprogramming.rs:331:20
[INFO] [stdout]    |
[INFO] [stdout] 10 |         pub model: Type,
[INFO] [stdout]    |                    ^^^^ not found in this scope
[INFO] [stdout] 
[INFO] [stdout] error[E0412]: cannot find type `Ident` in this scope
[INFO] [stdout]   --> src/ch02/s8_metaprogramming.rs:332:20
[INFO] [stdout]    |
[INFO] [stdout] 11 |         pub table: Ident,
[INFO] [stdout]    |                    ^^^^^ not found in this scope
[INFO] [stdout] 
[INFO] [stdout] error[E0412]: cannot find type `Ident` in this scope
[INFO] [stdout]   --> src/ch02/s8_metaprogramming.rs:338:20
[INFO] [stdout]    |
[INFO] [stdout] 17 |         pub name1: Ident,
[INFO] [stdout]    |                    ^^^^^ not found in this scope
[INFO] [stdout] 
[INFO] [stdout] error[E0412]: cannot find type `Type` in this scope
[INFO] [stdout]   --> src/ch02/s8_metaprogramming.rs:339:18
[INFO] [stdout]    |
[INFO] [stdout] 18 |         pub ty1: Type,
[INFO] [stdout]    |                  ^^^^ not found in this scope
[INFO] [stdout] 
[INFO] [stdout] error[E0412]: cannot find type `Ident` in this scope
[INFO] [stdout]   --> src/ch02/s8_metaprogramming.rs:340:20
[INFO] [stdout]    |
[INFO] [stdout] 19 |         pub name2: Ident,
[INFO] [stdout]    |                    ^^^^^ not found in this scope
[INFO] [stdout] 
[INFO] [stdout] error[E0412]: cannot find type `Type` in this scope
[INFO] [stdout]   --> src/ch02/s8_metaprogramming.rs:341:18
[INFO] [stdout]    |
[INFO] [stdout] 20 |         pub ty2: Type,
[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:344:10
[INFO] [stdout]    |
[INFO] [stdout] 23 |     impl Parse for DbOpByOrBy {
[INFO] [stdout]    |          ^^^^^ not found in this scope
[INFO] [stdout] 
[INFO] [stdout] error[E0412]: cannot find type `ParseStream` in this scope
[INFO] [stdout]   --> src/ch02/s8_metaprogramming.rs:345:25
[INFO] [stdout]    |
[INFO] [stdout] 24 |         fn parse(input: ParseStream) -> Result<Self> {
[INFO] [stdout]    |                         ^^^^^^^^^^^ not found in this scope
[INFO] [stdout] 
[INFO] [stdout] error[E0412]: cannot find type `Type` in this scope
[INFO] [stdout]   --> src/ch02/s8_metaprogramming.rs:347:24
[INFO] [stdout]    |
[INFO] [stdout] 26 |             let model: Type = input.parse()?;
[INFO] [stdout]    |                        ^^^^ not found in this scope
[INFO] [stdout] 
[INFO] [stdout] error[E0412]: cannot find type `Ident` in this scope
[INFO] [stdout]   --> src/ch02/s8_metaprogramming.rs:349:24
[INFO] [stdout]    |
[INFO] [stdout] 28 |             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:362:10
[INFO] [stdout]    |
[INFO] [stdout] 41 |     impl Parse for FieldContentOr {
[INFO] [stdout]    |          ^^^^^ not found in this scope
[INFO] [stdout] 
[INFO] [stdout] error[E0412]: cannot find type `ParseStream` in this scope
[INFO] [stdout]   --> src/ch02/s8_metaprogramming.rs:363:25
[INFO] [stdout]    |
[INFO] [stdout] 42 |         fn parse(input: ParseStream) -> Result<Self> {
[INFO] [stdout]    |                         ^^^^^^^^^^^ not found in this scope
[INFO] [stdout] 
[INFO] [stdout] error[E0412]: cannot find type `Ident` in this scope
[INFO] [stdout]   --> src/ch02/s8_metaprogramming.rs:364:24
[INFO] [stdout]    |
[INFO] [stdout] 43 |             let name1: Ident = input.parse()?;
[INFO] [stdout]    |                        ^^^^^ not found in this scope
[INFO] [stdout] 
[INFO] [stdout] error[E0412]: cannot find type `Type` in this scope
[INFO] [stdout]   --> src/ch02/s8_metaprogramming.rs:366:22
[INFO] [stdout]    |
[INFO] [stdout] 45 |             let ty1: Type = input.parse()?;
[INFO] [stdout]    |                      ^^^^ not found in this scope
[INFO] [stdout] 
[INFO] [stdout] error[E0412]: cannot find type `Ident` in this scope
[INFO] [stdout]   --> src/ch02/s8_metaprogramming.rs:368:24
[INFO] [stdout]    |
[INFO] [stdout] 47 |             let name2: Ident = input.parse()?;
[INFO] [stdout]    |                        ^^^^^ not found in this scope
[INFO] [stdout] 
[INFO] [stdout] error[E0412]: cannot find type `Type` in this scope
[INFO] [stdout]   --> src/ch02/s8_metaprogramming.rs:370:22
[INFO] [stdout]    |
[INFO] [stdout] 49 |             let ty2: Type = input.parse()?;
[INFO] [stdout]    |                      ^^^^ not found in this scope
[INFO] [stdout] 
[INFO] [stdout] error[E0412]: cannot find type `TokenStream` in this scope
[INFO] [stdout]   --> src/ch02/s8_metaprogramming.rs:385:30
[INFO] [stdout]    |
[INFO] [stdout] 64 |     pub fn find_by_or(input: TokenStream) -> TokenStream {
[INFO] [stdout]    |                              ^^^^^^^^^^^ not found in this scope
[INFO] [stdout] 
[INFO] [stdout] error[E0412]: cannot find type `TokenStream` in this scope
[INFO] [stdout]   --> src/ch02/s8_metaprogramming.rs:385:46
[INFO] [stdout]    |
[INFO] [stdout] 64 |     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 undeclared crate or module `token`
[INFO] [stdout]   --> src/ch02/s8_metaprogramming.rs:333:28
[INFO] [stdout]    |
[INFO] [stdout] 12 |         pub bracket_token: token::Bracket,
[INFO] [stdout]    |                            ^^^^^ use of undeclared crate or module `token`
[INFO] [stdout] 
[INFO] [stdout] error[E0433]: failed to resolve: use of undeclared type `Ident`
[INFO] [stdout]   --> src/ch02/s8_metaprogramming.rs:395:23
[INFO] [stdout]    |
[INFO] [stdout] 74 |         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:407:9
[INFO] [stdout]    |
[INFO] [stdout] 86 |         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, E0412, E0433.
[INFO] [stdout] For more information about an error, try `rustc --explain E0405`.
[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] 22 | fn step1<'a>(r_c1: &MyCell<&'a i32>) {
[INFO] [stdout]    |          -- lifetime `'a` defined here
[INFO] [stdout] 23 |     let val: i32 = 13;
[INFO] [stdout]    |         --- binding `val` declared here
[INFO] [stdout] 24 |     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] 25 |     println!("step1 value: {}", r_c1.value);
[INFO] [stdout] 26 | } // step1调用完，栈帧将被清理，val将不复存在，&val将成为悬垂指针
[INFO] [stdout]    | - `val` 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 541) stdout ----
[INFO] [stdout] error[E0597]: `s` does not live long enough
[INFO] [stdout]   --> src/ch02/s9_unsafe_rust.rs:560:12
[INFO] [stdout]    |
[INFO] [stdout] 20 |     let s = "hello".to_string();
[INFO] [stdout]    |         - binding `s` declared here
[INFO] [stdout] 21 |     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] 22 | }
[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::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] 4 |         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] 1 | #![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/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] 4 | 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] 9 |     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] 4 | 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] 5 |     get_row(id)
[INFO] [stdout]   |     ^^^^^^^ not found in this scope
[INFO] [stdout] 
[INFO] [stdout] error[E0433]: failed to resolve: use of undeclared crate or module `json`
[INFO] [stdout]  --> src/ch03/s2_async_await.rs:74:5
[INFO] [stdout]   |
[INFO] [stdout] 7 |     json::encode(row)
[INFO] [stdout]   |     ^^^^ use of undeclared crate or module `json`
[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] 9 |     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/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] 4 | 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] 7 | 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] 3 | 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] 4 | 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] 3 | 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] 4 | let id = id_rpc(&my_server).await;
[INFO] [stdout] 5 | 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] 3 | 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] 7 | 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] 4 | 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] 5 | let row = get_row(id).await;
[INFO] [stdout]   |           ^^^^^^^ not found in this scope
[INFO] [stdout] 
[INFO] [stdout] error[E0433]: failed to resolve: use of undeclared crate or module `json`
[INFO] [stdout]  --> src/ch03/s2_async_await.rs:87:15
[INFO] [stdout]   |
[INFO] [stdout] 6 | let encoded = json::encode(row);
[INFO] [stdout]   |               ^^^^ use of undeclared crate or module `json`
[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] 7 | 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 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] 8 | fn bar() -> impl Future<Output = u8> {
[INFO] [stdout]   |                  ^^^^^^ not found in this scope
[INFO] [stdout]   |
[INFO] [stdout] help: consider importing one of these items
[INFO] [stdout]   |
[INFO] [stdout] 4 + use core::future::Future;
[INFO] [stdout]   |
[INFO] [stdout] 4 + 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/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] 3 | #![feature(generators, generator_trait)]
[INFO] [stdout]   |            ^^^^^^^^^^ feature has been removed
[INFO] [stdout]   |
[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:242:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | 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:247:9
[INFO] [stdout]   |
[INFO] [stdout] 9 |         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(coroutines)]` to the crate attributes to enable
[INFO] [stdout]   = note: this compiler was built on 2024-05-15; 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] 10 |         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(coroutines)]` to the crate attributes to enable
[INFO] [stdout]    = note: this compiler was built on 2024-05-15; 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] 11 |         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(coroutines)]` to the crate attributes to enable
[INFO] [stdout]    = note: this compiler was built on 2024-05-15; 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:247:9
[INFO] [stdout]   |
[INFO] [stdout] 9 |         yield 1;
[INFO] [stdout]   |         ^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout] help: use `#[coroutine]` to make this closure a coroutine
[INFO] [stdout]   |
[INFO] [stdout] 8 |     let mut gen = #[coroutine] || {
[INFO] [stdout]   |                   ++++++++++++
[INFO] [stdout] 
[INFO] [stdout] error[E0635]: unknown feature `generator_trait`
[INFO] [stdout]  --> src/ch03/s2_async_await.rs:241:24
[INFO] [stdout]   |
[INFO] [stdout] 3 | #![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:8:19: 8:21}>` in the current scope
[INFO] [stdout]   --> src/ch03/s2_async_await.rs:259:32
[INFO] [stdout]    |
[INFO] [stdout] 21 |     let c = Pin::new(&mut gen).resume(());
[INFO] [stdout]    |                                ^^^^^^ method not found in `Pin<&mut {coroutine@src/ch03/s2_async_await.rs:8:19: 8:21}>`
[INFO] [stdout]   --> /rustc/1871252fc8bb672d40787e67404e6eaae7059369/library/core/src/ops/coroutine.rs:116:8
[INFO] [stdout]    |
[INFO] [stdout]    = note: the method is available for `Pin<&mut {coroutine@src/ch03/s2_async_await.rs:8:19: 8: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] 4  + 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:8:19: 8:21}>` in the current scope
[INFO] [stdout]   --> src/ch03/s2_async_await.rs:261:32
[INFO] [stdout]    |
[INFO] [stdout] 23 |     let c = Pin::new(&mut gen).resume(());
[INFO] [stdout]    |                                ^^^^^^ method not found in `Pin<&mut {coroutine@src/ch03/s2_async_await.rs:8:19: 8:21}>`
[INFO] [stdout]   --> /rustc/1871252fc8bb672d40787e67404e6eaae7059369/library/core/src/ops/coroutine.rs:116:8
[INFO] [stdout]    |
[INFO] [stdout]    = note: the method is available for `Pin<&mut {coroutine@src/ch03/s2_async_await.rs:8:19: 8: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] 4  + 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:8:19: 8:21}>` in the current scope
[INFO] [stdout]   --> src/ch03/s2_async_await.rs:263:32
[INFO] [stdout]    |
[INFO] [stdout] 25 |     let c = Pin::new(&mut gen).resume(());
[INFO] [stdout]    |                                ^^^^^^ method not found in `Pin<&mut {coroutine@src/ch03/s2_async_await.rs:8:19: 8:21}>`
[INFO] [stdout]   --> /rustc/1871252fc8bb672d40787e67404e6eaae7059369/library/core/src/ops/coroutine.rs:116:8
[INFO] [stdout]    |
[INFO] [stdout]    = note: the method is available for `Pin<&mut {coroutine@src/ch03/s2_async_await.rs:8:19: 8: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] 4  + 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:8:19: 8:21}>` in the current scope
[INFO] [stdout]   --> src/ch03/s2_async_await.rs:265:32
[INFO] [stdout]    |
[INFO] [stdout] 27 |     let c = Pin::new(&mut gen).resume(());
[INFO] [stdout]    |                                ^^^^^^ method not found in `Pin<&mut {coroutine@src/ch03/s2_async_await.rs:8:19: 8:21}>`
[INFO] [stdout]   --> /rustc/1871252fc8bb672d40787e67404e6eaae7059369/library/core/src/ops/coroutine.rs:116:8
[INFO] [stdout]    |
[INFO] [stdout]    = note: the method is available for `Pin<&mut {coroutine@src/ch03/s2_async_await.rs:8:19: 8: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] 4  + use std::ops::Coroutine;
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] error: aborting due to 11 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 340) stdout ----
[INFO] [stdout] error[E0557]: feature has been removed
[INFO] [stdout]  --> src/ch03/s2_async_await.rs:343:12
[INFO] [stdout]   |
[INFO] [stdout] 5 | #![feature(generators, generator_trait)]
[INFO] [stdout]   |            ^^^^^^^^^^ feature has been removed
[INFO] [stdout]   |
[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:346:5
[INFO] [stdout]   |
[INFO] [stdout] 8 | 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:351:13
[INFO] [stdout]    |
[INFO] [stdout] 13 |             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(coroutines)]` to the crate attributes to enable
[INFO] [stdout]    = note: this compiler was built on 2024-05-15; 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:351:13
[INFO] [stdout]    |
[INFO] [stdout] 13 |             yield x;
[INFO] [stdout]    |             ^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout] help: use `#[coroutine]` to make this closure a coroutine
[INFO] [stdout]    |
[INFO] [stdout] 11 |     #[coroutine] move || {
[INFO] [stdout]    |     ++++++++++++
[INFO] [stdout] 
[INFO] [stdout] error[E0635]: unknown feature `generator_trait`
[INFO] [stdout]  --> src/ch03/s2_async_await.rs:343:24
[INFO] [stdout]   |
[INFO] [stdout] 5 | #![feature(generators, generator_trait)]
[INFO] [stdout]   |                        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] error: aborting due to 5 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 273) stdout ----
[INFO] [stdout] error[E0557]: feature has been removed
[INFO] [stdout]  --> src/ch03/s2_async_await.rs:275:12
[INFO] [stdout]   |
[INFO] [stdout] 4 | #![feature(generators, generator_trait)]
[INFO] [stdout]   |            ^^^^^^^^^^ feature has been removed
[INFO] [stdout]   |
[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:276:16
[INFO] [stdout]   |
[INFO] [stdout] 5 | 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] 4 | #![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::e_generator (line 403) stdout ----
[INFO] [stdout] error[E0557]: feature has been removed
[INFO] [stdout]  --> src/ch03/s2_async_await.rs:406:12
[INFO] [stdout]   |
[INFO] [stdout] 5 | #![feature(generators, generator_trait)]
[INFO] [stdout]   |            ^^^^^^^^^^ feature has been removed
[INFO] [stdout]   |
[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:408:16
[INFO] [stdout]   |
[INFO] [stdout] 7 | 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:414:13
[INFO] [stdout]    |
[INFO] [stdout] 13 |             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(coroutines)]` to the crate attributes to enable
[INFO] [stdout]    = note: this compiler was built on 2024-05-15; 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:414:13
[INFO] [stdout]    |
[INFO] [stdout] 13 |             yield ();
[INFO] [stdout]    |             ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout] help: use `#[coroutine]` to make this closure a coroutine
[INFO] [stdout]    |
[INFO] [stdout] 11 |     #[coroutine] move || {
[INFO] [stdout]    |     ++++++++++++
[INFO] [stdout] 
[INFO] [stdout] error[E0635]: unknown feature `generator_trait`
[INFO] [stdout]  --> src/ch03/s2_async_await.rs:406:24
[INFO] [stdout]   |
[INFO] [stdout] 5 | #![feature(generators, generator_trait)]
[INFO] [stdout]   |                        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] error: aborting due to 5 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] 4 | #![feature(generators, generator_trait)]
[INFO] [stdout]   |            ^^^^^^^^^^ feature has been removed
[INFO] [stdout]   |
[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:376:16
[INFO] [stdout]   |
[INFO] [stdout] 7 | 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:383:13
[INFO] [stdout]    |
[INFO] [stdout] 14 |             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(coroutines)]` to the crate attributes to enable
[INFO] [stdout]    = note: this compiler was built on 2024-05-15; 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:383:13
[INFO] [stdout]    |
[INFO] [stdout] 14 |             yield x;
[INFO] [stdout]    |             ^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout] help: use `#[coroutine]` to make this closure a coroutine
[INFO] [stdout]    |
[INFO] [stdout] 10 |     #[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] 4 | #![feature(generators, generator_trait)]
[INFO] [stdout]   |                        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] error: aborting due to 5 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 436) stdout ----
[INFO] [stdout] error[E0557]: feature has been removed
[INFO] [stdout]  --> src/ch03/s2_async_await.rs:438:12
[INFO] [stdout]   |
[INFO] [stdout] 4 | #![feature(generators, generator_trait)]
[INFO] [stdout]   |            ^^^^^^^^^^ feature has been removed
[INFO] [stdout]   |
[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:440:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | 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:448:13
[INFO] [stdout]    |
[INFO] [stdout] 14 |             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(coroutines)]` to the crate attributes to enable
[INFO] [stdout]    = note: this compiler was built on 2024-05-15; 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:17
[INFO] [stdout]    |
[INFO] [stdout] 16 |                 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(coroutines)]` to the crate attributes to enable
[INFO] [stdout]    = note: this compiler was built on 2024-05-15; 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:448:13
[INFO] [stdout]    |
[INFO] [stdout] 14 |             yield x;
[INFO] [stdout]    |             ^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout] help: use `#[coroutine]` to make this closure a coroutine
[INFO] [stdout]    |
[INFO] [stdout] 10 |     #[coroutine] move || {
[INFO] [stdout]    |     ++++++++++++
[INFO] [stdout] 
[INFO] [stdout] error[E0635]: unknown feature `generator_trait`
[INFO] [stdout]  --> src/ch03/s2_async_await.rs:438:24
[INFO] [stdout]   |
[INFO] [stdout] 4 | #![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::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] 3 | #![feature(generators, generator_trait)]
[INFO] [stdout]   |            ^^^^^^^^^^ feature has been removed
[INFO] [stdout]   |
[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:473:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | 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:480:9
[INFO] [stdout]    |
[INFO] [stdout] 11 |         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(coroutines)]` to the crate attributes to enable
[INFO] [stdout]    = note: this compiler was built on 2024-05-15; 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:474:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | 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] 1 | #![deny(warnings)]
[INFO] [stdout]   |         ^^^^^^^^
[INFO] [stdout]   = note: `#[deny(unused_imports)]` implied by `#[deny(warnings)]`
[INFO] [stdout] 
[INFO] [stdout] error: `yield` can only be used in `#[coroutine]` closures, or `gen` blocks
[INFO] [stdout]   --> src/ch03/s2_async_await.rs:480:9
[INFO] [stdout]    |
[INFO] [stdout] 11 |         yield borrowed.len();
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout] help: use `#[coroutine]` to make this closure a coroutine
[INFO] [stdout]    |
[INFO] [stdout] 7  |     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] 3 | #![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:478:24
[INFO] [stdout]    |
[INFO] [stdout] 9  |         let borrowed = &to_borrow;
[INFO] [stdout]    |                        ^^^^^^^^^^
[INFO] [stdout] 10 |         // error[E0626]: borrow may still be in use when generator yields
[INFO] [stdout] 11 |         yield borrowed.len();
[INFO] [stdout]    |         -------------------- possible yield occurs here
[INFO] [stdout] 
[INFO] [stdout] error: aborting due to 7 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 644) stdout ----
[INFO] [stdout] error[E0433]: failed to resolve: use of undeclared crate or module `mem`
[INFO] [stdout]   --> src/ch03/s2_async_await.rs:659:23
[INFO] [stdout]    |
[INFO] [stdout] 17 |     let stack_value = mem::replace(&mut *heap_value, SelfReferential {
[INFO] [stdout]    |                       ^^^ use of undeclared crate or module `mem`
[INFO] [stdout]    |
[INFO] [stdout] help: consider importing one of these items
[INFO] [stdout]    |
[INFO] [stdout] 3  + use core::mem;
[INFO] [stdout]    |
[INFO] [stdout] 3  + 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] 19 |         _pin: PhantomPinned,
[INFO] [stdout]    |               ^^^^^^^^^^^^^ not found in this scope
[INFO] [stdout]    |
[INFO] [stdout] help: consider importing one of these items
[INFO] [stdout]    |
[INFO] [stdout] 3  + use core::marker::PhantomPinned;
[INFO] [stdout]    |
[INFO] [stdout] 3  + 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] 19 |         _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::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] 9  |     let a = String::from("Hello");
[INFO] [stdout]    |         - move occurs because `a` has type `String`, which does not implement the `Copy` trait
[INFO] [stdout] 10 |     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] 10 |     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 721) stdout ----
[INFO] [stdout] error[E0277]: `PhantomPinned` cannot be unpinned
[INFO] [stdout]   --> src/ch03/s2_async_await.rs:764:24
[INFO] [stdout]    |
[INFO] [stdout] 45 |     std::mem::swap(sf1.get_mut(), sf2.get_mut());
[INFO] [stdout]    |                        ^^^^^^^ within `SelfReferential`, the trait `Unpin` is not implemented for `PhantomPinned`, which is required by `SelfReferential: Unpin`
[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] 7  | struct SelfReferential {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^
[INFO] [stdout] note: required by a bound in `Pin::<&'a mut T>::get_mut`
[INFO] [stdout]   --> /rustc/1871252fc8bb672d40787e67404e6eaae7059369/library/core/src/pin.rs:1547:5
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: `PhantomPinned` cannot be unpinned
[INFO] [stdout]   --> src/ch03/s2_async_await.rs:764:39
[INFO] [stdout]    |
[INFO] [stdout] 45 |     std::mem::swap(sf1.get_mut(), sf2.get_mut());
[INFO] [stdout]    |                                       ^^^^^^^ within `SelfReferential`, the trait `Unpin` is not implemented for `PhantomPinned`, which is required by `SelfReferential: Unpin`
[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] 7  | struct SelfReferential {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^
[INFO] [stdout] note: required by a bound in `Pin::<&'a mut T>::get_mut`
[INFO] [stdout]   --> /rustc/1871252fc8bb672d40787e67404e6eaae7059369/library/core/src/pin.rs:1547:5
[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 576) stdout ----
[INFO] [stdout] error[E0557]: feature has been removed
[INFO] [stdout]  --> src/ch03/s2_async_await.rs:577:12
[INFO] [stdout]   |
[INFO] [stdout] 3 | #![feature(generators, generator_trait)]
[INFO] [stdout]   |            ^^^^^^^^^^ feature has been removed
[INFO] [stdout]   |
[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:578:16
[INFO] [stdout]   |
[INFO] [stdout] 4 | 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:586:9
[INFO] [stdout]    |
[INFO] [stdout] 12 |         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(coroutines)]` to the crate attributes to enable
[INFO] [stdout]    = note: this compiler was built on 2024-05-15; 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:593:9
[INFO] [stdout]    |
[INFO] [stdout] 19 |         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(coroutines)]` to the crate attributes to enable
[INFO] [stdout]    = note: this compiler was built on 2024-05-15; 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:586:9
[INFO] [stdout]    |
[INFO] [stdout] 12 |         yield borrowed.len();
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout] help: use `#[coroutine]` to make this closure a coroutine
[INFO] [stdout]    |
[INFO] [stdout] 9  |     let gen1 = #[coroutine] static || {
[INFO] [stdout]    |                ++++++++++++
[INFO] [stdout] 
[INFO] [stdout] error: `yield` can only be used in `#[coroutine]` closures, or `gen` blocks
[INFO] [stdout]   --> src/ch03/s2_async_await.rs:593:9
[INFO] [stdout]    |
[INFO] [stdout] 19 |         yield borrowed.len();
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout] help: use `#[coroutine]` to make this closure a coroutine
[INFO] [stdout]    |
[INFO] [stdout] 16 |     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] 3 | #![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:9:16: 9:25}>` in the current scope
[INFO] [stdout]   --> src/ch03/s2_async_await.rs:600:58
[INFO] [stdout]    |
[INFO] [stdout] 26 |     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:9:16: 9:25}>`
[INFO] [stdout]   --> /rustc/1871252fc8bb672d40787e67404e6eaae7059369/library/core/src/ops/coroutine.rs:116:8
[INFO] [stdout]    |
[INFO] [stdout]    = note: the method is available for `Pin<&mut {static coroutine@src/ch03/s2_async_await.rs:9:16: 9: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] 4  + 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:16:16: 16:25}>` in the current scope
[INFO] [stdout]   --> src/ch03/s2_async_await.rs:604:58
[INFO] [stdout]    |
[INFO] [stdout] 30 |     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:16:16: 16:25}>`
[INFO] [stdout]   --> /rustc/1871252fc8bb672d40787e67404e6eaae7059369/library/core/src/ops/coroutine.rs:116:8
[INFO] [stdout]    |
[INFO] [stdout]    = note: the method is available for `Pin<&mut {static coroutine@src/ch03/s2_async_await.rs:16:16: 16: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] 4  + 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:9:16: 9:25}>` in the current scope
[INFO] [stdout]   --> src/ch03/s2_async_await.rs:608:30
[INFO] [stdout]    |
[INFO] [stdout] 34 |     let _ = pinned1.as_mut().resume(());
[INFO] [stdout]    |                              ^^^^^^ method not found in `Pin<&mut {static coroutine@src/ch03/s2_async_await.rs:9:16: 9:25}>`
[INFO] [stdout]   --> /rustc/1871252fc8bb672d40787e67404e6eaae7059369/library/core/src/ops/coroutine.rs:116:8
[INFO] [stdout]    |
[INFO] [stdout]    = note: the method is available for `Pin<&mut {static coroutine@src/ch03/s2_async_await.rs:9:16: 9: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] 4  + 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:16:16: 16:25}>` in the current scope
[INFO] [stdout]   --> src/ch03/s2_async_await.rs:609:30
[INFO] [stdout]    |
[INFO] [stdout] 35 |     let _ = pinned2.as_mut().resume(());
[INFO] [stdout]    |                              ^^^^^^ method not found in `Pin<&mut {static coroutine@src/ch03/s2_async_await.rs:16:16: 16:25}>`
[INFO] [stdout]   --> /rustc/1871252fc8bb672d40787e67404e6eaae7059369/library/core/src/ops/coroutine.rs:116:8
[INFO] [stdout]    |
[INFO] [stdout]    = note: the method is available for `Pin<&mut {static coroutine@src/ch03/s2_async_await.rs:16:16: 16: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] 4  + use std::ops::Coroutine;
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] error: aborting due to 11 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::f_pin_unpin (line 957) stdout ----
[INFO] [stdout] error: this file contains an unclosed delimiter
[INFO] [stdout]   --> src/ch03/s2_async_await.rs:970:53
[INFO] [stdout]    |
[INFO] [stdout] 3  | fn main() { #[allow(non_snake_case)] fn _doctest_main_src_ch03_s2_async_await_rs_957_0() {
[INFO] [stdout]    |           - unclosed delimiter                                                           - unclosed delimiter
[INFO] [stdout] 4  | impl<Fut, F> Map<Fut, F> {
[INFO] [stdout]    |                          - unclosed delimiter
[INFO] [stdout] ...
[INFO] [stdout] 10 |     fn poll (mut self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll<T> {
[INFO] [stdout]    |                                                                         - unclosed delimiter
[INFO] [stdout] ...
[INFO] [stdout] 14 |             Poll::Ready(output) => { //             |
[INFO] [stdout]    |                                    - this delimiter might not be properly closed...
[INFO] [stdout] 15 |                 let f = self.f().take() // <--------+ allows this
[INFO] [stdout] 16 | } _doctest_main_src_ch03_s2_async_await_rs_957_0() }
[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/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] 30 |     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::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] 41 |     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/1871252fc8bb672d40787e67404e6eaae7059369/library/core/src/pin.rs:1547:5
[INFO] [stdout]    = note: the method was found for
[INFO] [stdout]            - `Pin<&'a mut T>`
[INFO] [stdout] help: consider pinning the expression
[INFO] [stdout]    |
[INFO] [stdout] 41 ~     std::mem::swap(let mut pinned = std::pin::pin!(sf1);
[INFO] [stdout] 42 ~     pinned.as_mut().get_mut(), sf1.get_mut());
[INFO] [stdout]    |
[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] 41 |     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/1871252fc8bb672d40787e67404e6eaae7059369/library/core/src/pin.rs:1547:5
[INFO] [stdout]    = note: the method was found for
[INFO] [stdout]            - `Pin<&'a mut T>`
[INFO] [stdout] help: consider pinning the expression
[INFO] [stdout]    |
[INFO] [stdout] 41 ~     std::mem::swap(sf1.get_mut(), let mut pinned = std::pin::pin!(sf1);
[INFO] [stdout] 42 ~     pinned.as_mut().get_mut());
[INFO] [stdout]    |
[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] 7 |     T: Generator<ResumeTy, Yield = ()>,
[INFO] [stdout]   |        ^^^^^^^^^ help: a trait with a similar name exists: `Iterator`
[INFO] [stdout]  --> /rustc/1871252fc8bb672d40787e67404e6eaae7059369/library/core/src/iter/traits/iterator.rs:44:1
[INFO] [stdout]   |
[INFO] [stdout]   = note: similarly named trait `Iterator` defined here
[INFO] [stdout] 
[INFO] [stdout] error[E0412]: cannot find type `ResumeTy` in this scope
[INFO] [stdout]  --> src/ch03/s2_async_await.rs:889:18
[INFO] [stdout]   |
[INFO] [stdout] 7 |     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] 5 | 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 one of these items
[INFO] [stdout]   |
[INFO] [stdout] 4 + use core::future::Future;
[INFO] [stdout]   |
[INFO] [stdout] 4 + 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] 10 |     struct GenFuture<T: Generator<ResumeTy, Yield = ()>>(T);
[INFO] [stdout]    |                         ^^^^^^^^^ help: a trait with a similar name exists: `Iterator`
[INFO] [stdout]   --> /rustc/1871252fc8bb672d40787e67404e6eaae7059369/library/core/src/iter/traits/iterator.rs:44:1
[INFO] [stdout]    |
[INFO] [stdout]    = note: similarly named trait `Iterator` defined here
[INFO] [stdout] 
[INFO] [stdout] error[E0412]: cannot find type `ResumeTy` in this scope
[INFO] [stdout]   --> src/ch03/s2_async_await.rs:892:35
[INFO] [stdout]    |
[INFO] [stdout] 10 |     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] 14 |     impl<T: Generator<ResumeTy, Yield = ()>> !Unpin for GenFuture<T> {}
[INFO] [stdout]    |             ^^^^^^^^^ help: a trait with a similar name exists: `Iterator`
[INFO] [stdout]   --> /rustc/1871252fc8bb672d40787e67404e6eaae7059369/library/core/src/iter/traits/iterator.rs:44:1
[INFO] [stdout]    |
[INFO] [stdout]    = note: similarly named trait `Iterator` defined here
[INFO] [stdout] 
[INFO] [stdout] error[E0412]: cannot find type `ResumeTy` in this scope
[INFO] [stdout]   --> src/ch03/s2_async_await.rs:896:23
[INFO] [stdout]    |
[INFO] [stdout] 14 |     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] 16 |     impl<T: Generator<ResumeTy, Yield = ()>> Future for GenFuture<T> {
[INFO] [stdout]    |                                              ^^^^^^ not found in this scope
[INFO] [stdout]    |
[INFO] [stdout] help: consider importing one of these items
[INFO] [stdout]    |
[INFO] [stdout] 4  + use core::future::Future;
[INFO] [stdout]    |
[INFO] [stdout] 4  + 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] 16 |     impl<T: Generator<ResumeTy, Yield = ()>> Future for GenFuture<T> {
[INFO] [stdout]    |             ^^^^^^^^^ help: a trait with a similar name exists: `Iterator`
[INFO] [stdout]   --> /rustc/1871252fc8bb672d40787e67404e6eaae7059369/library/core/src/iter/traits/iterator.rs:44:1
[INFO] [stdout]    |
[INFO] [stdout]    = note: similarly named trait `Iterator` defined here
[INFO] [stdout] 
[INFO] [stdout] error[E0412]: cannot find type `ResumeTy` in this scope
[INFO] [stdout]   --> src/ch03/s2_async_await.rs:898:23
[INFO] [stdout]    |
[INFO] [stdout] 16 |     impl<T: Generator<ResumeTy, Yield = ()>> Future for GenFuture<T> {
[INFO] [stdout]    |                       ^^^^^^^^ not found in this scope
[INFO] [stdout] 
[INFO] [stdout] error[E0412]: cannot find type `Pin` in this scope
[INFO] [stdout]   --> src/ch03/s2_async_await.rs:900:23
[INFO] [stdout]    |
[INFO] [stdout] 18 |         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 one of these items
[INFO] [stdout]    |
[INFO] [stdout] 4  + use core::pin::Pin;
[INFO] [stdout]    |
[INFO] [stdout] 4  + use std::pin::Pin;
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] error[E0412]: cannot find type `Context` in this scope
[INFO] [stdout]   --> src/ch03/s2_async_await.rs:900:48
[INFO] [stdout]    |
[INFO] [stdout] 18 |         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 one of these items
[INFO] [stdout]    |
[INFO] [stdout] 4  + use core::task::Context;
[INFO] [stdout]    |
[INFO] [stdout] 4  + use std::task::Context;
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] error[E0412]: cannot find type `Poll` in this scope
[INFO] [stdout]   --> src/ch03/s2_async_await.rs:900:64
[INFO] [stdout]    |
[INFO] [stdout] 18 |         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 one of these items
[INFO] [stdout]    |
[INFO] [stdout] 4  + use core::task::Poll;
[INFO] [stdout]    |
[INFO] [stdout] 4  + 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] 20 |             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 one of these items
[INFO] [stdout]    |
[INFO] [stdout] 4  + use core::pin::Pin;
[INFO] [stdout]    |
[INFO] [stdout] 4  + 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] 25 |             match gen.resume(ResumeTy(NonNull::from(cx).cast::<Context<'static>>())) {
[INFO] [stdout]    |                                       ^^^^^^^ use of undeclared type `NonNull`
[INFO] [stdout]    |
[INFO] [stdout] help: consider importing one of these items
[INFO] [stdout]    |
[INFO] [stdout] 4  + use core::ptr::NonNull;
[INFO] [stdout]    |
[INFO] [stdout] 4  + use std::ptr::NonNull;
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] error[E0412]: cannot find type `Context` in this scope
[INFO] [stdout]   --> src/ch03/s2_async_await.rs:907:64
[INFO] [stdout]    |
[INFO] [stdout] 25 |             match gen.resume(ResumeTy(NonNull::from(cx).cast::<Context<'static>>())) {
[INFO] [stdout]    |                                                                ^^^^^^^ not found in this scope
[INFO] [stdout]    |
[INFO] [stdout] help: consider importing one of these items
[INFO] [stdout]    |
[INFO] [stdout] 4  + use core::task::Context;
[INFO] [stdout]    |
[INFO] [stdout] 4  + 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] 26 |                 GeneratorState::Yielded(()) => Poll::Pending,
[INFO] [stdout]    |                                                ^^^^ use of undeclared type `Poll`
[INFO] [stdout]    |
[INFO] [stdout] help: consider importing one of these items
[INFO] [stdout]    |
[INFO] [stdout] 4  + use core::task::Poll;
[INFO] [stdout]    |
[INFO] [stdout] 4  + 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] 27 |                 GeneratorState::Complete(x) => Poll::Ready(x),
[INFO] [stdout]    |                                                ^^^^ use of undeclared type `Poll`
[INFO] [stdout]    |
[INFO] [stdout] help: consider importing one of these items
[INFO] [stdout]    |
[INFO] [stdout] 4  + use core::task::Poll;
[INFO] [stdout]    |
[INFO] [stdout] 4  + use std::task::Poll;
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] error[E0658]: diagnostic items compiler internal support for linting
[INFO] [stdout]  --> src/ch03/s2_async_await.rs:891:5
[INFO] [stdout]   |
[INFO] [stdout] 9 |     #[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: this compiler was built on 2024-05-15; consider upgrading it if it is out of date
[INFO] [stdout] 
[INFO] [stdout] error[E0658]: negative trait bounds are not yet fully implemented; use marker types for now
[INFO] [stdout]   --> src/ch03/s2_async_await.rs:896:46
[INFO] [stdout]    |
[INFO] [stdout] 14 |     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 2024-05-15; 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] 26 |                 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] 27 |                 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] 25 |             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, E0412, 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::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_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/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. 61 passed; 87 failed; 0 ignored; 0 measured; 0 filtered out; finished in 9.73s
[INFO] [stdout] 
[INFO] running `Command { std: "docker" "inspect" "95c8266456859af61c579ece4ec858276afb40a6e7628f819f3d6af832d29c60", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "95c8266456859af61c579ece4ec858276afb40a6e7628f819f3d6af832d29c60", kill_on_drop: false }`
[INFO] [stdout] 95c8266456859af61c579ece4ec858276afb40a6e7628f819f3d6af832d29c60
