[INFO] cloning repository https://github.com/donske07/Deduper
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/donske07/Deduper" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fdonske07%2FDeduper", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fdonske07%2FDeduper'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 25cb227c39842db468b6a3fa04860e74ed29c17b
[INFO] checking donske07/Deduper against 1.95.0 for pr-155915
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fdonske07%2FDeduper" "/workspace/builds/worker-2-tc1/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-2-tc1/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/donske07/Deduper
[INFO] finished tweaking git repo https://github.com/donske07/Deduper
[INFO] tweaked toml for git repo https://github.com/donske07/Deduper written to /workspace/builds/worker-2-tc1/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/donske07/Deduper on toolchain 1.95.0
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.95.0" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/donske07/Deduper 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" "+1.95.0" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Updating crates.io index
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded postgres-protocol v0.6.4
[INFO] [stderr]   Downloaded crc32c v0.6.3
[INFO] [stderr]   Downloaded postgres-types v0.2.3
[INFO] [stderr]   Downloaded md-5 v0.10.1
[INFO] [stderr]   Downloaded integer-encoding v3.0.3
[INFO] [stderr]   Downloaded field_names v0.2.0
[INFO] [stderr]   Downloaded semver v1.0.9
[INFO] [stderr]   Downloaded rskafka v0.2.0
[INFO] [stderr]   Downloaded tokio-postgres v0.7.6
[INFO] [stderr]   Downloaded redis v0.21.5
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-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:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+1.95.0" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] 1d1dd7f941ff17703fbaf2ffa023205f45097059c8f4a034d7c3b44b6cce2ed8
[INFO] running `Command { std: "docker" "start" "-a" "1d1dd7f941ff17703fbaf2ffa023205f45097059c8f4a034d7c3b44b6cce2ed8", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "1d1dd7f941ff17703fbaf2ffa023205f45097059c8f4a034d7c3b44b6cce2ed8", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "1d1dd7f941ff17703fbaf2ffa023205f45097059c8f4a034d7c3b44b6cce2ed8", kill_on_drop: false }`
[INFO] [stdout] 1d1dd7f941ff17703fbaf2ffa023205f45097059c8f4a034d7c3b44b6cce2ed8
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-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:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+1.95.0" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] fd3a8a832b84ca22672b0723e0551f57bbb3e6012a92e02bb21f110bf308f915
[INFO] running `Command { std: "docker" "start" "-a" "fd3a8a832b84ca22672b0723e0551f57bbb3e6012a92e02bb21f110bf308f915", kill_on_drop: false }`
[INFO] [stderr]    Compiling libc v0.2.125
[INFO] [stderr]    Compiling proc-macro2 v1.0.38
[INFO] [stderr]    Compiling unicode-xid v0.2.3
[INFO] [stderr]    Compiling syn v1.0.94
[INFO] [stderr]    Compiling memchr v2.5.0
[INFO] [stderr]    Compiling futures-core v0.3.21
[INFO] [stderr]     Checking futures-sink v0.3.21
[INFO] [stderr]     Checking smallvec v1.8.0
[INFO] [stderr]    Compiling generic-array v0.14.5
[INFO] [stderr]     Checking bytes v1.1.0
[INFO] [stderr]     Checking tinyvec v1.6.0
[INFO] [stderr]    Compiling futures-channel v0.3.21
[INFO] [stderr]    Compiling futures-task v0.3.21
[INFO] [stderr]    Compiling semver v1.0.9
[INFO] [stderr]     Checking subtle v2.4.1
[INFO] [stderr]     Checking unicode-bidi v0.3.8
[INFO] [stderr]    Compiling futures-util v0.3.21
[INFO] [stderr]     Checking once_cell v1.10.0
[INFO] [stderr]     Checking tracing-core v0.1.26
[INFO] [stderr]     Checking slab v0.4.6
[INFO] [stderr]     Checking futures-io v0.3.21
[INFO] [stderr]    Compiling async-trait v0.1.53
[INFO] [stderr]    Compiling zstd-safe v4.1.6+zstd.1.5.2
[INFO] [stderr]     Checking matches v0.1.9
[INFO] [stderr]    Compiling crc32fast v1.3.2
[INFO] [stderr]    Compiling num-integer v0.1.45
[INFO] [stderr]    Compiling snap v1.0.5
[INFO] [stderr]    Compiling serde v1.0.137
[INFO] [stderr]     Checking fallible-iterator v0.2.0
[INFO] [stderr]    Compiling rustc_version v0.4.0
[INFO] [stderr]     Checking form_urlencoded v1.0.1
[INFO] [stderr]     Checking miniz_oxide v0.5.1
[INFO] [stderr]     Checking phf_shared v0.10.0
[INFO] [stderr]     Checking sha1_smol v1.0.0
[INFO] [stderr]     Checking num_threads v0.1.6
[INFO] [stderr]     Checking regex-syntax v0.6.25
[INFO] [stderr]     Checking parking_lot_core v0.9.3
[INFO] [stderr]     Checking num_cpus v1.13.1
[INFO] [stderr]     Checking mio v0.8.3
[INFO] [stderr]     Checking getrandom v0.2.6
[INFO] [stderr]     Checking signal-hook-registry v1.4.0
[INFO] [stderr]     Checking socket2 v0.4.4
[INFO] [stderr]    Compiling quote v1.0.18
[INFO] [stderr]    Compiling crc32c v0.6.3
[INFO] [stderr]     Checking aho-corasick v0.7.18
[INFO] [stderr]     Checking atty v0.2.14
[INFO] [stderr]     Checking crypto-common v0.1.3
[INFO] [stderr]     Checking block-buffer v0.10.2
[INFO] [stderr]     Checking parking_lot v0.12.0
[INFO] [stderr]     Checking rand_core v0.6.3
[INFO] [stderr]    Compiling jobserver v0.1.24
[INFO] [stderr]     Checking digest v0.10.3
[INFO] [stderr]     Checking time v0.3.9
[INFO] [stderr]     Checking phf v0.10.1
[INFO] [stderr]     Checking sha1 v0.6.1
[INFO] [stderr]     Checking flate2 v1.0.24
[INFO] [stderr]     Checking time v0.1.44
[INFO] [stderr]     Checking itoa v1.0.1
[INFO] [stderr]     Checking dtoa v0.4.8
[INFO] [stderr]     Checking itoa v0.4.8
[INFO] [stderr]     Checking integer-encoding v3.0.3
[INFO] [stderr]     Checking ryu v1.0.9
[INFO] [stderr]     Checking clap v2.34.0
[INFO] [stderr]     Checking unicode-normalization v0.1.19
[INFO] [stderr]     Checking rand_chacha v0.3.1
[INFO] [stderr]    Compiling cc v1.0.73
[INFO] [stderr]     Checking chrono v0.4.19
[INFO] [stderr]     Checking dotenv v0.15.0
[INFO] [stderr]     Checking sha2 v0.10.2
[INFO] [stderr]     Checking hmac v0.12.1
[INFO] [stderr]     Checking md-5 v0.10.1
[INFO] [stderr]     Checking rand v0.8.5
[INFO] [stderr]     Checking regex v1.5.5
[INFO] [stderr]     Checking stringprep v0.1.2
[INFO] [stderr]     Checking idna v0.2.3
[INFO] [stderr]    Compiling zstd-sys v1.6.3+zstd.1.5.2
[INFO] [stderr]    Compiling lz4-sys v1.9.3
[INFO] [stderr]     Checking postgres-protocol v0.6.4
[INFO] [stderr]     Checking url v2.2.2
[INFO] [stderr]     Checking postgres-types v0.2.3
[INFO] [stderr]     Checking env_logger v0.9.0
[INFO] [stderr]    Compiling darling_core v0.13.4
[INFO] [stderr]    Compiling tokio-macros v1.7.0
[INFO] [stderr]    Compiling futures-macro v0.3.21
[INFO] [stderr]    Compiling tracing-attributes v0.1.21
[INFO] [stderr]    Compiling serde_derive v1.0.137
[INFO] [stderr]    Compiling thiserror-impl v1.0.31
[INFO] [stderr]     Checking tokio v1.18.2
[INFO] [stderr]    Compiling darling_macro v0.13.4
[INFO] [stderr]     Checking tracing v0.1.34
[INFO] [stderr]    Compiling darling v0.13.4
[INFO] [stderr]    Compiling field_names v0.2.0
[INFO] [stderr]     Checking thiserror v1.0.31
[INFO] [stderr]     Checking lz4 v1.23.3
[INFO] [stderr]     Checking futures-executor v0.3.21
[INFO] [stderr]     Checking futures v0.3.21
[INFO] [stderr]     Checking tokio-util v0.7.2
[INFO] [stderr]     Checking tokio-util v0.6.10
[INFO] [stderr]     Checking combine v4.6.4
[INFO] [stderr]     Checking tokio-postgres v0.7.6
[INFO] [stderr]     Checking serde_json v1.0.81
[INFO] [stderr]     Checking redis v0.21.5
[INFO] [stderr]     Checking zstd v0.10.2+zstd.1.5.2
[INFO] [stderr]     Checking rskafka v0.2.0
[INFO] [stderr]     Checking deduper v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused import: `std::env`
[INFO] [stdout]  --> src/config.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use std::env;
[INFO] [stdout]   |     ^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Connection`, `Error`, `Row`, and `Socket`
[INFO] [stdout]  --> src/database.rs:1:30
[INFO] [stdout]   |
[INFO] [stdout] 1 | use tokio_postgres::{Client, Connection, Error, NoTls, Row, Socket};
[INFO] [stdout]   |                              ^^^^^^^^^^  ^^^^^         ^^^  ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `serde_json`
[INFO] [stdout]  --> src/ingest_service.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use serde_json;
[INFO] [stdout]   |     ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::env`
[INFO] [stdout]  --> src/config.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use std::env;
[INFO] [stdout]   |     ^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Connection`, `Error`, `Row`, and `Socket`
[INFO] [stdout]  --> src/database.rs:1:30
[INFO] [stdout]   |
[INFO] [stdout] 1 | use tokio_postgres::{Client, Connection, Error, NoTls, Row, Socket};
[INFO] [stdout]   |                              ^^^^^^^^^^  ^^^^^         ^^^  ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `serde_json`
[INFO] [stdout]  --> src/ingest_service.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use serde_json;
[INFO] [stdout]   |     ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `events`
[INFO] [stdout]   --> src/ingest_service.rs:96:9
[INFO] [stdout]    |
[INFO] [stdout] 96 |         events: &Vec<Event>,
[INFO] [stdout]    |         ^^^^^^ help: if this is intentional, prefix it with an underscore: `_events`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `event_type`
[INFO] [stdout]   --> src/ingest_service.rs:97:9
[INFO] [stdout]    |
[INFO] [stdout] 97 |         event_type: &str,
[INFO] [stdout]    |         ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_event_type`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `events`
[INFO] [stdout]   --> src/ingest_service.rs:96:9
[INFO] [stdout]    |
[INFO] [stdout] 96 |         events: &Vec<Event>,
[INFO] [stdout]    |         ^^^^^^ help: if this is intentional, prefix it with an underscore: `_events`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `event_type`
[INFO] [stdout]   --> src/ingest_service.rs:97:9
[INFO] [stdout]    |
[INFO] [stdout] 97 |         event_type: &str,
[INFO] [stdout]    |         ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_event_type`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `client` is never read
[INFO] [stdout]  --> src/database.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | pub struct Database {
[INFO] [stdout]   |            -------- field in this struct
[INFO] [stdout] 3 |     client: Client,
[INFO] [stdout]   |     ^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `get_client` is never used
[INFO] [stdout]   --> src/database.rs:20:12
[INFO] [stdout]    |
[INFO] [stdout]  6 | impl Database {
[INFO] [stdout]    | ------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 20 |     pub fn get_client(&self) -> &Client {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `database` and `log` are never read
[INFO] [stdout]  --> src/ingest_service.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub struct IngestService {
[INFO] [stdout]   |            ------------- fields in this struct
[INFO] [stdout] 8 |     database: Database,
[INFO] [stdout]   |     ^^^^^^^^
[INFO] [stdout] 9 |     log: bool,
[INFO] [stdout]   |     ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `query` and `build_raw_table_insert_statement` are never used
[INFO] [stdout]   --> src/ingest_service.rs:17:14
[INFO] [stdout]    |
[INFO] [stdout] 12 | impl IngestService {
[INFO] [stdout]    | ------------------ methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 17 |     async fn query(&self, query: &str) -> Result<Vec<Row>, DatabaseError> {
[INFO] [stdout]    |              ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 24 |     pub fn build_raw_table_insert_statement<'a>(
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `QueryError` is never constructed
[INFO] [stdout]    --> src/ingest_service.rs:126:5
[INFO] [stdout]     |
[INFO] [stdout] 124 | pub enum DatabaseError {
[INFO] [stdout]     |          ------------- variant in this enum
[INFO] [stdout] 125 |     #[error("Connection error")]
[INFO] [stdout] 126 |     QueryError,
[INFO] [stdout]     |     ^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `DatabaseError` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: structure field `Id` should have a snake case name
[INFO] [stdout]  --> src/event.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 |     Id: u32,
[INFO] [stdout]   |     ^^ help: convert the identifier to snake case (notice the capitalization): `id`
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(non_snake_case)]` (part of `#[warn(nonstandard_style)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: structure field `Tags` should have a snake case name
[INFO] [stdout]  --> src/event.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 |     Tags: Vec<String>,
[INFO] [stdout]   |     ^^^^ help: convert the identifier to snake case: `tags`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: structure field `Id` should have a snake case name
[INFO] [stdout]   --> src/event.rs:11:5
[INFO] [stdout]    |
[INFO] [stdout] 11 |     Id: u32,
[INFO] [stdout]    |     ^^ help: convert the identifier to snake case (notice the capitalization): `id`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: structure field `CreatorIds` should have a snake case name
[INFO] [stdout]   --> src/event.rs:12:5
[INFO] [stdout]    |
[INFO] [stdout] 12 |     CreatorIds: Vec<u32>,
[INFO] [stdout]    |     ^^^^^^^^^^ help: convert the identifier to snake case: `creator_ids`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: structure field `Tags` should have a snake case name
[INFO] [stdout]   --> src/event.rs:13:5
[INFO] [stdout]    |
[INFO] [stdout] 13 |     Tags: Vec<String>,
[INFO] [stdout]    |     ^^^^ help: convert the identifier to snake case: `tags`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: structure field `CreatedAtUtc` should have a snake case name
[INFO] [stdout]   --> src/event.rs:14:5
[INFO] [stdout]    |
[INFO] [stdout] 14 |     CreatedAtUtc: String,
[INFO] [stdout]    |     ^^^^^^^^^^^^ help: convert the identifier to snake case: `created_at_utc`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: structure field `UpdatedAtUtc` should have a snake case name
[INFO] [stdout]   --> src/event.rs:15:5
[INFO] [stdout]    |
[INFO] [stdout] 15 |     UpdatedAtUtc: String,
[INFO] [stdout]    |     ^^^^^^^^^^^^ help: convert the identifier to snake case: `updated_at_utc`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: structure field `UserIp` should have a snake case name
[INFO] [stdout]   --> src/event.rs:20:5
[INFO] [stdout]    |
[INFO] [stdout] 20 |     UserIp: String,
[INFO] [stdout]    |     ^^^^^^ help: convert the identifier to snake case: `user_ip`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: structure field `CountryCode` should have a snake case name
[INFO] [stdout]   --> src/event.rs:21:5
[INFO] [stdout]    |
[INFO] [stdout] 21 |     CountryCode: String,
[INFO] [stdout]    |     ^^^^^^^^^^^ help: convert the identifier to snake case: `country_code`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: structure field `HasBeenDeduplicated` should have a snake case name
[INFO] [stdout]   --> src/event.rs:26:5
[INFO] [stdout]    |
[INFO] [stdout] 26 |     HasBeenDeduplicated: bool,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `has_been_deduplicated`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: structure field `Period` should have a snake case name
[INFO] [stdout]   --> src/event.rs:27:5
[INFO] [stdout]    |
[INFO] [stdout] 27 |     Period: String,
[INFO] [stdout]    |     ^^^^^^ help: convert the identifier to snake case: `period`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: structure field `Fields` should have a snake case name
[INFO] [stdout]   --> src/event.rs:28:5
[INFO] [stdout]    |
[INFO] [stdout] 28 |     Fields: Vec<String>,
[INFO] [stdout]    |     ^^^^^^ help: convert the identifier to snake case (notice the capitalization): `fields`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: structure field `EventId` should have a snake case name
[INFO] [stdout]   --> src/event.rs:33:5
[INFO] [stdout]    |
[INFO] [stdout] 33 |     EventId: String,
[INFO] [stdout]    |     ^^^^^^^ help: convert the identifier to snake case: `event_id`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: structure field `EventTimestampUtc` should have a snake case name
[INFO] [stdout]   --> src/event.rs:34:5
[INFO] [stdout]    |
[INFO] [stdout] 34 |     EventTimestampUtc: String,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `event_timestamp_utc`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: structure field `EventType` should have a snake case name
[INFO] [stdout]   --> src/event.rs:35:5
[INFO] [stdout]    |
[INFO] [stdout] 35 |     EventType: String,
[INFO] [stdout]    |     ^^^^^^^^^ help: convert the identifier to snake case: `event_type`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: structure field `Platform` should have a snake case name
[INFO] [stdout]   --> src/event.rs:36:5
[INFO] [stdout]    |
[INFO] [stdout] 36 |     Platform: String,
[INFO] [stdout]    |     ^^^^^^^^ help: convert the identifier to snake case: `platform`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: structure field `Game` should have a snake case name
[INFO] [stdout]   --> src/event.rs:37:5
[INFO] [stdout]    |
[INFO] [stdout] 37 |     Game: Game,
[INFO] [stdout]    |     ^^^^ help: convert the identifier to snake case: `game`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: structure field `Mod` should have a snake case name
[INFO] [stdout]   --> src/event.rs:38:5
[INFO] [stdout]    |
[INFO] [stdout] 38 |     Mod: Mod,
[INFO] [stdout]    |     ^^^
[INFO] [stdout]    |
[INFO] [stdout] help: rename the identifier or convert it to a snake case raw identifier
[INFO] [stdout]    |
[INFO] [stdout] 38 -     Mod: Mod,
[INFO] [stdout] 38 +     r#mod: Mod,
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: structure field `Geo` should have a snake case name
[INFO] [stdout]   --> src/event.rs:39:5
[INFO] [stdout]    |
[INFO] [stdout] 39 |     Geo: Geo,
[INFO] [stdout]    |     ^^^ help: convert the identifier to snake case: `geo`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: structure field `Value` should have a snake case name
[INFO] [stdout]   --> src/event.rs:40:5
[INFO] [stdout]    |
[INFO] [stdout] 40 |     Value: u32,
[INFO] [stdout]    |     ^^^^^ help: convert the identifier to snake case (notice the capitalization): `value`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: structure field `DeduplicationRules` should have a snake case name
[INFO] [stdout]   --> src/event.rs:41:5
[INFO] [stdout]    |
[INFO] [stdout] 41 |     DeduplicationRules: DeduplicationRules,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `deduplication_rules`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `client` is never read
[INFO] [stdout]  --> src/database.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | pub struct Database {
[INFO] [stdout]   |            -------- field in this struct
[INFO] [stdout] 3 |     client: Client,
[INFO] [stdout]   |     ^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `get_client` is never used
[INFO] [stdout]   --> src/database.rs:20:12
[INFO] [stdout]    |
[INFO] [stdout]  6 | impl Database {
[INFO] [stdout]    | ------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 20 |     pub fn get_client(&self) -> &Client {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `database` and `log` are never read
[INFO] [stdout]  --> src/ingest_service.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub struct IngestService {
[INFO] [stdout]   |            ------------- fields in this struct
[INFO] [stdout] 8 |     database: Database,
[INFO] [stdout]   |     ^^^^^^^^
[INFO] [stdout] 9 |     log: bool,
[INFO] [stdout]   |     ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `query` and `build_raw_table_insert_statement` are never used
[INFO] [stdout]   --> src/ingest_service.rs:17:14
[INFO] [stdout]    |
[INFO] [stdout] 12 | impl IngestService {
[INFO] [stdout]    | ------------------ methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 17 |     async fn query(&self, query: &str) -> Result<Vec<Row>, DatabaseError> {
[INFO] [stdout]    |              ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 24 |     pub fn build_raw_table_insert_statement<'a>(
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `QueryError` is never constructed
[INFO] [stdout]    --> src/ingest_service.rs:126:5
[INFO] [stdout]     |
[INFO] [stdout] 124 | pub enum DatabaseError {
[INFO] [stdout]     |          ------------- variant in this enum
[INFO] [stdout] 125 |     #[error("Connection error")]
[INFO] [stdout] 126 |     QueryError,
[INFO] [stdout]     |     ^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `DatabaseError` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: structure field `Id` should have a snake case name
[INFO] [stdout]  --> src/event.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 |     Id: u32,
[INFO] [stdout]   |     ^^ help: convert the identifier to snake case (notice the capitalization): `id`
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(non_snake_case)]` (part of `#[warn(nonstandard_style)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: structure field `Tags` should have a snake case name
[INFO] [stdout]  --> src/event.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 |     Tags: Vec<String>,
[INFO] [stdout]   |     ^^^^ help: convert the identifier to snake case: `tags`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: structure field `Id` should have a snake case name
[INFO] [stdout]   --> src/event.rs:11:5
[INFO] [stdout]    |
[INFO] [stdout] 11 |     Id: u32,
[INFO] [stdout]    |     ^^ help: convert the identifier to snake case (notice the capitalization): `id`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: structure field `CreatorIds` should have a snake case name
[INFO] [stdout]   --> src/event.rs:12:5
[INFO] [stdout]    |
[INFO] [stdout] 12 |     CreatorIds: Vec<u32>,
[INFO] [stdout]    |     ^^^^^^^^^^ help: convert the identifier to snake case: `creator_ids`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: structure field `Tags` should have a snake case name
[INFO] [stdout]   --> src/event.rs:13:5
[INFO] [stdout]    |
[INFO] [stdout] 13 |     Tags: Vec<String>,
[INFO] [stdout]    |     ^^^^ help: convert the identifier to snake case: `tags`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: structure field `CreatedAtUtc` should have a snake case name
[INFO] [stdout]   --> src/event.rs:14:5
[INFO] [stdout]    |
[INFO] [stdout] 14 |     CreatedAtUtc: String,
[INFO] [stdout]    |     ^^^^^^^^^^^^ help: convert the identifier to snake case: `created_at_utc`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: structure field `UpdatedAtUtc` should have a snake case name
[INFO] [stdout]   --> src/event.rs:15:5
[INFO] [stdout]    |
[INFO] [stdout] 15 |     UpdatedAtUtc: String,
[INFO] [stdout]    |     ^^^^^^^^^^^^ help: convert the identifier to snake case: `updated_at_utc`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: structure field `UserIp` should have a snake case name
[INFO] [stdout]   --> src/event.rs:20:5
[INFO] [stdout]    |
[INFO] [stdout] 20 |     UserIp: String,
[INFO] [stdout]    |     ^^^^^^ help: convert the identifier to snake case: `user_ip`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: structure field `CountryCode` should have a snake case name
[INFO] [stdout]   --> src/event.rs:21:5
[INFO] [stdout]    |
[INFO] [stdout] 21 |     CountryCode: String,
[INFO] [stdout]    |     ^^^^^^^^^^^ help: convert the identifier to snake case: `country_code`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: structure field `HasBeenDeduplicated` should have a snake case name
[INFO] [stdout]   --> src/event.rs:26:5
[INFO] [stdout]    |
[INFO] [stdout] 26 |     HasBeenDeduplicated: bool,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `has_been_deduplicated`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: structure field `Period` should have a snake case name
[INFO] [stdout]   --> src/event.rs:27:5
[INFO] [stdout]    |
[INFO] [stdout] 27 |     Period: String,
[INFO] [stdout]    |     ^^^^^^ help: convert the identifier to snake case: `period`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: structure field `Fields` should have a snake case name
[INFO] [stdout]   --> src/event.rs:28:5
[INFO] [stdout]    |
[INFO] [stdout] 28 |     Fields: Vec<String>,
[INFO] [stdout]    |     ^^^^^^ help: convert the identifier to snake case (notice the capitalization): `fields`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: structure field `EventId` should have a snake case name
[INFO] [stdout]   --> src/event.rs:33:5
[INFO] [stdout]    |
[INFO] [stdout] 33 |     EventId: String,
[INFO] [stdout]    |     ^^^^^^^ help: convert the identifier to snake case: `event_id`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: structure field `EventTimestampUtc` should have a snake case name
[INFO] [stdout]   --> src/event.rs:34:5
[INFO] [stdout]    |
[INFO] [stdout] 34 |     EventTimestampUtc: String,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `event_timestamp_utc`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: structure field `EventType` should have a snake case name
[INFO] [stdout]   --> src/event.rs:35:5
[INFO] [stdout]    |
[INFO] [stdout] 35 |     EventType: String,
[INFO] [stdout]    |     ^^^^^^^^^ help: convert the identifier to snake case: `event_type`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: structure field `Platform` should have a snake case name
[INFO] [stdout]   --> src/event.rs:36:5
[INFO] [stdout]    |
[INFO] [stdout] 36 |     Platform: String,
[INFO] [stdout]    |     ^^^^^^^^ help: convert the identifier to snake case: `platform`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: structure field `Game` should have a snake case name
[INFO] [stdout]   --> src/event.rs:37:5
[INFO] [stdout]    |
[INFO] [stdout] 37 |     Game: Game,
[INFO] [stdout]    |     ^^^^ help: convert the identifier to snake case: `game`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: structure field `Mod` should have a snake case name
[INFO] [stdout]   --> src/event.rs:38:5
[INFO] [stdout]    |
[INFO] [stdout] 38 |     Mod: Mod,
[INFO] [stdout]    |     ^^^
[INFO] [stdout]    |
[INFO] [stdout] help: rename the identifier or convert it to a snake case raw identifier
[INFO] [stdout]    |
[INFO] [stdout] 38 -     Mod: Mod,
[INFO] [stdout] 38 +     r#mod: Mod,
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: structure field `Geo` should have a snake case name
[INFO] [stdout]   --> src/event.rs:39:5
[INFO] [stdout]    |
[INFO] [stdout] 39 |     Geo: Geo,
[INFO] [stdout]    |     ^^^ help: convert the identifier to snake case: `geo`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: structure field `Value` should have a snake case name
[INFO] [stdout]   --> src/event.rs:40:5
[INFO] [stdout]    |
[INFO] [stdout] 40 |     Value: u32,
[INFO] [stdout]    |     ^^^^^ help: convert the identifier to snake case (notice the capitalization): `value`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: structure field `DeduplicationRules` should have a snake case name
[INFO] [stdout]   --> src/event.rs:41:5
[INFO] [stdout]    |
[INFO] [stdout] 41 |     DeduplicationRules: DeduplicationRules,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `deduplication_rules`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 1m 19s
[INFO] [stderr] warning: the following packages contain code that will be rejected by a future version of Rust: redis v0.21.5
[INFO] [stderr] note: to see what the problems were, use the option `--future-incompat-report`, or run `cargo report future-incompatibilities --id 2`
[INFO] running `Command { std: "docker" "inspect" "fd3a8a832b84ca22672b0723e0551f57bbb3e6012a92e02bb21f110bf308f915", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "fd3a8a832b84ca22672b0723e0551f57bbb3e6012a92e02bb21f110bf308f915", kill_on_drop: false }`
[INFO] [stdout] fd3a8a832b84ca22672b0723e0551f57bbb3e6012a92e02bb21f110bf308f915
