[INFO] cloning repository https://github.com/kmf-lab/learn-lifetime
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/kmf-lab/learn-lifetime" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fkmf-lab%2Flearn-lifetime", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fkmf-lab%2Flearn-lifetime'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] db4b08b678593772284e983ce718a513634d2fdb
[INFO] checking kmf-lab/learn-lifetime against 846e51f66b1e7b49ba9e3988c58ccfe5817ce0a9 for pr-164812
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fkmf-lab%2Flearn-lifetime" "/workspace/builds/worker-4-tc1/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-4-tc1/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/kmf-lab/learn-lifetime
[INFO] finished tweaking git repo https://github.com/kmf-lab/learn-lifetime
[INFO] tweaked toml for git repo https://github.com/kmf-lab/learn-lifetime written to /workspace/builds/worker-4-tc1/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/kmf-lab/learn-lifetime on toolchain 846e51f66b1e7b49ba9e3988c58ccfe5817ce0a9
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+846e51f66b1e7b49ba9e3988c58ccfe5817ce0a9" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/kmf-lab/learn-lifetime 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" "+846e51f66b1e7b49ba9e3988c58ccfe5817ce0a9" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded syn v2.0.70
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/target:/opt/rustwide/target:rw,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" "-m" "1610612736" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:c0af3998e971868164375a7dfb646c9933ddd1a3bdb00fa2041266763dc1eeab" "sleep" "infinity", kill_on_drop: false }`
[INFO] [stdout] d6510ab0aa7545a605009db3c7a17f96fe9f08fd7867f7dc64cac3d6e9d00e1d
[INFO] running `Command { std: "docker" "start" "d6510ab0aa7545a605009db3c7a17f96fe9f08fd7867f7dc64cac3d6e9d00e1d", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "d6510ab0aa7545a605009db3c7a17f96fe9f08fd7867f7dc64cac3d6e9d00e1d", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-w" "/opt/rustwide/workdir" "--user" "0:0" "d6510ab0aa7545a605009db3c7a17f96fe9f08fd7867f7dc64cac3d6e9d00e1d" "/opt/rustwide/cargo-home/bin/cargo" "+846e51f66b1e7b49ba9e3988c58ccfe5817ce0a9" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "d6510ab0aa7545a605009db3c7a17f96fe9f08fd7867f7dc64cac3d6e9d00e1d", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-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" "-w" "/opt/rustwide/workdir" "--user" "0:0" "d6510ab0aa7545a605009db3c7a17f96fe9f08fd7867f7dc64cac3d6e9d00e1d" "/opt/rustwide/cargo-home/bin/cargo" "+846e51f66b1e7b49ba9e3988c58ccfe5817ce0a9" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr]    Compiling libc v0.2.155
[INFO] [stderr]    Compiling zerocopy v0.8.0-alpha.6
[INFO] [stderr]     Checking ppv-lite86 v0.2.17
[INFO] [stderr]     Checking getrandom v0.2.15
[INFO] [stderr]     Checking rand_core v0.9.0-alpha.1
[INFO] [stderr]     Checking rand_chacha v0.9.0-alpha.1
[INFO] [stderr]     Checking rand v0.9.0-alpha.1
[INFO] [stderr]     Checking learn-lifetimes v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: field `a` is never read
[INFO] [stdout]   --> src/lesson_2_struct.rs:35:13
[INFO] [stdout]    |
[INFO] [stdout] 34 |         struct SimpleStruct {
[INFO] [stdout]    |                ------------ field in this struct
[INFO] [stdout] 35 |             a: i32,
[INFO] [stdout]    |             ^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `consume`, `consume_return_a`, `process_a`, and `update_a` are never used
[INFO] [stdout]   --> src/lesson_2_struct.rs:39:16
[INFO] [stdout]    |
[INFO] [stdout] 38 |         impl SimpleStruct {
[INFO] [stdout]    |         ----------------- methods in this implementation
[INFO] [stdout] 39 |             fn consume(self) {}
[INFO] [stdout]    |                ^^^^^^^
[INFO] [stdout] 40 |             fn consume_return_a(self) -> i32 {
[INFO] [stdout]    |                ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 43 |             fn process_a(self: &Self) -> &i32 { // Elided
[INFO] [stdout]    |                ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 46 |             fn update_a(self: &mut Self, a: i32) -> &i32 { // Elided
[INFO] [stdout]    |                ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `b` is never read
[INFO] [stdout]   --> src/lesson_2_struct.rs:80:13
[INFO] [stdout]    |
[INFO] [stdout] 78 |         struct UnifiedStruct<'a> {
[INFO] [stdout]    |                ------------- field in this struct
[INFO] [stdout] 79 |             a: &'a String, // we typically give all refs the same lifetime
[INFO] [stdout] 80 |             b: &'a String
[INFO] [stdout]    |             ^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `UnifiedStruct` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `consume`, `consume_return_a`, `process_a`, `update_a`, and `update_b` are never used
[INFO] [stdout]    --> src/lesson_2_struct.rs:86:16
[INFO] [stdout]     |
[INFO] [stdout]  85 |         impl<'a> UnifiedStruct<'a> {
[INFO] [stdout]     |         -------------------------- methods in this implementation
[INFO] [stdout]  86 |             fn consume(self) {
[INFO] [stdout]     |                ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  89 |             fn consume_return_a(self) -> &'a String { //consumed/dropped struct
[INFO] [stdout]     |                ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  92 |             fn process_a(self: &Self) -> & String { //this ref is the same lifetime as struct
[INFO] [stdout]     |                ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  95 |             fn update_a(self: & mut Self, a: &'a String) -> & String {
[INFO] [stdout]     |                ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 100 |             fn update_b(self: &mut Self, b: &'a String) -> & String {
[INFO] [stdout]     |                ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `consume`, `update_a`, and `update_b` are never used
[INFO] [stdout]    --> src/lesson_2_struct.rs:159:16
[INFO] [stdout]     |
[INFO] [stdout] 158 |         impl <'a,'b> SplitStruct<'a,'b> {
[INFO] [stdout]     |         ------------------------------- methods in this implementation
[INFO] [stdout] 159 |             fn consume(self) {
[INFO] [stdout]     |                ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 173 |             fn update_a(self: &mut Self, a: &'a String) -> &String {
[INFO] [stdout]     |                ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 177 |             fn update_b(self: &mut Self, b: &'b String) -> &String {
[INFO] [stdout]     |                ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `shortest_length_with_lifetime_subtyping` is never used
[INFO] [stdout]   --> src/lesson_3_function.rs:83:8
[INFO] [stdout]    |
[INFO] [stdout] 83 |     fn shortest_length_with_lifetime_subtyping<'a,'b:'a>(x: &'a String,
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: calls to `std::mem::drop` with a reference instead of an owned value does nothing
[INFO] [stdout]   --> src/lesson_3_function.rs:51:13
[INFO] [stdout]    |
[INFO] [stdout] 51 |             drop(_s_ref); //we must force _s_ref to live until now to protect the derived length
[INFO] [stdout]    |             ^^^^^------^
[INFO] [stdout]    |                  |
[INFO] [stdout]    |                  argument has type `&str`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dropping_references)]` on by default
[INFO] [stdout] help: use `let _ = ...` to ignore the expression or result
[INFO] [stdout]    |
[INFO] [stdout] 51 -             drop(_s_ref); //we must force _s_ref to live until now to protect the derived length
[INFO] [stdout] 51 +             let _ = _s_ref; //we must force _s_ref to live until now to protect the derived length
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `a` is never read
[INFO] [stdout]   --> src/lesson_2_struct.rs:35:13
[INFO] [stdout]    |
[INFO] [stdout] 34 |         struct SimpleStruct {
[INFO] [stdout]    |                ------------ field in this struct
[INFO] [stdout] 35 |             a: i32,
[INFO] [stdout]    |             ^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `consume`, `consume_return_a`, `process_a`, and `update_a` are never used
[INFO] [stdout]   --> src/lesson_2_struct.rs:39:16
[INFO] [stdout]    |
[INFO] [stdout] 38 |         impl SimpleStruct {
[INFO] [stdout]    |         ----------------- methods in this implementation
[INFO] [stdout] 39 |             fn consume(self) {}
[INFO] [stdout]    |                ^^^^^^^
[INFO] [stdout] 40 |             fn consume_return_a(self) -> i32 {
[INFO] [stdout]    |                ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 43 |             fn process_a(self: &Self) -> &i32 { // Elided
[INFO] [stdout]    |                ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 46 |             fn update_a(self: &mut Self, a: i32) -> &i32 { // Elided
[INFO] [stdout]    |                ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `b` is never read
[INFO] [stdout]   --> src/lesson_2_struct.rs:80:13
[INFO] [stdout]    |
[INFO] [stdout] 78 |         struct UnifiedStruct<'a> {
[INFO] [stdout]    |                ------------- field in this struct
[INFO] [stdout] 79 |             a: &'a String, // we typically give all refs the same lifetime
[INFO] [stdout] 80 |             b: &'a String
[INFO] [stdout]    |             ^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `UnifiedStruct` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `consume`, `consume_return_a`, `process_a`, `update_a`, and `update_b` are never used
[INFO] [stdout]    --> src/lesson_2_struct.rs:86:16
[INFO] [stdout]     |
[INFO] [stdout]  85 |         impl<'a> UnifiedStruct<'a> {
[INFO] [stdout]     |         -------------------------- methods in this implementation
[INFO] [stdout]  86 |             fn consume(self) {
[INFO] [stdout]     |                ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  89 |             fn consume_return_a(self) -> &'a String { //consumed/dropped struct
[INFO] [stdout]     |                ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  92 |             fn process_a(self: &Self) -> & String { //this ref is the same lifetime as struct
[INFO] [stdout]     |                ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  95 |             fn update_a(self: & mut Self, a: &'a String) -> & String {
[INFO] [stdout]     |                ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 100 |             fn update_b(self: &mut Self, b: &'a String) -> & String {
[INFO] [stdout]     |                ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `consume`, `update_a`, and `update_b` are never used
[INFO] [stdout]    --> src/lesson_2_struct.rs:159:16
[INFO] [stdout]     |
[INFO] [stdout] 158 |         impl <'a,'b> SplitStruct<'a,'b> {
[INFO] [stdout]     |         ------------------------------- methods in this implementation
[INFO] [stdout] 159 |             fn consume(self) {
[INFO] [stdout]     |                ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 173 |             fn update_a(self: &mut Self, a: &'a String) -> &String {
[INFO] [stdout]     |                ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 177 |             fn update_b(self: &mut Self, b: &'b String) -> &String {
[INFO] [stdout]     |                ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `shortest_length_with_lifetime_subtyping` is never used
[INFO] [stdout]   --> src/lesson_3_function.rs:83:8
[INFO] [stdout]    |
[INFO] [stdout] 83 |     fn shortest_length_with_lifetime_subtyping<'a,'b:'a>(x: &'a String,
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: calls to `std::mem::drop` with a reference instead of an owned value does nothing
[INFO] [stdout]   --> src/lesson_3_function.rs:51:13
[INFO] [stdout]    |
[INFO] [stdout] 51 |             drop(_s_ref); //we must force _s_ref to live until now to protect the derived length
[INFO] [stdout]    |             ^^^^^------^
[INFO] [stdout]    |                  |
[INFO] [stdout]    |                  argument has type `&str`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dropping_references)]` on by default
[INFO] [stdout] help: use `let _ = ...` to ignore the expression or result
[INFO] [stdout]    |
[INFO] [stdout] 51 -             drop(_s_ref); //we must force _s_ref to live until now to protect the derived length
[INFO] [stdout] 51 +             let _ = _s_ref; //we must force _s_ref to live until now to protect the derived length
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 3.31s
[INFO] running `Command { std: "docker" "inspect" "d6510ab0aa7545a605009db3c7a17f96fe9f08fd7867f7dc64cac3d6e9d00e1d", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "d6510ab0aa7545a605009db3c7a17f96fe9f08fd7867f7dc64cac3d6e9d00e1d", kill_on_drop: false }`
[INFO] [stdout] d6510ab0aa7545a605009db3c7a17f96fe9f08fd7867f7dc64cac3d6e9d00e1d
