[INFO] cloning repository https://github.com/nhingy/f12019_data_logger [INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/nhingy/f12019_data_logger" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fnhingy%2Ff12019_data_logger", kill_on_drop: false }` [INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fnhingy%2Ff12019_data_logger'... [INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }` [INFO] [stdout] 3dd546d3dd6417285c7546b4bd09a39d114ba90f [INFO] building nhingy/f12019_data_logger against master#11663cd3bfefef7d34e8f0892c250bf698049392+rustflags=-Dtail-expr-drop-order for pr-134523 [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fnhingy%2Ff12019_data_logger" "/workspace/builds/worker-0-tc1/source", kill_on_drop: false }` [INFO] [stderr] Cloning into '/workspace/builds/worker-0-tc1/source'... [INFO] [stderr] done. [INFO] validating manifest of git repo https://github.com/nhingy/f12019_data_logger on toolchain 11663cd3bfefef7d34e8f0892c250bf698049392 [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+11663cd3bfefef7d34e8f0892c250bf698049392" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }` [INFO] started tweaking git repo https://github.com/nhingy/f12019_data_logger [INFO] finished tweaking git repo https://github.com/nhingy/f12019_data_logger [INFO] tweaked toml for git repo https://github.com/nhingy/f12019_data_logger written to /workspace/builds/worker-0-tc1/source/Cargo.toml [INFO] crate git repo https://github.com/nhingy/f12019_data_logger 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" "+11663cd3bfefef7d34e8f0892c250bf698049392" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] [stderr] Blocking waiting for file lock on package cache [INFO] [stderr] Blocking waiting for file lock on package cache [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-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:f3a9d4ad9d972b27faf3965f35b62e55ba32bbce8f20bc8fe909558a86702fde" "/opt/rustwide/cargo-home/bin/cargo" "+11663cd3bfefef7d34e8f0892c250bf698049392" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }` [INFO] [stdout] 63adea3f3c053c6497b79c3af2ce4376443303c2293965ca3b6cb573f3d042ff [INFO] running `Command { std: "docker" "start" "-a" "63adea3f3c053c6497b79c3af2ce4376443303c2293965ca3b6cb573f3d042ff", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "63adea3f3c053c6497b79c3af2ce4376443303c2293965ca3b6cb573f3d042ff", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "63adea3f3c053c6497b79c3af2ce4376443303c2293965ca3b6cb573f3d042ff", kill_on_drop: false }` [INFO] [stdout] 63adea3f3c053c6497b79c3af2ce4376443303c2293965ca3b6cb573f3d042ff [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-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 -Dtail-expr-drop-order" "-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:f3a9d4ad9d972b27faf3965f35b62e55ba32bbce8f20bc8fe909558a86702fde" "/opt/rustwide/cargo-home/bin/cargo" "+11663cd3bfefef7d34e8f0892c250bf698049392" "build" "--frozen" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] abc5fb5393243be04cabd68dce04b31e827149e64debec6a2e8fa66963366e8d [INFO] running `Command { std: "docker" "start" "-a" "abc5fb5393243be04cabd68dce04b31e827149e64debec6a2e8fa66963366e8d", kill_on_drop: false }` [INFO] [stderr] Compiling byte v0.2.4 [INFO] [stderr] Compiling f12019_data_logger v0.1.0 (/opt/rustwide/workdir) [INFO] [stdout] warning: unused import: `std::fmt` [INFO] [stdout] --> src/f1_2019_net.rs:2:5 [INFO] [stdout] | [INFO] [stdout] 2 | use std::fmt; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0170]: pattern binding `Motion` is named the same as one of the variants of the type `f1_2019_net::PacketType` [INFO] [stdout] --> src/f1_2019_net.rs:24:13 [INFO] [stdout] | [INFO] [stdout] 24 | Motion => return &"motion packet", [INFO] [stdout] | ^^^^^^ help: to match on the variant, qualify the path: `f1_2019_net::PacketType::Motion` [INFO] [stdout] | [INFO] [stdout] = note: `#[deny(bindings_with_variant_name)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0170]: pattern binding `Session` is named the same as one of the variants of the type `f1_2019_net::PacketType` [INFO] [stdout] --> src/f1_2019_net.rs:25:13 [INFO] [stdout] | [INFO] [stdout] 25 | Session => return &"session packet", [INFO] [stdout] | ^^^^^^^ help: to match on the variant, qualify the path: `f1_2019_net::PacketType::Session` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0170]: pattern binding `Lap` is named the same as one of the variants of the type `f1_2019_net::PacketType` [INFO] [stdout] --> src/f1_2019_net.rs:26:13 [INFO] [stdout] | [INFO] [stdout] 26 | Lap => return &"lap packet", [INFO] [stdout] | ^^^ help: to match on the variant, qualify the path: `f1_2019_net::PacketType::Lap` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0170]: pattern binding `Event` is named the same as one of the variants of the type `f1_2019_net::PacketType` [INFO] [stdout] --> src/f1_2019_net.rs:27:13 [INFO] [stdout] | [INFO] [stdout] 27 | Event => return &"event packet", [INFO] [stdout] | ^^^^^ help: to match on the variant, qualify the path: `f1_2019_net::PacketType::Event` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0170]: pattern binding `Participant` is named the same as one of the variants of the type `f1_2019_net::PacketType` [INFO] [stdout] --> src/f1_2019_net.rs:28:13 [INFO] [stdout] | [INFO] [stdout] 28 | Participant => return &"participant packet", [INFO] [stdout] | ^^^^^^^^^^^ help: to match on the variant, qualify the path: `f1_2019_net::PacketType::Participant` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0170]: pattern binding `Setup` is named the same as one of the variants of the type `f1_2019_net::PacketType` [INFO] [stdout] --> src/f1_2019_net.rs:29:13 [INFO] [stdout] | [INFO] [stdout] 29 | Setup => return &"setup packet", [INFO] [stdout] | ^^^^^ help: to match on the variant, qualify the path: `f1_2019_net::PacketType::Setup` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0170]: pattern binding `Telemetry` is named the same as one of the variants of the type `f1_2019_net::PacketType` [INFO] [stdout] --> src/f1_2019_net.rs:30:13 [INFO] [stdout] | [INFO] [stdout] 30 | Telemetry => return &"telemetry packet", [INFO] [stdout] | ^^^^^^^^^ help: to match on the variant, qualify the path: `f1_2019_net::PacketType::Telemetry` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0170]: pattern binding `CarStatus` is named the same as one of the variants of the type `f1_2019_net::PacketType` [INFO] [stdout] --> src/f1_2019_net.rs:31:13 [INFO] [stdout] | [INFO] [stdout] 31 | CarStatus => return &"car status packet", [INFO] [stdout] | ^^^^^^^^^ help: to match on the variant, qualify the path: `f1_2019_net::PacketType::CarStatus` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0170]: pattern binding `InvalidPacket` is named the same as one of the variants of the type `f1_2019_net::PacketType` [INFO] [stdout] --> src/f1_2019_net.rs:32:13 [INFO] [stdout] | [INFO] [stdout] 32 | InvalidPacket => return &"invalid packet", [INFO] [stdout] | ^^^^^^^^^^^^^ help: to match on the variant, qualify the path: `f1_2019_net::PacketType::InvalidPacket` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unreachable pattern [INFO] [stdout] --> src/f1_2019_net.rs:25:13 [INFO] [stdout] | [INFO] [stdout] 24 | Motion => return &"motion packet", [INFO] [stdout] | ------ matches any value [INFO] [stdout] 25 | Session => return &"session packet", [INFO] [stdout] | ^^^^^^^ no value can reach this [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unreachable_patterns)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unreachable pattern [INFO] [stdout] --> src/f1_2019_net.rs:26:13 [INFO] [stdout] | [INFO] [stdout] 24 | Motion => return &"motion packet", [INFO] [stdout] | ------ matches any value [INFO] [stdout] 25 | Session => return &"session packet", [INFO] [stdout] 26 | Lap => return &"lap packet", [INFO] [stdout] | ^^^ no value can reach this [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unreachable pattern [INFO] [stdout] --> src/f1_2019_net.rs:27:13 [INFO] [stdout] | [INFO] [stdout] 24 | Motion => return &"motion packet", [INFO] [stdout] | ------ matches any value [INFO] [stdout] ... [INFO] [stdout] 27 | Event => return &"event packet", [INFO] [stdout] | ^^^^^ no value can reach this [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unreachable pattern [INFO] [stdout] --> src/f1_2019_net.rs:28:13 [INFO] [stdout] | [INFO] [stdout] 24 | Motion => return &"motion packet", [INFO] [stdout] | ------ matches any value [INFO] [stdout] ... [INFO] [stdout] 28 | Participant => return &"participant packet", [INFO] [stdout] | ^^^^^^^^^^^ no value can reach this [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unreachable pattern [INFO] [stdout] --> src/f1_2019_net.rs:29:13 [INFO] [stdout] | [INFO] [stdout] 24 | Motion => return &"motion packet", [INFO] [stdout] | ------ matches any value [INFO] [stdout] ... [INFO] [stdout] 29 | Setup => return &"setup packet", [INFO] [stdout] | ^^^^^ no value can reach this [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unreachable pattern [INFO] [stdout] --> src/f1_2019_net.rs:30:13 [INFO] [stdout] | [INFO] [stdout] 24 | Motion => return &"motion packet", [INFO] [stdout] | ------ matches any value [INFO] [stdout] ... [INFO] [stdout] 30 | Telemetry => return &"telemetry packet", [INFO] [stdout] | ^^^^^^^^^ no value can reach this [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unreachable pattern [INFO] [stdout] --> src/f1_2019_net.rs:31:13 [INFO] [stdout] | [INFO] [stdout] 24 | Motion => return &"motion packet", [INFO] [stdout] | ------ matches any value [INFO] [stdout] ... [INFO] [stdout] 31 | CarStatus => return &"car status packet", [INFO] [stdout] | ^^^^^^^^^ no value can reach this [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unreachable pattern [INFO] [stdout] --> src/f1_2019_net.rs:32:13 [INFO] [stdout] | [INFO] [stdout] 24 | Motion => return &"motion packet", [INFO] [stdout] | ------ matches any value [INFO] [stdout] ... [INFO] [stdout] 32 | InvalidPacket => return &"invalid packet", [INFO] [stdout] | ^^^^^^^^^^^^^ no value can reach this [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `Motion` [INFO] [stdout] --> src/f1_2019_net.rs:24:13 [INFO] [stdout] | [INFO] [stdout] 24 | Motion => return &"motion packet", [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_Motion` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `Session` [INFO] [stdout] --> src/f1_2019_net.rs:25:13 [INFO] [stdout] | [INFO] [stdout] 25 | Session => return &"session packet", [INFO] [stdout] | ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_Session` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `Lap` [INFO] [stdout] --> src/f1_2019_net.rs:26:13 [INFO] [stdout] | [INFO] [stdout] 26 | Lap => return &"lap packet", [INFO] [stdout] | ^^^ help: if this is intentional, prefix it with an underscore: `_Lap` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `Event` [INFO] [stdout] --> src/f1_2019_net.rs:27:13 [INFO] [stdout] | [INFO] [stdout] 27 | Event => return &"event packet", [INFO] [stdout] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_Event` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `Participant` [INFO] [stdout] --> src/f1_2019_net.rs:28:13 [INFO] [stdout] | [INFO] [stdout] 28 | Participant => return &"participant packet", [INFO] [stdout] | ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_Participant` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `Setup` [INFO] [stdout] --> src/f1_2019_net.rs:29:13 [INFO] [stdout] | [INFO] [stdout] 29 | Setup => return &"setup packet", [INFO] [stdout] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_Setup` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `Telemetry` [INFO] [stdout] --> src/f1_2019_net.rs:30:13 [INFO] [stdout] | [INFO] [stdout] 30 | Telemetry => return &"telemetry packet", [INFO] [stdout] | ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_Telemetry` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `CarStatus` [INFO] [stdout] --> src/f1_2019_net.rs:31:13 [INFO] [stdout] | [INFO] [stdout] 31 | CarStatus => return &"car status packet", [INFO] [stdout] | ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_CarStatus` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `InvalidPacket` [INFO] [stdout] --> src/f1_2019_net.rs:32:13 [INFO] [stdout] | [INFO] [stdout] 32 | InvalidPacket => return &"invalid packet", [INFO] [stdout] | ^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_InvalidPacket` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `header` [INFO] [stdout] --> src/main.rs:100:10 [INFO] [stdout] | [INFO] [stdout] 100 | let mut header: PacketHeader = Default::default(); [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_header` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/main.rs:100:6 [INFO] [stdout] | [INFO] [stdout] 100 | let mut header: PacketHeader = Default::default(); [INFO] [stdout] | ----^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_mut)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: taking a mutable reference to a `const` item [INFO] [stdout] --> src/main.rs:154:25 [INFO] [stdout] | [INFO] [stdout] 154 | buf.read_with::(&mut PACKET_FORMAT_OFFSET, LE).expect("error reading from buffer!"), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: each usage of a `const` item creates a new temporary [INFO] [stdout] = note: the mutable reference will refer to this temporary, not the original `const` item [INFO] [stdout] note: `const` item defined here [INFO] [stdout] --> src/main.rs:38:1 [INFO] [stdout] | [INFO] [stdout] 38 | const PACKET_FORMAT_OFFSET: usize = 0; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] = note: `#[warn(const_item_mutation)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: taking a mutable reference to a `const` item [INFO] [stdout] --> src/main.rs:155:27 [INFO] [stdout] | [INFO] [stdout] 155 | buf.read_with::(&mut MAJ_VERSION_OFFSET, LE).expect("error reading from buffer!"), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: each usage of a `const` item creates a new temporary [INFO] [stdout] = note: the mutable reference will refer to this temporary, not the original `const` item [INFO] [stdout] note: `const` item defined here [INFO] [stdout] --> src/main.rs:39:1 [INFO] [stdout] | [INFO] [stdout] 39 | const MAJ_VERSION_OFFSET: usize = 2; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: taking a mutable reference to a `const` item [INFO] [stdout] --> src/main.rs:156:27 [INFO] [stdout] | [INFO] [stdout] 156 | buf.read_with::(&mut MIN_VERSION_OFFSET, LE).expect("error reading from buffer!"), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: each usage of a `const` item creates a new temporary [INFO] [stdout] = note: the mutable reference will refer to this temporary, not the original `const` item [INFO] [stdout] note: `const` item defined here [INFO] [stdout] --> src/main.rs:40:1 [INFO] [stdout] | [INFO] [stdout] 40 | const MIN_VERSION_OFFSET: usize = 3; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: taking a mutable reference to a `const` item [INFO] [stdout] --> src/main.rs:157:27 [INFO] [stdout] | [INFO] [stdout] 157 | buf.read_with::(&mut PACKET_VERSION_OFFSET, LE).expect("error reading from buffer!"), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: each usage of a `const` item creates a new temporary [INFO] [stdout] = note: the mutable reference will refer to this temporary, not the original `const` item [INFO] [stdout] note: `const` item defined here [INFO] [stdout] --> src/main.rs:41:1 [INFO] [stdout] | [INFO] [stdout] 41 | const PACKET_VERSION_OFFSET: usize = 4; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: taking a mutable reference to a `const` item [INFO] [stdout] --> src/main.rs:158:43 [INFO] [stdout] | [INFO] [stdout] 158 | get_packet_type(buf.read_with::(&mut PACKET_TYPE_OFFSET, LE).expect("error reading from buffer!")), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: each usage of a `const` item creates a new temporary [INFO] [stdout] = note: the mutable reference will refer to this temporary, not the original `const` item [INFO] [stdout] note: `const` item defined here [INFO] [stdout] --> src/main.rs:42:1 [INFO] [stdout] | [INFO] [stdout] 42 | const PACKET_TYPE_OFFSET: usize = 5; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: taking a mutable reference to a `const` item [INFO] [stdout] --> src/main.rs:159:28 [INFO] [stdout] | [INFO] [stdout] 159 | buf.read_with::(&mut SESSION_ID_OFFSET, LE).expect("error reading from buffer!"), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: each usage of a `const` item creates a new temporary [INFO] [stdout] = note: the mutable reference will refer to this temporary, not the original `const` item [INFO] [stdout] note: `const` item defined here [INFO] [stdout] --> src/main.rs:43:1 [INFO] [stdout] | [INFO] [stdout] 43 | const SESSION_ID_OFFSET: usize = 6; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: taking a mutable reference to a `const` item [INFO] [stdout] --> src/main.rs:160:28 [INFO] [stdout] | [INFO] [stdout] 160 | buf.read_with::(&mut SESSION_TIME_OFFSET, LE).expect("error reading from buffer!"), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: each usage of a `const` item creates a new temporary [INFO] [stdout] = note: the mutable reference will refer to this temporary, not the original `const` item [INFO] [stdout] note: `const` item defined here [INFO] [stdout] --> src/main.rs:44:1 [INFO] [stdout] | [INFO] [stdout] 44 | const SESSION_TIME_OFFSET: usize = 14; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: taking a mutable reference to a `const` item [INFO] [stdout] --> src/main.rs:161:28 [INFO] [stdout] | [INFO] [stdout] 161 | buf.read_with::(&mut FRAME_ID_OFFSET, LE).expect("error reading from buffer!"), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: each usage of a `const` item creates a new temporary [INFO] [stdout] = note: the mutable reference will refer to this temporary, not the original `const` item [INFO] [stdout] note: `const` item defined here [INFO] [stdout] --> src/main.rs:45:1 [INFO] [stdout] | [INFO] [stdout] 45 | const FRAME_ID_OFFSET: usize = 18; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: taking a mutable reference to a `const` item [INFO] [stdout] --> src/main.rs:162:27 [INFO] [stdout] | [INFO] [stdout] 162 | buf.read_with::(&mut PLAYER_CAR_INDEX_OFFESET, LE).expect("error reading from buffer!") [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: each usage of a `const` item creates a new temporary [INFO] [stdout] = note: the mutable reference will refer to this temporary, not the original `const` item [INFO] [stdout] note: `const` item defined here [INFO] [stdout] --> src/main.rs:46:1 [INFO] [stdout] | [INFO] [stdout] 46 | const PLAYER_CAR_INDEX_OFFESET: usize = 22; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `car_data` [INFO] [stdout] --> src/main.rs:225:6 [INFO] [stdout] | [INFO] [stdout] 225 | let car_data = CarMotion { [INFO] [stdout] | ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_car_data` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `car_data` [INFO] [stdout] --> src/main.rs:222:50 [INFO] [stdout] | [INFO] [stdout] 222 | fn parse_car_motion(buf: &[u8; MAX_PACKET_SIZE], car_data: &mut [CarMotion; 20], count: usize) { [INFO] [stdout] | ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_car_data` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/main.rs:224:6 [INFO] [stdout] | [INFO] [stdout] 224 | let mut offset = index * CAR_MOTION_SIZE; [INFO] [stdout] | ----^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/main.rs:249:6 [INFO] [stdout] | [INFO] [stdout] 249 | let mut index = NUM_WHEELS - count; [INFO] [stdout] | ----^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/main.rs:259:6 [INFO] [stdout] | [INFO] [stdout] 259 | let mut index = NUM_WHEELS - count; [INFO] [stdout] | ----^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: taking a mutable reference to a `const` item [INFO] [stdout] --> src/main.rs:287:33 [INFO] [stdout] | [INFO] [stdout] 287 | weather: buf.read_with::(&mut HEADER_SIZE, LE).unwrap(), [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: each usage of a `const` item creates a new temporary [INFO] [stdout] = note: the mutable reference will refer to this temporary, not the original `const` item [INFO] [stdout] note: `const` item defined here [INFO] [stdout] --> src/main.rs:49:1 [INFO] [stdout] | [INFO] [stdout] 49 | const HEADER_SIZE: usize = 23; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/main.rs:310:6 [INFO] [stdout] | [INFO] [stdout] 310 | let mut index = NUM_MARSHAL_ZONES - count; [INFO] [stdout] | ----^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/main.rs:336:6 [INFO] [stdout] | [INFO] [stdout] 336 | let mut index = NUM_CARS - count; [INFO] [stdout] | ----^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unreachable pattern [INFO] [stdout] --> src/main.rs:403:3 [INFO] [stdout] | [INFO] [stdout] 403 | _ => return None, [INFO] [stdout] | ^ no value can reach this [INFO] [stdout] | [INFO] [stdout] note: multiple earlier patterns match some of the same values [INFO] [stdout] --> src/main.rs:403:3 [INFO] [stdout] | [INFO] [stdout] 374 | EventType::SessionStarted => return Some(Event { [INFO] [stdout] | ------------------------- matches some of the same values [INFO] [stdout] ... [INFO] [stdout] 379 | EventType::SessionEnded => return Some(Event { [INFO] [stdout] | ----------------------- matches some of the same values [INFO] [stdout] ... [INFO] [stdout] 384 | EventType::FastestLap => return parse_multipart_event(evt_slice, event_type, header), [INFO] [stdout] | --------------------- matches some of the same values [INFO] [stdout] 385 | EventType::Retirement => return parse_multipart_event(evt_slice, event_type, header), [INFO] [stdout] | --------------------- matches some of the same values [INFO] [stdout] ... [INFO] [stdout] 403 | _ => return None, [INFO] [stdout] | ^ ...and 5 other patterns collectively make this unreachable [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `EVENT_SIZE` is never used [INFO] [stdout] --> src/main.rs:53:7 [INFO] [stdout] | [INFO] [stdout] 53 | const EVENT_SIZE: usize = 43; // Might not be able to use this as event packet changes with event type [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `MARSHAL_ZONE_SIZE` is never used [INFO] [stdout] --> src/main.rs:60:7 [INFO] [stdout] | [INFO] [stdout] 60 | const MARSHAL_ZONE_SIZE: usize = 5; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `getName` is never used [INFO] [stdout] --> src/f1_2019_net.rs:22:12 [INFO] [stdout] | [INFO] [stdout] 21 | impl PacketType { [INFO] [stdout] | --------------- method in this implementation [INFO] [stdout] 22 | pub fn getName(&self, event_type: PacketType) -> &str { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `header`, `event_type`, `car_idx`, and `lap_time` are never read [INFO] [stdout] --> src/f1_2019_net.rs:55:6 [INFO] [stdout] | [INFO] [stdout] 54 | pub struct Event { [INFO] [stdout] | ----- fields in this struct [INFO] [stdout] 55 | pub header: PacketHeader, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] 56 | pub event_type: EventType, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] 57 | pub car_idx: u8, //The car if this event refers to a car [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] 58 | pub lap_time: f32, //Lap time if this event is fastest lap [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `Event` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple fields are never read [INFO] [stdout] --> src/f1_2019_net.rs:68:5 [INFO] [stdout] | [INFO] [stdout] 67 | pub struct PacketHeader { [INFO] [stdout] | ------------ fields in this struct [INFO] [stdout] 68 | packet_format: u16, // 2019 [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] 69 | maj_version: u8, // Game major version - "X.00" [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] 70 | min_version: u8, // Game minor version - "1.XX" [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] 71 | packet_version: u8, // Version of this packet type, all start from 1 [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] 72 | packet_type: PacketType, // JP enum spec is u8 [INFO] [stdout] 73 | session_id: u64, // Unique identifier for the session [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] 74 | session_time: f32, // Session timestamp [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] 75 | frame_id: u32, // Identifier for the frame the data was retrieved on. JP 2020- working from stated total packet... [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] 76 | // even though 32 bit int isn't in the data type list. Stated type is uint..? [INFO] [stdout] 77 | player_car_index: u8 // Index of player's car in the array [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `PacketHeader` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple fields are never read [INFO] [stdout] --> src/f1_2019_net.rs:103:9 [INFO] [stdout] | [INFO] [stdout] 102 | pub struct CarTelemetry { //66 bytes [INFO] [stdout] | ------------ fields in this struct [INFO] [stdout] 103 | pub car_speed: u16, // Speed of car in kilometres per hour [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] 104 | pub throttle_pos: f32, // Amount of throttle applied (0.0 to 1.0) [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] 105 | pub steering_pos: f32, // Steering (-1.0 (full lock left) to 1.0 (full lock right)) [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] 106 | pub brake_pos: f32, // Amount of brake applied (0.0 to 1.0) [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] 107 | pub clutch_pos: u8, // Amount of clutch applied (0 to 100) [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] 108 | pub gear: i8, // Gear selected (1-8, N=0, R=-1) [INFO] [stdout] | ^^^^ [INFO] [stdout] 109 | pub engine_rpm: u16, // Engine RPM [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] 110 | pub drs_active: u8, // 0 = off, 1 = on [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] 111 | pub change_light_perc: u8, // Rev lights indicator (percentage) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] 112 | pub brake_temps: [u16; 4], // Brakes temperature (celsius) [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] 113 | pub tyre_surface_temps: [u16; 4], // Tyres surface temperature (celsius) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] 114 | pub tyre_inner_temps: [u16; 4], // Tyres inner temperature (celsius) [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] 115 | pub engine_temp: u16, // Engine temperature (celsius) [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] 116 | pub tyre_pressures: [f32; 4], // Tyres pressure (PSI) [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] 117 | pub tyre_contact_types: [u8; 4] // Driving surface, see appendices [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `CarTelemetry` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `header`, `car_telemetry_data`, and `button_status` are never read [INFO] [stdout] --> src/f1_2019_net.rs:121:9 [INFO] [stdout] | [INFO] [stdout] 120 | pub struct Telemetry { [INFO] [stdout] | --------- fields in this struct [INFO] [stdout] 121 | pub header: PacketHeader, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] 122 | pub car_telemetry_data: [CarTelemetry; 20], [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] 123 | pub button_status: u32, // Bit flags specifying which buttons are being pressed currently - see appendices [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `zone_start` and `flag` are never read [INFO] [stdout] --> src/f1_2019_net.rs:128:6 [INFO] [stdout] | [INFO] [stdout] 127 | pub struct MarshalZone { [INFO] [stdout] | ----------- fields in this struct [INFO] [stdout] 128 | pub zone_start: f32, // Fraction (0..1) of way through the lap the marshal zone starts [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] 129 | pub flag: i8, // -1 = invalid/unknown, 0 = none, 1 = green, 2 = blue, 3 = yellow, 4 = red [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `MarshalZone` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple fields are never read [INFO] [stdout] --> src/f1_2019_net.rs:134:6 [INFO] [stdout] | [INFO] [stdout] 133 | pub struct SessionData { [INFO] [stdout] | ----------- fields in this struct [INFO] [stdout] 134 | pub header: PacketHeader, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] 135 | pub weather: u8, // Weather - 0 = clear, 1 = light cloud, 2 = overcast, 3 = light rain, 4 = heavy rain, 5 =... [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] 136 | pub track_temp: i8, // Track temp. in degrees celsius [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] 137 | pub air_temp: i8, // Air temp. in degrees celsius [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] 138 | pub total_laps: u8, // Total number of laps in this race [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] 139 | pub track_len: u16, // Track length in metres [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] 140 | pub session_type: u8, // 0 = unknown, 1 = P1, 2 = P2, 3 = P3, 4 = Short, P5 = Q1, 6 = Q2, 7 = Q3, 8 = Short Q, ... [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] 141 | pub track_id: i8, // -1 for unknown, 0-21 for tracks, see appendix [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] 142 | pub formual: u8, // Formula, 0 = F1 Modern, 1 = F1 Classic, 2 = F2, 3 = F1 Generic [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] 143 | pub session_ttl: u16, // Time left in session in seconds [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] 144 | pub session_len: u16, // Session duration in seconds [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] 145 | pub pit_spd_lim: u8, // Pit speed limit in kilometres per hour [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] 146 | pub is_paused: u8, // Whether the game is paused [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] 147 | pub is_spectating: u8, // Whether the player is spectating [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] 148 | pub spectator_car: u8, // Index of the car being spectated [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] 149 | pub sli_native: u8, // SLI Pro support, 0 = inactive, 1 = active [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] 150 | pub num_zones: u8, // Number of marshal zones to follow [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] 151 | pub zones: [MarshalZone; 21], // List of marshal zones – max 21 [INFO] [stdout] | ^^^^^ [INFO] [stdout] 152 | pub safety_car: u8, // 0 = no safety car, 1 = full safety car, 2 = virtual safety car [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] 153 | pub is_network_game:u8, // 0 = offline, 1 = online [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `SessionData` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple fields are never read [INFO] [stdout] --> src/f1_2019_net.rs:158:6 [INFO] [stdout] | [INFO] [stdout] 157 | pub struct LapData { [INFO] [stdout] | ------- fields in this struct [INFO] [stdout] 158 | pub last_lap: f32, // Last lap time in seconds [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] 159 | pub current_lap: f32, // Current time around the lap in seconds [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] 160 | pub best_lap: f32, // Best lap time of the session in seconds [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] 161 | pub best_sec_1: f32, // Sector 1 time in seconds [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] 162 | pub best_sec_2: f32, // Sector 2 time in seconds [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] 163 | pub lap_distance: f32, // Distance vehicle is around current lap in metres – could be negative if line hasn’t been crossed ... [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] 164 | pub total_distance: f32, // Total distance travelled in session in metres – could be negative if line hasn’t been crossed yet [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] 165 | pub safety_car_delta: f32, // Delta in seconds for safety car [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] 166 | pub position: u8, // Car race position [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] 167 | pub lap_num: u8, // Current lap number [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] 168 | pub pit_status: u8, // 0 = none, 1 = pitting, 2 = in pit area [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] 169 | pub sector: u8, // 0 = sector1, 1 = sector2, 2 = sector3 [INFO] [stdout] | ^^^^^^ [INFO] [stdout] 170 | pub is_lap_valid: u8, // Current lap invalid - 0 = valid, 1 = invalid [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] 171 | pub penalties: u8, // Accumulated time penalties in seconds to be added [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] 172 | pub grid_position: u8, // Grid position the vehicle started the race in [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] 173 | pub driver_status: u8, // Status of driver - 0 = in garage, 1 = flying lap, 2 = in lap, 3 = out lap, 4 = on track [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] 174 | pub result_status: u8, // Result status - 0 = invalid, 1 = inactive, 2 = active, 3 = finished, 4 = disqualified, 5 = not class... [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `LapData` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `header` and `lap_data` are never read [INFO] [stdout] --> src/f1_2019_net.rs:179:9 [INFO] [stdout] | [INFO] [stdout] 178 | pub struct Lap { [INFO] [stdout] | --- fields in this struct [INFO] [stdout] 179 | pub header: PacketHeader, // Header [INFO] [stdout] | ^^^^^^ [INFO] [stdout] 180 | pub lap_data: [LapData; 20] // Lap data for all cars on track [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `Lap` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple fields are never read [INFO] [stdout] --> src/f1_2019_net.rs:198:9 [INFO] [stdout] | [INFO] [stdout] 197 | pub struct ParticipantData { [INFO] [stdout] | --------------- fields in this struct [INFO] [stdout] 198 | pub ai_controlled: u8, // Whether the vehicle is AI (1) or Human (0) controlled [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] 199 | pub driver_id: u8, // Driver id - see appendix [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] 200 | pub team_id: u8, // Team id - see appendix [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] 201 | pub race_number: u8, // Race number of the car [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] 202 | pub nationality: u8, // Nationality of the driver [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] 203 | pub name: [u8; 48], // Name of participant in UTF-8 format – null terminated Will be truncated with … (U+2026) if ... [INFO] [stdout] | ^^^^ [INFO] [stdout] 204 | pub priv_telemetry: u8, // The player's UDP setting, 0 = restricted, 1 = public [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `ParticipantData` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `header`, `num_cars_active`, and `participant_data` are never read [INFO] [stdout] --> src/f1_2019_net.rs:222:9 [INFO] [stdout] | [INFO] [stdout] 221 | pub struct Participants { [INFO] [stdout] | ------------ fields in this struct [INFO] [stdout] 222 | pub header: PacketHeader, // Header [INFO] [stdout] | ^^^^^^ [INFO] [stdout] 223 | pub num_cars_active: u8, // Number of active cars in the data – should match number of cars on HUD [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] 224 | pub participant_data: [ParticipantData; 20], // Data for all cars [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple fields are never read [INFO] [stdout] --> src/f1_2019_net.rs:235:9 [INFO] [stdout] | [INFO] [stdout] 234 | pub struct CarSetupData { [INFO] [stdout] | ------------ fields in this struct [INFO] [stdout] 235 | pub front_wing: u8, // Front wing aero [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] 236 | pub rear_wing: u8, // Rear wing aero [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] 237 | pub on_throttle: u8, // Differential adjustment on throttle (percentage) [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] 238 | pub off_throttle: u8, // Differential adjustment off throttle (percentage) [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] 239 | pub front_camber: f32, // Front camber angle (suspension geometry) [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] 240 | pub rear_camber: f32, // Rear camber angle (suspension geometry) [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] 241 | pub front_toe: f32, // Front toe angle (suspension geometry) [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] 242 | pub rear_toe: f32, // Rear toe angle (suspension geometry) [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] 243 | pub front_suspension: u8, // Front suspension [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] 244 | pub rear_suspension: u8, // Rear suspension [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] 245 | pub front_anti_roll_bar: u8, // Front anti-roll bar [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] 246 | pub rear_anti_roll_bar: u8, // Front anti-roll bar [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] 247 | pub front_suspension_height:u8, // Front ride height [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] 248 | pub rear_suspension_height: u8, // Rear ride height [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] 249 | pub brake_pressure: u8, // Brake pressure (percentage) [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] 250 | pub brake_bias: u8, // Brake bias (percentage) [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] 251 | pub front_tyre_pressure: f32, // Front tyre pressure (PSI) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] 252 | pub rear_tyre_pressure: f32, // Rear tyre pressure (PSI) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] 253 | pub ballast: u8, // Ballast [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] 254 | pub fuel_load: f32, // Fuel load [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `CarSetupData` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `header` and `car_setups` are never read [INFO] [stdout] --> src/f1_2019_net.rs:258:9 [INFO] [stdout] | [INFO] [stdout] 257 | pub struct CarSetups { [INFO] [stdout] | --------- fields in this struct [INFO] [stdout] 258 | pub header: PacketHeader, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] 259 | pub car_setups: [CarSetupData; 20], [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `header` and `car_status_data` are never read [INFO] [stdout] --> src/f1_2019_net.rs:268:6 [INFO] [stdout] | [INFO] [stdout] 267 | pub struct CarStatusData { [INFO] [stdout] | ------------- fields in this struct [INFO] [stdout] 268 | pub header: PacketHeader, // Header [INFO] [stdout] | ^^^^^^ [INFO] [stdout] 269 | pub car_status_data: [CarStatus; 20], // Array of car status' [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple fields are never read [INFO] [stdout] --> src/f1_2019_net.rs:274:9 [INFO] [stdout] | [INFO] [stdout] 273 | pub struct CarStatus { //56 bytes [INFO] [stdout] | --------- fields in this struct [INFO] [stdout] 274 | pub traction_control: u8, // 0 (off) - 2 (high) [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] 275 | pub anti_lock_brakes: u8, // 0 (off) - 1 (on) [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] 276 | pub fuel_mix: u8, // Fuel mix - 0 = lean, 1 = standard, 2 = rich, 3 = max [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] 277 | pub front_brake_bias: u8, // Front brake bias (percentage) [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] 278 | pub pit_limiter_status: u8, // Pit limiter status - 0 = off, 1 = on [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] 279 | pub fuel_in_tank: f32, // Current fuel mass [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] 280 | pub fuel_capacity: f32, // Fuel capacity [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] 281 | pub fuel_remaining_laps: f32, // Fuel remaining in terms of laps (value on MFD) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] 282 | pub max_rpm: u16, // Cars max RPM, point of rev limiter [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] 283 | pub idle_rpm: u16, // Cars idle RPM [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] 284 | pub max_gears: u8, // Maximum number of gears [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] 285 | pub drs_allowed: u8, // 0 = not allowed, 1 = allowed, -1 = unknown [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] 286 | pub tyres_wear: [u8; 4], // Tyre wear percentage [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] 287 | pub actual_tyre_compound: u8, // F1 Modern - 16 = C5, 17 = C4, 18 = C3, 19 = C2, 20 = C1 [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 292 | pub tyre_visual_compound: u8, // F1 visual (can be different from actual compound) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 296 | pub tyres_damage: [u8; 4], // Tyre damage (percentage) [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] 297 | pub front_left_wing_damage: u8, // Front left wing damage (percentage) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] 298 | pub front_right_wing_damage:u8, // Front right wing damage (percentage) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] 299 | pub rear_wing_damage: u8, // Rear wing damage (percentage) [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] 300 | pub engine_damage: u8, // Engine damage (percentage) [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] 301 | pub gear_box_damage: u8, // Gear box damage (percentage) [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] 302 | pub vehicle_fia_flags: i8, // -1 = invalid/unknown, 0 = none, 1 = green [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] 303 | // 2 = blue, 3 = yellow, 4 = red [INFO] [stdout] 304 | pub ers_store_energy: f32, // ERS energy store in Joules [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] 305 | pub ers_deploy_mode: u8, // ERS deployment mode, 0 = none, 1 = low, 2 = medium [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] 306 | // 3 = high, 4 = overtake, 5 = hotlap [INFO] [stdout] 307 | pub ers_harvested_this_lap_mguk: f32, // ERS energy harvested this lap by MGU-K [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] 308 | pub ers_harvested_this_lap_mguh: f32, // ERS energy harvested this lap by MGU-H [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] 309 | pub ers_deployed_this_lap: f32, // ERS energy deployed this lap [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `CarStatus` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple fields are never read [INFO] [stdout] --> src/f1_2019_net.rs:322:9 [INFO] [stdout] | [INFO] [stdout] 321 | pub struct CarMotion { [INFO] [stdout] | --------- fields in this struct [INFO] [stdout] 322 | pub world_pos_x: f32, //World Space pos [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] 323 | pub world_pos_y: f32, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] 324 | pub world_pos_z: f32, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] 325 | pub world_vel_x: f32, //World velocity [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] 326 | pub world_vel_y: f32, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] 327 | pub world_vel_z: f32, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] 328 | pub world_fwd_dir_x: i16, // World space forward X direction (normalised) [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] 329 | pub world_fwd_dir_y: i16, // World space forward Y direction (normalised) [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] 330 | pub world_fwd_dir_z: i16, // World space forward Z direction (normalised) [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] 331 | pub world_right_dir_x: i16, // World space right X direction (normalised) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] 332 | pub world_right_dir_y: i16, // World space right Y direction (normalised) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] 333 | pub world_right_dir_z: i16, // World space right Z direction (normalised) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] 334 | pub lateral_g: f32, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] 335 | pub longitudinal_g: f32, [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] 336 | pub vertical_g: f32, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] 337 | pub yaw: f32, //Radians [INFO] [stdout] | ^^^ [INFO] [stdout] 338 | pub pitch: f32, //Radians [INFO] [stdout] | ^^^^^ [INFO] [stdout] 339 | pub roll: f32, //Radians [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `CarMotion` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple fields are never read [INFO] [stdout] --> src/f1_2019_net.rs:343:9 [INFO] [stdout] | [INFO] [stdout] 342 | pub struct MotionData { [INFO] [stdout] | ---------- fields in this struct [INFO] [stdout] 343 | pub header: PacketHeader, // Header [INFO] [stdout] | ^^^^^^ [INFO] [stdout] 344 | pub car_motion_data: [CarMotion; 20], // Data for all cars on track [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 347 | pub suspension_pos: [f32; 4], [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] 348 | pub suspension_vel: [f32; 4], [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] 349 | pub suspension_acc: [f32; 4], [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] 350 | pub wheel_speed: [f32; 4], [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] 351 | pub wheel_slip: [f32; 4], [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] 352 | pub local_vel_x: f32, //Local space [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] 353 | pub local_vel_y: f32, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] 354 | pub local_vel_z: f32, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] 355 | pub angular_vel_x: f32, [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] 356 | pub angular_vel_y: f32, [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] 357 | pub angular_vel_z: f32, [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] 358 | pub angular_acc_x: f32, [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] 359 | pub angular_acc_y: f32, [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] 360 | pub angular_acc_z: f32, [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] 361 | pub front_wheels_angle: f32, //Radians [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `init_surfaces` is never used [INFO] [stdout] --> src/f1_2019_net.rs:617:8 [INFO] [stdout] | [INFO] [stdout] 617 | pub fn init_surfaces(map: &mut HashMap) { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `getName` should have a snake case name [INFO] [stdout] --> src/f1_2019_net.rs:22:12 [INFO] [stdout] | [INFO] [stdout] 22 | pub fn getName(&self, event_type: PacketType) -> &str { [INFO] [stdout] | ^^^^^^^ help: convert the identifier to snake case: `get_name` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(non_snake_case)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `Motion` should have a snake case name [INFO] [stdout] --> src/f1_2019_net.rs:24:13 [INFO] [stdout] | [INFO] [stdout] 24 | Motion => return &"motion packet", [INFO] [stdout] | ^^^^^^ help: convert the identifier to snake case: `motion` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `Session` should have a snake case name [INFO] [stdout] --> src/f1_2019_net.rs:25:13 [INFO] [stdout] | [INFO] [stdout] 25 | Session => return &"session packet", [INFO] [stdout] | ^^^^^^^ help: convert the identifier to snake case (notice the capitalization): `session` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `Lap` should have a snake case name [INFO] [stdout] --> src/f1_2019_net.rs:26:13 [INFO] [stdout] | [INFO] [stdout] 26 | Lap => return &"lap packet", [INFO] [stdout] | ^^^ help: convert the identifier to snake case: `lap` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `Event` should have a snake case name [INFO] [stdout] --> src/f1_2019_net.rs:27:13 [INFO] [stdout] | [INFO] [stdout] 27 | Event => return &"event packet", [INFO] [stdout] | ^^^^^ help: convert the identifier to snake case: `event` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `Participant` should have a snake case name [INFO] [stdout] --> src/f1_2019_net.rs:28:13 [INFO] [stdout] | [INFO] [stdout] 28 | Participant => return &"participant packet", [INFO] [stdout] | ^^^^^^^^^^^ help: convert the identifier to snake case: `participant` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `Setup` should have a snake case name [INFO] [stdout] --> src/f1_2019_net.rs:29:13 [INFO] [stdout] | [INFO] [stdout] 29 | Setup => return &"setup packet", [INFO] [stdout] | ^^^^^ help: convert the identifier to snake case (notice the capitalization): `setup` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `Telemetry` should have a snake case name [INFO] [stdout] --> src/f1_2019_net.rs:30:13 [INFO] [stdout] | [INFO] [stdout] 30 | Telemetry => return &"telemetry packet", [INFO] [stdout] | ^^^^^^^^^ help: convert the identifier to snake case: `telemetry` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `CarStatus` should have a snake case name [INFO] [stdout] --> src/f1_2019_net.rs:31:13 [INFO] [stdout] | [INFO] [stdout] 31 | CarStatus => return &"car status packet", [INFO] [stdout] | ^^^^^^^^^ help: convert the identifier to snake case: `car_status` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `InvalidPacket` should have a snake case name [INFO] [stdout] --> src/f1_2019_net.rs:32:13 [INFO] [stdout] | [INFO] [stdout] 32 | InvalidPacket => return &"invalid packet", [INFO] [stdout] | ^^^^^^^^^^^^^ help: convert the identifier to snake case: `invalid_packet` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] For more information about this error, try `rustc --explain E0170`. [INFO] [stdout] [INFO] [stderr] error: could not compile `f12019_data_logger` (bin "f12019_data_logger") due to 9 previous errors; 68 warnings emitted [INFO] running `Command { std: "docker" "inspect" "abc5fb5393243be04cabd68dce04b31e827149e64debec6a2e8fa66963366e8d", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "abc5fb5393243be04cabd68dce04b31e827149e64debec6a2e8fa66963366e8d", kill_on_drop: false }` [INFO] [stdout] abc5fb5393243be04cabd68dce04b31e827149e64debec6a2e8fa66963366e8d