[INFO] cloning repository https://github.com/v0l/victron_pure_ess
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/v0l/victron_pure_ess" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fv0l%2Fvictron_pure_ess", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fv0l%2Fvictron_pure_ess'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 13e1d9981a98e34b66828461f72e0a8265b6bd3e
[INFO] checking v0l/victron_pure_ess against master#3129d37ef7075ee3cbaa3d6cbe1b5794f67192b0 for pr-143164
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fv0l%2Fvictron_pure_ess" "/workspace/builds/worker-0-tc2/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-0-tc2/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/v0l/victron_pure_ess
[INFO] finished tweaking git repo https://github.com/v0l/victron_pure_ess
[INFO] tweaked toml for git repo https://github.com/v0l/victron_pure_ess written to /workspace/builds/worker-0-tc2/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/v0l/victron_pure_ess on toolchain 3129d37ef7075ee3cbaa3d6cbe1b5794f67192b0
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+3129d37ef7075ee3cbaa3d6cbe1b5794f67192b0" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/v0l/victron_pure_ess 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" "+3129d37ef7075ee3cbaa3d6cbe1b5794f67192b0" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Blocking waiting for file lock on package cache
[INFO] [stderr]     Updating crates.io index
[INFO] [stderr]     Blocking waiting for file lock on package cache
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded chrono v0.4.35
[INFO] [stderr]   Downloaded tokio-modbus v0.12.0
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:cf8efcab8866f2cf4285301c7418e2f4f2a9b088c91ba69c40d5b659f81557f7" "/opt/rustwide/cargo-home/bin/cargo" "+3129d37ef7075ee3cbaa3d6cbe1b5794f67192b0" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] 1cdda2e88c1ac7b32a1593d0e6b9af0b05cdff62ab74049864483cbe409cd1e6
[INFO] running `Command { std: "docker" "start" "-a" "1cdda2e88c1ac7b32a1593d0e6b9af0b05cdff62ab74049864483cbe409cd1e6", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "1cdda2e88c1ac7b32a1593d0e6b9af0b05cdff62ab74049864483cbe409cd1e6", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "1cdda2e88c1ac7b32a1593d0e6b9af0b05cdff62ab74049864483cbe409cd1e6", kill_on_drop: false }`
[INFO] [stdout] 1cdda2e88c1ac7b32a1593d0e6b9af0b05cdff62ab74049864483cbe409cd1e6
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:cf8efcab8866f2cf4285301c7418e2f4f2a9b088c91ba69c40d5b659f81557f7" "/opt/rustwide/cargo-home/bin/cargo" "+3129d37ef7075ee3cbaa3d6cbe1b5794f67192b0" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] c3b0989facbf7e3337e3602a7fd832a674cee55af69c9fc30c199a2649d701d8
[INFO] running `Command { std: "docker" "start" "-a" "c3b0989facbf7e3337e3602a7fd832a674cee55af69c9fc30c199a2649d701d8", kill_on_drop: false }`
[INFO] [stderr]    Compiling proc-macro2 v1.0.79
[INFO] [stderr]    Compiling libc v0.2.153
[INFO] [stderr]    Compiling autocfg v1.2.0
[INFO] [stderr]    Compiling serde v1.0.197
[INFO] [stderr]    Compiling async-trait v0.1.79
[INFO] [stderr]    Compiling serde_json v1.0.115
[INFO] [stderr]     Checking futures-task v0.3.30
[INFO] [stderr]     Checking ryu v1.0.17
[INFO] [stderr]     Checking log v0.4.21
[INFO] [stderr]     Checking tracing v0.1.40
[INFO] [stderr]     Checking futures-util v0.3.30
[INFO] [stderr]    Compiling num-traits v0.2.18
[INFO] [stderr]    Compiling quote v1.0.35
[INFO] [stderr]     Checking num_cpus v1.16.0
[INFO] [stderr]     Checking mio v0.8.11
[INFO] [stderr]     Checking socket2 v0.5.6
[INFO] [stderr]    Compiling syn v2.0.55
[INFO] [stderr]     Checking chrono v0.4.35
[INFO] [stderr]    Compiling tokio-macros v2.2.0
[INFO] [stderr]    Compiling serde_derive v1.0.197
[INFO] [stderr]     Checking tokio v1.36.0
[INFO] [stderr]     Checking tokio-util v0.7.10
[INFO] [stderr]     Checking tokio-modbus v0.12.0
[INFO] [stderr]     Checking ve_smart_ess v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused import: `RateDischarge`
[INFO] [stdout]  --> src/smart_ess/mod.rs:8:51
[INFO] [stdout]   |
[INFO] [stdout] 8 | use crate::smart_ess::rate::{DischargeMode, Rate, RateDischarge};
[INFO] [stdout]   |                                                   ^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `chrono::TimeZone::ymd`: use `with_ymd_and_hms()` instead
[INFO] [stdout]    --> src/smart_ess/rate.rs:118:40
[INFO] [stdout]     |
[INFO] [stdout] 118 |         let next = rate.schedule(Local.ymd(2022, 04, 18).and_hms(8, 0, 0).with_timezone(&Utc));
[INFO] [stdout]     |                                        ^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(deprecated)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `chrono::Date::<Tz>::and_hms`: Use and_hms_opt() instead
[INFO] [stdout]    --> src/smart_ess/rate.rs:118:58
[INFO] [stdout]     |
[INFO] [stdout] 118 |         let next = rate.schedule(Local.ymd(2022, 04, 18).and_hms(8, 0, 0).with_timezone(&Utc));
[INFO] [stdout]     |                                                          ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `chrono::TimeZone::ymd`: use `with_ymd_and_hms()` instead
[INFO] [stdout]    --> src/smart_ess/rate.rs:119:26
[INFO] [stdout]     |
[INFO] [stdout] 119 |         assert_eq!(Local.ymd(2022, 04, 18).and_hms(9, 0, 0), next[0].start);
[INFO] [stdout]     |                          ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `chrono::Date::<Tz>::and_hms`: Use and_hms_opt() instead
[INFO] [stdout]    --> src/smart_ess/rate.rs:119:44
[INFO] [stdout]     |
[INFO] [stdout] 119 |         assert_eq!(Local.ymd(2022, 04, 18).and_hms(9, 0, 0), next[0].start);
[INFO] [stdout]     |                                            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `chrono::TimeZone::ymd`: use `with_ymd_and_hms()` instead
[INFO] [stdout]    --> src/smart_ess/rate.rs:120:26
[INFO] [stdout]     |
[INFO] [stdout] 120 |         assert_eq!(Local.ymd(2022, 04, 18).and_hms(11, 0, 0), next[1].start);
[INFO] [stdout]     |                          ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `chrono::Date::<Tz>::and_hms`: Use and_hms_opt() instead
[INFO] [stdout]    --> src/smart_ess/rate.rs:120:44
[INFO] [stdout]     |
[INFO] [stdout] 120 |         assert_eq!(Local.ymd(2022, 04, 18).and_hms(11, 0, 0), next[1].start);
[INFO] [stdout]     |                                            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `chrono::TimeZone::ymd`: use `with_ymd_and_hms()` instead
[INFO] [stdout]    --> src/smart_ess/rate.rs:122:40
[INFO] [stdout]     |
[INFO] [stdout] 122 |         let next = rate.schedule(Local.ymd(2022, 04, 18).and_hms(9, 0, 0).with_timezone(&Utc));
[INFO] [stdout]     |                                        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `chrono::Date::<Tz>::and_hms`: Use and_hms_opt() instead
[INFO] [stdout]    --> src/smart_ess/rate.rs:122:58
[INFO] [stdout]     |
[INFO] [stdout] 122 |         let next = rate.schedule(Local.ymd(2022, 04, 18).and_hms(9, 0, 0).with_timezone(&Utc));
[INFO] [stdout]     |                                                          ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `chrono::TimeZone::ymd`: use `with_ymd_and_hms()` instead
[INFO] [stdout]    --> src/smart_ess/rate.rs:123:26
[INFO] [stdout]     |
[INFO] [stdout] 123 |         assert_eq!(Local.ymd(2022, 04, 18).and_hms(9, 0, 0), next[0].start);
[INFO] [stdout]     |                          ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `chrono::Date::<Tz>::and_hms`: Use and_hms_opt() instead
[INFO] [stdout]    --> src/smart_ess/rate.rs:123:44
[INFO] [stdout]     |
[INFO] [stdout] 123 |         assert_eq!(Local.ymd(2022, 04, 18).and_hms(9, 0, 0), next[0].start);
[INFO] [stdout]     |                                            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `chrono::TimeZone::ymd`: use `with_ymd_and_hms()` instead
[INFO] [stdout]    --> src/smart_ess/rate.rs:124:26
[INFO] [stdout]     |
[INFO] [stdout] 124 |         assert_eq!(Local.ymd(2022, 04, 18).and_hms(11, 0, 0), next[1].start);
[INFO] [stdout]     |                          ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `chrono::Date::<Tz>::and_hms`: Use and_hms_opt() instead
[INFO] [stdout]    --> src/smart_ess/rate.rs:124:44
[INFO] [stdout]     |
[INFO] [stdout] 124 |         assert_eq!(Local.ymd(2022, 04, 18).and_hms(11, 0, 0), next[1].start);
[INFO] [stdout]     |                                            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `chrono::TimeZone::ymd`: use `with_ymd_and_hms()` instead
[INFO] [stdout]    --> src/smart_ess/rate.rs:126:38
[INFO] [stdout]     |
[INFO] [stdout] 126 |         let next = rate.schedule(Utc.ymd(2022, 04, 18).and_hms(10, 0, 0));
[INFO] [stdout]     |                                      ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `chrono::Date::<Tz>::and_hms`: Use and_hms_opt() instead
[INFO] [stdout]    --> src/smart_ess/rate.rs:126:56
[INFO] [stdout]     |
[INFO] [stdout] 126 |         let next = rate.schedule(Utc.ymd(2022, 04, 18).and_hms(10, 0, 0));
[INFO] [stdout]     |                                                        ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `chrono::TimeZone::ymd`: use `with_ymd_and_hms()` instead
[INFO] [stdout]    --> src/smart_ess/rate.rs:127:26
[INFO] [stdout]     |
[INFO] [stdout] 127 |         assert_eq!(Local.ymd(2022, 04, 18).and_hms(11, 0, 0), next[0].start);
[INFO] [stdout]     |                          ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `chrono::Date::<Tz>::and_hms`: Use and_hms_opt() instead
[INFO] [stdout]    --> src/smart_ess/rate.rs:127:44
[INFO] [stdout]     |
[INFO] [stdout] 127 |         assert_eq!(Local.ymd(2022, 04, 18).and_hms(11, 0, 0), next[0].start);
[INFO] [stdout]     |                                            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `chrono::TimeZone::ymd`: use `with_ymd_and_hms()` instead
[INFO] [stdout]    --> src/smart_ess/rate.rs:128:26
[INFO] [stdout]     |
[INFO] [stdout] 128 |         assert_eq!(Local.ymd(2022, 04, 19).and_hms(9, 0, 0), next[1].start);
[INFO] [stdout]     |                          ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `chrono::Date::<Tz>::and_hms`: Use and_hms_opt() instead
[INFO] [stdout]    --> src/smart_ess/rate.rs:128:44
[INFO] [stdout]     |
[INFO] [stdout] 128 |         assert_eq!(Local.ymd(2022, 04, 19).and_hms(9, 0, 0), next[1].start);
[INFO] [stdout]     |                                            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated associated function `chrono::TimeDelta::days`: Use `TimeDelta::try_days` instead
[INFO] [stdout]   --> src/smart_ess/window.rs:75:43
[INFO] [stdout]    |
[INFO] [stdout] 75 |         let from_sch = from.sub(Duration::days(1));
[INFO] [stdout]    |                                           ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `chrono::DateTime::<Tz>::date`: Use `date_naive()` instead
[INFO] [stdout]   --> src/smart_ess/window.rs:85:44
[INFO] [stdout]    |
[INFO] [stdout] 85 |                 let start_local = from_sch.date().with_timezone(&Local).and_hms(
[INFO] [stdout]    |                                            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `chrono::Date::<Tz>::and_hms`: Use and_hms_opt() instead
[INFO] [stdout]   --> src/smart_ess/window.rs:85:73
[INFO] [stdout]    |
[INFO] [stdout] 85 |                 let start_local = from_sch.date().with_timezone(&Local).and_hms(
[INFO] [stdout]    |                                                                         ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated associated function `chrono::TimeDelta::days`: Use `TimeDelta::try_days` instead
[INFO] [stdout]   --> src/smart_ess/window.rs:89:31
[INFO] [stdout]    |
[INFO] [stdout] 89 |                 ) + Duration::days(days as i64);
[INFO] [stdout]    |                               ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated associated function `chrono::TimeDelta::minutes`: Use `TimeDelta::try_minutes` instead
[INFO] [stdout]   --> src/smart_ess/window.rs:93:48
[INFO] [stdout]    |
[INFO] [stdout] 93 |                     end: start_utc + Duration::minutes(self.period() as i64),
[INFO] [stdout]    |                                                ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `chrono::TimeZone::ymd`: use `with_ymd_and_hms()` instead
[INFO] [stdout]    --> src/smart_ess/window.rs:214:30
[INFO] [stdout]     |
[INFO] [stdout] 214 |         let a_monday = Local.ymd(2022, 04, 18).and_hms(8, 0, 0);
[INFO] [stdout]     |                              ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `chrono::Date::<Tz>::and_hms`: Use and_hms_opt() instead
[INFO] [stdout]    --> src/smart_ess/window.rs:214:48
[INFO] [stdout]     |
[INFO] [stdout] 214 |         let a_monday = Local.ymd(2022, 04, 18).and_hms(8, 0, 0);
[INFO] [stdout]     |                                                ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `chrono::TimeZone::ymd`: use `with_ymd_and_hms()` instead
[INFO] [stdout]    --> src/smart_ess/window.rs:215:32
[INFO] [stdout]     |
[INFO] [stdout] 215 |         let a_saturday = Local.ymd(2022, 04, 16).and_hms(8, 0, 0);
[INFO] [stdout]     |                                ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `chrono::Date::<Tz>::and_hms`: Use and_hms_opt() instead
[INFO] [stdout]    --> src/smart_ess/window.rs:215:50
[INFO] [stdout]     |
[INFO] [stdout] 215 |         let a_saturday = Local.ymd(2022, 04, 16).and_hms(8, 0, 0);
[INFO] [stdout]     |                                                  ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `chrono::TimeZone::ymd`: use `with_ymd_and_hms()` instead
[INFO] [stdout]    --> src/smart_ess/window.rs:216:30
[INFO] [stdout]     |
[INFO] [stdout] 216 |         let a_friday = Local.ymd(2022, 04, 22).and_hms(8, 59, 59);
[INFO] [stdout]     |                              ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `chrono::Date::<Tz>::and_hms`: Use and_hms_opt() instead
[INFO] [stdout]    --> src/smart_ess/window.rs:216:48
[INFO] [stdout]     |
[INFO] [stdout] 216 |         let a_friday = Local.ymd(2022, 04, 22).and_hms(8, 59, 59);
[INFO] [stdout]     |                                                ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `chrono::TimeZone::ymd`: use `with_ymd_and_hms()` instead
[INFO] [stdout]    --> src/smart_ess/window.rs:217:37
[INFO] [stdout]     |
[INFO] [stdout] 217 |         let a_sunday_inside = Local.ymd(2022, 04, 24).and_hms(16, 0, 0);
[INFO] [stdout]     |                                     ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `chrono::Date::<Tz>::and_hms`: Use and_hms_opt() instead
[INFO] [stdout]    --> src/smart_ess/window.rs:217:55
[INFO] [stdout]     |
[INFO] [stdout] 217 |         let a_sunday_inside = Local.ymd(2022, 04, 24).and_hms(16, 0, 0);
[INFO] [stdout]     |                                                       ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `chrono::TimeZone::ymd`: use `with_ymd_and_hms()` instead
[INFO] [stdout]    --> src/smart_ess/window.rs:227:26
[INFO] [stdout]     |
[INFO] [stdout] 227 |         assert_eq!(Local.ymd(2022, 04, 22).and_hms(9, 0, 0), next.start);
[INFO] [stdout]     |                          ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `chrono::Date::<Tz>::and_hms`: Use and_hms_opt() instead
[INFO] [stdout]    --> src/smart_ess/window.rs:227:44
[INFO] [stdout]     |
[INFO] [stdout] 227 |         assert_eq!(Local.ymd(2022, 04, 22).and_hms(9, 0, 0), next.start);
[INFO] [stdout]     |                                            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `chrono::TimeZone::ymd`: use `with_ymd_and_hms()` instead
[INFO] [stdout]    --> src/smart_ess/window.rs:228:26
[INFO] [stdout]     |
[INFO] [stdout] 228 |         assert_eq!(Local.ymd(2022, 04, 22).and_hms(16, 59, 0), next.end);
[INFO] [stdout]     |                          ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `chrono::Date::<Tz>::and_hms`: Use and_hms_opt() instead
[INFO] [stdout]    --> src/smart_ess/window.rs:228:44
[INFO] [stdout]     |
[INFO] [stdout] 228 |         assert_eq!(Local.ymd(2022, 04, 22).and_hms(16, 59, 0), next.end);
[INFO] [stdout]     |                                            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `chrono::TimeZone::ymd`: use `with_ymd_and_hms()` instead
[INFO] [stdout]    --> src/smart_ess/window.rs:232:26
[INFO] [stdout]     |
[INFO] [stdout] 232 |         assert_eq!(Local.ymd(2022, 04, 17).and_hms(9, 0, 0), next.start);
[INFO] [stdout]     |                          ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `chrono::Date::<Tz>::and_hms`: Use and_hms_opt() instead
[INFO] [stdout]    --> src/smart_ess/window.rs:232:44
[INFO] [stdout]     |
[INFO] [stdout] 232 |         assert_eq!(Local.ymd(2022, 04, 17).and_hms(9, 0, 0), next.start);
[INFO] [stdout]     |                                            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `chrono::TimeZone::ymd`: use `with_ymd_and_hms()` instead
[INFO] [stdout]    --> src/smart_ess/window.rs:236:26
[INFO] [stdout]     |
[INFO] [stdout] 236 |         assert_eq!(Local.ymd(2022, 04, 22).and_hms(9, 0, 0), next.start, "same day before schedule");
[INFO] [stdout]     |                          ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `chrono::Date::<Tz>::and_hms`: Use and_hms_opt() instead
[INFO] [stdout]    --> src/smart_ess/window.rs:236:44
[INFO] [stdout]     |
[INFO] [stdout] 236 |         assert_eq!(Local.ymd(2022, 04, 22).and_hms(9, 0, 0), next.start, "same day before schedule");
[INFO] [stdout]     |                                            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `chrono::TimeZone::ymd`: use `with_ymd_and_hms()` instead
[INFO] [stdout]    --> src/smart_ess/window.rs:240:26
[INFO] [stdout]     |
[INFO] [stdout] 240 |         assert_eq!(Local.ymd(2022, 04, 24).and_hms(9, 0, 0), next.start);
[INFO] [stdout]     |                          ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `chrono::Date::<Tz>::and_hms`: Use and_hms_opt() instead
[INFO] [stdout]    --> src/smart_ess/window.rs:240:44
[INFO] [stdout]     |
[INFO] [stdout] 240 |         assert_eq!(Local.ymd(2022, 04, 24).and_hms(9, 0, 0), next.start);
[INFO] [stdout]     |                                            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated associated function `chrono::TimeDelta::days`: Use `TimeDelta::try_days` instead
[INFO] [stdout]   --> src/smart_ess/window.rs:75:43
[INFO] [stdout]    |
[INFO] [stdout] 75 |         let from_sch = from.sub(Duration::days(1));
[INFO] [stdout]    |                                           ^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(deprecated)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `chrono::TimeZone::ymd`: use `with_ymd_and_hms()` instead
[INFO] [stdout]    --> src/smart_ess/window.rs:287:26
[INFO] [stdout]     |
[INFO] [stdout] 287 |         let from = Local.ymd(2022, 05, 03).and_hms(2, 0, 0).with_timezone(&Utc);
[INFO] [stdout]     |                          ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `chrono::Date::<Tz>::and_hms`: Use and_hms_opt() instead
[INFO] [stdout]    --> src/smart_ess/window.rs:287:44
[INFO] [stdout]     |
[INFO] [stdout] 287 |         let from = Local.ymd(2022, 05, 03).and_hms(2, 0, 0).with_timezone(&Utc);
[INFO] [stdout]     |                                            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `chrono::TimeZone::ymd`: use `with_ymd_and_hms()` instead
[INFO] [stdout]    --> src/smart_ess/window.rs:291:38
[INFO] [stdout]     |
[INFO] [stdout] 291 |         assert_eq!(next.start, Local.ymd(2022, 05, 02).and_hms(23, 0, 0));
[INFO] [stdout]     |                                      ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `chrono::Date::<Tz>::and_hms`: Use and_hms_opt() instead
[INFO] [stdout]    --> src/smart_ess/window.rs:291:56
[INFO] [stdout]     |
[INFO] [stdout] 291 |         assert_eq!(next.start, Local.ymd(2022, 05, 02).and_hms(23, 0, 0));
[INFO] [stdout]     |                                                        ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `chrono::DateTime::<Tz>::date`: Use `date_naive()` instead
[INFO] [stdout]   --> src/smart_ess/window.rs:85:44
[INFO] [stdout]    |
[INFO] [stdout] 85 |                 let start_local = from_sch.date().with_timezone(&Local).and_hms(
[INFO] [stdout]    |                                            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `chrono::Date::<Tz>::and_hms`: Use and_hms_opt() instead
[INFO] [stdout]   --> src/smart_ess/window.rs:85:73
[INFO] [stdout]    |
[INFO] [stdout] 85 |                 let start_local = from_sch.date().with_timezone(&Local).and_hms(
[INFO] [stdout]    |                                                                         ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated associated function `chrono::TimeDelta::days`: Use `TimeDelta::try_days` instead
[INFO] [stdout]   --> src/smart_ess/window.rs:89:31
[INFO] [stdout]    |
[INFO] [stdout] 89 |                 ) + Duration::days(days as i64);
[INFO] [stdout]    |                               ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated associated function `chrono::TimeDelta::minutes`: Use `TimeDelta::try_minutes` instead
[INFO] [stdout]   --> src/smart_ess/window.rs:93:48
[INFO] [stdout]    |
[INFO] [stdout] 93 |                     end: start_utc + Duration::minutes(self.period() as i64),
[INFO] [stdout]    |                                                ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `chrono::TimeZone::ymd`: use `with_ymd_and_hms()` instead
[INFO] [stdout]    --> src/smart_ess/mod.rs:291:26
[INFO] [stdout]     |
[INFO] [stdout] 291 |         let from = Local.ymd(2022, 05, 03).and_hms(2, 0, 0).with_timezone(&Utc);
[INFO] [stdout]     |                          ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `chrono::Date::<Tz>::and_hms`: Use and_hms_opt() instead
[INFO] [stdout]    --> src/smart_ess/mod.rs:291:44
[INFO] [stdout]     |
[INFO] [stdout] 291 |         let from = Local.ymd(2022, 05, 03).and_hms(2, 0, 0).with_timezone(&Utc);
[INFO] [stdout]     |                                            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `chrono::TimeZone::ymd`: use `with_ymd_and_hms()` instead
[INFO] [stdout]    --> src/smart_ess/mod.rs:295:45
[INFO] [stdout]     |
[INFO] [stdout] 295 |         assert_eq!(next.window.start, Local.ymd(2022, 05, 02).and_hms(23, 0, 0));
[INFO] [stdout]     |                                             ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `chrono::Date::<Tz>::and_hms`: Use and_hms_opt() instead
[INFO] [stdout]    --> src/smart_ess/mod.rs:295:63
[INFO] [stdout]     |
[INFO] [stdout] 295 |         assert_eq!(next.window.start, Local.ymd(2022, 05, 02).and_hms(23, 0, 0));
[INFO] [stdout]     |                                                               ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `chrono::TimeZone::ymd`: use `with_ymd_and_hms()` instead
[INFO] [stdout]    --> src/smart_ess/mod.rs:302:14
[INFO] [stdout]     |
[INFO] [stdout] 302 |             .ymd(2022, 05, 03)
[INFO] [stdout]     |              ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `chrono::Date::<Tz>::and_hms`: Use and_hms_opt() instead
[INFO] [stdout]    --> src/smart_ess/mod.rs:303:14
[INFO] [stdout]     |
[INFO] [stdout] 303 |             .and_hms(17, 30, 0)
[INFO] [stdout]     |              ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `voltage` is never read
[INFO] [stdout]   --> src/smart_ess/mod.rs:50:9
[INFO] [stdout]    |
[INFO] [stdout] 39 | pub struct ControllerInputState {
[INFO] [stdout]    |            -------------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 50 |     pub voltage: f32,
[INFO] [stdout]    |         ^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `ControllerInputState` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout]    = note: `#[warn(dead_code)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `next_charge` is never used
[INFO] [stdout]    --> src/smart_ess/mod.rs:109:12
[INFO] [stdout]     |
[INFO] [stdout] 96  | impl Controller {
[INFO] [stdout]     | --------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 109 |     pub fn next_charge(&self, from: DateTime<Utc>) -> Result<Schedule, ControllerError> {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `0` is never read
[INFO] [stdout]   --> src/smart_ess/window.rs:54:22
[INFO] [stdout]    |
[INFO] [stdout] 54 | pub struct RateError(pub String);
[INFO] [stdout]    |            --------- ^^^^^^^^^^
[INFO] [stdout]    |            |
[INFO] [stdout]    |            field in this struct
[INFO] [stdout]    |
[INFO] [stdout]    = help: consider removing this field
[INFO] [stdout]    = note: `RateError` 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: variant `Input` is never constructed
[INFO] [stdout]   --> src/victron/mod.rs:11:5
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub enum Side {
[INFO] [stdout]    |          ---- variant in this enum
[INFO] [stdout] 11 |     Input,
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Side` 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: variants `L2` and `L3` are never constructed
[INFO] [stdout]   --> src/victron/mod.rs:18:5
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub enum Line {
[INFO] [stdout]    |          ---- variants in this enum
[INFO] [stdout] 17 |     L1 = 1,
[INFO] [stdout] 18 |     L2 = 2,
[INFO] [stdout]    |     ^^
[INFO] [stdout] 19 |     L3 = 3,
[INFO] [stdout]    |     ^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Line` 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 `voltage`, `current`, and `frequency` are never read
[INFO] [stdout]   --> src/victron/mod.rs:24:9
[INFO] [stdout]    |
[INFO] [stdout] 23 | pub struct LineDetail {
[INFO] [stdout]    |            ---------- fields in this struct
[INFO] [stdout] 24 |     pub voltage: f32,
[INFO] [stdout]    |         ^^^^^^^
[INFO] [stdout] 25 |     pub current: f32,
[INFO] [stdout]    |         ^^^^^^^
[INFO] [stdout] 26 |     pub frequency: f32,
[INFO] [stdout]    |         ^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `LineDetail` 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: methods `read_bool` and `read_i16` are never used
[INFO] [stdout]   --> src/victron/client.rs:38:18
[INFO] [stdout]    |
[INFO] [stdout] 19 | impl VictronClient {
[INFO] [stdout]    | ------------------ methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 38 |     pub async fn read_bool(&mut self, addr: u16) -> Result<bool, VictronError> {
[INFO] [stdout]    |                  ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 46 |     pub async fn read_i16(&mut self, addr: u16) -> Result<i16, VictronError> {
[INFO] [stdout]    |                  ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `Mode` is never constructed
[INFO] [stdout]   --> src/victron/ess.rs:55:5
[INFO] [stdout]    |
[INFO] [stdout] 42 | pub enum Register {
[INFO] [stdout]    |          -------- variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 55 |     Mode(Hub4Mode),
[INFO] [stdout]    |     ^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Register` 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: method `get_param` is never used
[INFO] [stdout]   --> src/victron/ess.rs:65:18
[INFO] [stdout]    |
[INFO] [stdout] 58 | impl VictronESS {
[INFO] [stdout]    | --------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 65 |     pub async fn get_param(&mut self, reg: Register) -> Result<Register, VictronError> {
[INFO] [stdout]    |                  ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `Mode` is never used
[INFO] [stdout]   --> src/victron/ve_bus.rs:11:10
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub enum Mode {
[INFO] [stdout]    |          ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `State` is never used
[INFO] [stdout]   --> src/victron/ve_bus.rs:46:10
[INFO] [stdout]    |
[INFO] [stdout] 46 | pub enum State {
[INFO] [stdout]    |          ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `0` is never read
[INFO] [stdout]    --> src/victron/ve_bus.rs:126:9
[INFO] [stdout]     |
[INFO] [stdout] 126 |     Soc(f32),
[INFO] [stdout]     |     --- ^^^
[INFO] [stdout]     |     |
[INFO] [stdout]     |     field in this variant
[INFO] [stdout]     |
[INFO] [stdout]     = note: `Register` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] help: consider changing the field to be of unit type to suppress this warning while preserving the field numbering, or remove the field
[INFO] [stdout]     |
[INFO] [stdout] 126 -     Soc(f32),
[INFO] [stdout] 126 +     Soc(()),
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple variants are never constructed
[INFO] [stdout]    --> src/victron/ve_bus.rs:118:5
[INFO] [stdout]     |
[INFO] [stdout] 107 | pub enum Register {
[INFO] [stdout]     |          -------- variants in this enum
[INFO] [stdout] ...
[INFO] [stdout] 118 |     ActiveInputCurrentLimit,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 119 |
[INFO] [stdout] 120 |     BatteryVoltage,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^
[INFO] [stdout] 121 |     BatteryCurrent,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^
[INFO] [stdout] 122 |
[INFO] [stdout] 123 |     PhaseCount,
[INFO] [stdout]     |     ^^^^^^^^^^
[INFO] [stdout] 124 |     ActiveInput,
[INFO] [stdout]     |     ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 127 |     State,
[INFO] [stdout]     |     ^^^^^
[INFO] [stdout] 128 |     Mode,
[INFO] [stdout]     |     ^^^^
[INFO] [stdout] 129 |     Alarm(Alarm),
[INFO] [stdout]     |     ^^^^^
[INFO] [stdout] 130 |
[INFO] [stdout] 131 |     ACInputIgnore(Line, bool),
[INFO] [stdout]     |     ^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `Register` 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: enum `ActiveInput` is never used
[INFO] [stdout]    --> src/victron/ve_bus.rs:135:10
[INFO] [stdout]     |
[INFO] [stdout] 135 | pub enum ActiveInput {
[INFO] [stdout]     |          ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple variants are never constructed
[INFO] [stdout]    --> src/victron/ve_bus.rs:186:5
[INFO] [stdout]     |
[INFO] [stdout] 185 | pub enum Alarm {
[INFO] [stdout]     |          ----- variants in this enum
[INFO] [stdout] 186 |     HighTemperature(AlarmState),
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 187 |     LowBattery(AlarmState),
[INFO] [stdout]     |     ^^^^^^^^^^
[INFO] [stdout] 188 |     Overload(AlarmState),
[INFO] [stdout]     |     ^^^^^^^^
[INFO] [stdout] 189 |     TemperatureSensor(AlarmState),
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 190 |     VoltageSensor(AlarmState),
[INFO] [stdout]     |     ^^^^^^^^^^^^^
[INFO] [stdout] 191 |
[INFO] [stdout] 192 |     LineTemperature(Line, AlarmState),
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 193 |     LineLowBattery(Line, AlarmState),
[INFO] [stdout]     |     ^^^^^^^^^^^^^^
[INFO] [stdout] 194 |     LineOverload(Line, AlarmState),
[INFO] [stdout]     |     ^^^^^^^^^^^^
[INFO] [stdout] 195 |     LineRipple(Line, AlarmState),
[INFO] [stdout]     |     ^^^^^^^^^^
[INFO] [stdout] 196 |
[INFO] [stdout] 197 |     PhaseRotation(AlarmState),
[INFO] [stdout]     |     ^^^^^^^^^^^^^
[INFO] [stdout] 198 |     GridLost(AlarmState),
[INFO] [stdout]     |     ^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `Alarm` 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: methods `get_state`, `get_mode`, `set_mode`, `get_active_input`, and `get_alarms` are never used
[INFO] [stdout]    --> src/victron/ve_bus.rs:247:18
[INFO] [stdout]     |
[INFO] [stdout] 201 | impl VictronBus {
[INFO] [stdout]     | --------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 247 |     pub async fn get_state(&mut self) -> Result<State, VictronError> {
[INFO] [stdout]     |                  ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 251 |     pub async fn get_mode(&mut self) -> Result<Mode, VictronError> {
[INFO] [stdout]     |                  ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 256 |     pub async fn set_mode(&mut self, mode: Mode) -> Result<(), VictronError> {
[INFO] [stdout]     |                  ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 267 |     pub async fn get_active_input(&mut self) -> Result<ActiveInput, VictronError> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 277 |     pub async fn get_alarms(&mut self) -> Result<Vec<Alarm>, VictronError> {
[INFO] [stdout]     |                  ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `VictronBattery` is never constructed
[INFO] [stdout]  --> src/victron/ve_battery.rs:5:12
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub struct VictronBattery {
[INFO] [stdout]   |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new` and `capacity` are never used
[INFO] [stdout]   --> src/victron/ve_battery.rs:10:18
[INFO] [stdout]    |
[INFO] [stdout] 9  | impl VictronBattery {
[INFO] [stdout]    | ------------------- associated items in this implementation
[INFO] [stdout] 10 |     pub async fn new(addr: SocketAddr, unit: u8) -> Result<Self, VictronError> {
[INFO] [stdout]    |                  ^^^
[INFO] [stdout] ...
[INFO] [stdout] 16 |     pub async fn capacity(&mut self) -> Result<f32, VictronError> {
[INFO] [stdout]    |                  ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `voltage` is never read
[INFO] [stdout]   --> src/smart_ess/mod.rs:50:9
[INFO] [stdout]    |
[INFO] [stdout] 39 | pub struct ControllerInputState {
[INFO] [stdout]    |            -------------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 50 |     pub voltage: f32,
[INFO] [stdout]    |         ^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `ControllerInputState` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout]    = note: `#[warn(dead_code)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `next_charge` is never used
[INFO] [stdout]    --> src/smart_ess/mod.rs:109:12
[INFO] [stdout]     |
[INFO] [stdout] 96  | impl Controller {
[INFO] [stdout]     | --------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 109 |     pub fn next_charge(&self, from: DateTime<Utc>) -> Result<Schedule, ControllerError> {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `0` is never read
[INFO] [stdout]   --> src/smart_ess/window.rs:54:22
[INFO] [stdout]    |
[INFO] [stdout] 54 | pub struct RateError(pub String);
[INFO] [stdout]    |            --------- ^^^^^^^^^^
[INFO] [stdout]    |            |
[INFO] [stdout]    |            field in this struct
[INFO] [stdout]    |
[INFO] [stdout]    = help: consider removing this field
[INFO] [stdout]    = note: `RateError` 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: variant `Input` is never constructed
[INFO] [stdout]   --> src/victron/mod.rs:11:5
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub enum Side {
[INFO] [stdout]    |          ---- variant in this enum
[INFO] [stdout] 11 |     Input,
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Side` 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: variants `L2` and `L3` are never constructed
[INFO] [stdout]   --> src/victron/mod.rs:18:5
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub enum Line {
[INFO] [stdout]    |          ---- variants in this enum
[INFO] [stdout] 17 |     L1 = 1,
[INFO] [stdout] 18 |     L2 = 2,
[INFO] [stdout]    |     ^^
[INFO] [stdout] 19 |     L3 = 3,
[INFO] [stdout]    |     ^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Line` 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 `voltage`, `current`, and `frequency` are never read
[INFO] [stdout]   --> src/victron/mod.rs:24:9
[INFO] [stdout]    |
[INFO] [stdout] 23 | pub struct LineDetail {
[INFO] [stdout]    |            ---------- fields in this struct
[INFO] [stdout] 24 |     pub voltage: f32,
[INFO] [stdout]    |         ^^^^^^^
[INFO] [stdout] 25 |     pub current: f32,
[INFO] [stdout]    |         ^^^^^^^
[INFO] [stdout] 26 |     pub frequency: f32,
[INFO] [stdout]    |         ^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `LineDetail` 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: methods `read_bool` and `read_i16` are never used
[INFO] [stdout]   --> src/victron/client.rs:38:18
[INFO] [stdout]    |
[INFO] [stdout] 19 | impl VictronClient {
[INFO] [stdout]    | ------------------ methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 38 |     pub async fn read_bool(&mut self, addr: u16) -> Result<bool, VictronError> {
[INFO] [stdout]    |                  ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 46 |     pub async fn read_i16(&mut self, addr: u16) -> Result<i16, VictronError> {
[INFO] [stdout]    |                  ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `Mode` is never constructed
[INFO] [stdout]   --> src/victron/ess.rs:55:5
[INFO] [stdout]    |
[INFO] [stdout] 42 | pub enum Register {
[INFO] [stdout]    |          -------- variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 55 |     Mode(Hub4Mode),
[INFO] [stdout]    |     ^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Register` 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: method `get_param` is never used
[INFO] [stdout]   --> src/victron/ess.rs:65:18
[INFO] [stdout]    |
[INFO] [stdout] 58 | impl VictronESS {
[INFO] [stdout]    | --------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 65 |     pub async fn get_param(&mut self, reg: Register) -> Result<Register, VictronError> {
[INFO] [stdout]    |                  ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `Mode` is never used
[INFO] [stdout]   --> src/victron/ve_bus.rs:11:10
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub enum Mode {
[INFO] [stdout]    |          ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `State` is never used
[INFO] [stdout]   --> src/victron/ve_bus.rs:46:10
[INFO] [stdout]    |
[INFO] [stdout] 46 | pub enum State {
[INFO] [stdout]    |          ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `0` is never read
[INFO] [stdout]    --> src/victron/ve_bus.rs:126:9
[INFO] [stdout]     |
[INFO] [stdout] 126 |     Soc(f32),
[INFO] [stdout]     |     --- ^^^
[INFO] [stdout]     |     |
[INFO] [stdout]     |     field in this variant
[INFO] [stdout]     |
[INFO] [stdout]     = note: `Register` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] help: consider changing the field to be of unit type to suppress this warning while preserving the field numbering, or remove the field
[INFO] [stdout]     |
[INFO] [stdout] 126 -     Soc(f32),
[INFO] [stdout] 126 +     Soc(()),
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple variants are never constructed
[INFO] [stdout]    --> src/victron/ve_bus.rs:118:5
[INFO] [stdout]     |
[INFO] [stdout] 107 | pub enum Register {
[INFO] [stdout]     |          -------- variants in this enum
[INFO] [stdout] ...
[INFO] [stdout] 118 |     ActiveInputCurrentLimit,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 119 |
[INFO] [stdout] 120 |     BatteryVoltage,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^
[INFO] [stdout] 121 |     BatteryCurrent,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^
[INFO] [stdout] 122 |
[INFO] [stdout] 123 |     PhaseCount,
[INFO] [stdout]     |     ^^^^^^^^^^
[INFO] [stdout] 124 |     ActiveInput,
[INFO] [stdout]     |     ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 127 |     State,
[INFO] [stdout]     |     ^^^^^
[INFO] [stdout] 128 |     Mode,
[INFO] [stdout]     |     ^^^^
[INFO] [stdout] 129 |     Alarm(Alarm),
[INFO] [stdout]     |     ^^^^^
[INFO] [stdout] 130 |
[INFO] [stdout] 131 |     ACInputIgnore(Line, bool),
[INFO] [stdout]     |     ^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `Register` 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: enum `ActiveInput` is never used
[INFO] [stdout]    --> src/victron/ve_bus.rs:135:10
[INFO] [stdout]     |
[INFO] [stdout] 135 | pub enum ActiveInput {
[INFO] [stdout]     |          ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple variants are never constructed
[INFO] [stdout]    --> src/victron/ve_bus.rs:186:5
[INFO] [stdout]     |
[INFO] [stdout] 185 | pub enum Alarm {
[INFO] [stdout]     |          ----- variants in this enum
[INFO] [stdout] 186 |     HighTemperature(AlarmState),
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 187 |     LowBattery(AlarmState),
[INFO] [stdout]     |     ^^^^^^^^^^
[INFO] [stdout] 188 |     Overload(AlarmState),
[INFO] [stdout]     |     ^^^^^^^^
[INFO] [stdout] 189 |     TemperatureSensor(AlarmState),
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 190 |     VoltageSensor(AlarmState),
[INFO] [stdout]     |     ^^^^^^^^^^^^^
[INFO] [stdout] 191 |
[INFO] [stdout] 192 |     LineTemperature(Line, AlarmState),
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 193 |     LineLowBattery(Line, AlarmState),
[INFO] [stdout]     |     ^^^^^^^^^^^^^^
[INFO] [stdout] 194 |     LineOverload(Line, AlarmState),
[INFO] [stdout]     |     ^^^^^^^^^^^^
[INFO] [stdout] 195 |     LineRipple(Line, AlarmState),
[INFO] [stdout]     |     ^^^^^^^^^^
[INFO] [stdout] 196 |
[INFO] [stdout] 197 |     PhaseRotation(AlarmState),
[INFO] [stdout]     |     ^^^^^^^^^^^^^
[INFO] [stdout] 198 |     GridLost(AlarmState),
[INFO] [stdout]     |     ^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `Alarm` 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: methods `get_state`, `get_mode`, `set_mode`, `get_active_input`, and `get_alarms` are never used
[INFO] [stdout]    --> src/victron/ve_bus.rs:247:18
[INFO] [stdout]     |
[INFO] [stdout] 201 | impl VictronBus {
[INFO] [stdout]     | --------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 247 |     pub async fn get_state(&mut self) -> Result<State, VictronError> {
[INFO] [stdout]     |                  ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 251 |     pub async fn get_mode(&mut self) -> Result<Mode, VictronError> {
[INFO] [stdout]     |                  ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 256 |     pub async fn set_mode(&mut self, mode: Mode) -> Result<(), VictronError> {
[INFO] [stdout]     |                  ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 267 |     pub async fn get_active_input(&mut self) -> Result<ActiveInput, VictronError> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 277 |     pub async fn get_alarms(&mut self) -> Result<Vec<Alarm>, VictronError> {
[INFO] [stdout]     |                  ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `VictronBattery` is never constructed
[INFO] [stdout]  --> src/victron/ve_battery.rs:5:12
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub struct VictronBattery {
[INFO] [stdout]   |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new` and `capacity` are never used
[INFO] [stdout]   --> src/victron/ve_battery.rs:10:18
[INFO] [stdout]    |
[INFO] [stdout] 9  | impl VictronBattery {
[INFO] [stdout]    | ------------------- associated items in this implementation
[INFO] [stdout] 10 |     pub async fn new(addr: SocketAddr, unit: u8) -> Result<Self, VictronError> {
[INFO] [stdout]    |                  ^^^
[INFO] [stdout] ...
[INFO] [stdout] 16 |     pub async fn capacity(&mut self) -> Result<f32, VictronError> {
[INFO] [stdout]    |                  ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 16.66s
[INFO] running `Command { std: "docker" "inspect" "c3b0989facbf7e3337e3602a7fd832a674cee55af69c9fc30c199a2649d701d8", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "c3b0989facbf7e3337e3602a7fd832a674cee55af69c9fc30c199a2649d701d8", kill_on_drop: false }`
[INFO] [stdout] c3b0989facbf7e3337e3602a7fd832a674cee55af69c9fc30c199a2649d701d8
