[INFO] cloning repository https://github.com/andrechen77/metime [INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/andrechen77/metime" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fandrechen77%2Fmetime", kill_on_drop: false }` [INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fandrechen77%2Fmetime'... [INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }` [INFO] [stdout] 05cc700e5bf7db2f5a8553370481f70f31c81e98 [INFO] linting andrechen77/metime against nightly for clippy-nonminimal_bool-denied [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fandrechen77%2Fmetime" "/workspace/builds/worker-5-tc1/source", kill_on_drop: false }` [INFO] [stderr] Cloning into '/workspace/builds/worker-5-tc1/source'... [INFO] [stderr] done. [INFO] started tweaking git repo https://github.com/andrechen77/metime [INFO] finished tweaking git repo https://github.com/andrechen77/metime [INFO] tweaked toml for git repo https://github.com/andrechen77/metime written to /workspace/builds/worker-5-tc1/source/Cargo.toml [INFO] validating manifest of git repo https://github.com/andrechen77/metime on toolchain nightly [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+nightly" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }` [INFO] crate git repo https://github.com/andrechen77/metime 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" "+nightly" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] [stderr] Updating crates.io index [INFO] [stderr] Downloading crates ... [INFO] [stderr] Downloaded rrule v0.12.0 [INFO] [stderr] Downloaded cc v1.0.104 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-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" "+nightly" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }` [INFO] [stdout] 53355f4ae0e1ab5fe3bb15fb67675c7612bc194d51d7a2a483c3eee0f0de58c2 [INFO] running `Command { std: "docker" "start" "-a" "53355f4ae0e1ab5fe3bb15fb67675c7612bc194d51d7a2a483c3eee0f0de58c2", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "53355f4ae0e1ab5fe3bb15fb67675c7612bc194d51d7a2a483c3eee0f0de58c2", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "53355f4ae0e1ab5fe3bb15fb67675c7612bc194d51d7a2a483c3eee0f0de58c2", kill_on_drop: false }` [INFO] [stdout] 53355f4ae0e1ab5fe3bb15fb67675c7612bc194d51d7a2a483c3eee0f0de58c2 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-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" "+nightly" "clippy" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] 630b309dfc847cf34b363dee3c3ee37d6434cc458cbe732e56ca83639e93efed [INFO] running `Command { std: "docker" "start" "-a" "630b309dfc847cf34b363dee3c3ee37d6434cc458cbe732e56ca83639e93efed", kill_on_drop: false }` [INFO] [stderr] Compiling siphasher v0.3.11 [INFO] [stderr] Compiling rand_core v0.6.4 [INFO] [stderr] Compiling regex-syntax v0.8.4 [INFO] [stderr] Compiling libc v0.2.155 [INFO] [stderr] Checking aho-corasick v1.1.3 [INFO] [stderr] Compiling quote v1.0.36 [INFO] [stderr] Compiling rand v0.8.5 [INFO] [stderr] Compiling syn v2.0.68 [INFO] [stderr] Compiling phf_shared v0.11.2 [INFO] [stderr] Compiling phf v0.11.2 [INFO] [stderr] Checking log v0.4.22 [INFO] [stderr] Compiling phf_generator v0.11.2 [INFO] [stderr] Checking getrandom v0.2.15 [INFO] [stderr] Compiling phf_codegen v0.11.2 [INFO] [stderr] Checking regex-automata v0.4.7 [INFO] [stderr] Checking rand_chacha v0.3.1 [INFO] [stderr] Compiling regex v1.10.5 [INFO] [stderr] Compiling parse-zoneinfo v0.3.1 [INFO] [stderr] Compiling thiserror-impl v1.0.61 [INFO] [stderr] Compiling tokio-macros v2.3.0 [INFO] [stderr] Checking tokio v1.38.0 [INFO] [stderr] Compiling chrono-tz-build v0.2.1 [INFO] [stderr] Checking thiserror v1.0.61 [INFO] [stderr] Compiling chrono-tz v0.8.6 [INFO] [stderr] Checking rrule v0.12.0 [INFO] [stderr] Checking metime_core v0.1.0 (/opt/rustwide/workdir/metime_core) [INFO] [stdout] warning: unused imports: `collections::HashMap` and `rc::Rc` [INFO] [stdout] --> metime_core/src/data/event.rs:1:11 [INFO] [stdout] | [INFO] [stdout] 1 | use std::{collections::HashMap, convert::identity, rc::Rc}; [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 import: `Moment` [INFO] [stdout] --> metime_core/src/data/event.rs:7:32 [INFO] [stdout] | [INFO] [stdout] 7 | time::{IcalRecurrenceDesc, Moment, Period}, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `collections::HashMap` and `rc::Rc` [INFO] [stdout] --> metime_core/src/data/event.rs:1:11 [INFO] [stdout] | [INFO] [stdout] 1 | use std::{collections::HashMap, convert::identity, rc::Rc}; [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 import: `Datelike` [INFO] [stdout] --> metime_core/src/data/event.rs:178:18 [INFO] [stdout] | [INFO] [stdout] 178 | use chrono::{Datelike, Duration, TimeZone as _}; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::data::time::Moment` [INFO] [stdout] --> metime_core/src/data/time.rs:258:13 [INFO] [stdout] | [INFO] [stdout] 258 | use crate::data::time::Moment; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded unit expression [INFO] [stdout] --> metime_core/src/sync.rs:228:9 [INFO] [stdout] | [INFO] [stdout] 228 | () [INFO] [stdout] | ^^ help: remove the final `()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_unit [INFO] [stdout] = note: `#[warn(clippy::unused_unit)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded unit expression [INFO] [stdout] --> metime_core/src/sync.rs:242:9 [INFO] [stdout] | [INFO] [stdout] 242 | () [INFO] [stdout] | ^^ help: remove the final `()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_unit [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded unit expression [INFO] [stdout] --> metime_core/src/sync.rs:282:9 [INFO] [stdout] | [INFO] [stdout] 282 | () [INFO] [stdout] | ^^ help: remove the final `()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_unit [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded unit expression [INFO] [stdout] --> metime_core/src/sync.rs:309:9 [INFO] [stdout] | [INFO] [stdout] 309 | () [INFO] [stdout] | ^^ help: remove the final `()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_unit [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded unit expression [INFO] [stdout] --> metime_core/src/sync.rs:346:9 [INFO] [stdout] | [INFO] [stdout] 346 | () [INFO] [stdout] | ^^ help: remove the final `()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_unit [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `categories` is never read [INFO] [stdout] --> metime_core/src/data/database.rs:13:5 [INFO] [stdout] | [INFO] [stdout] 11 | pub struct Database { [INFO] [stdout] | -------- field in this struct [INFO] [stdout] 12 | manifest: DatabaseManifest, [INFO] [stdout] 13 | categories: CategoriesTable, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `Database` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: type alias `DigestOutput` is never used [INFO] [stdout] --> metime_core/src/digest.rs:1:10 [INFO] [stdout] | [INFO] [stdout] 1 | pub type DigestOutput = u64; [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait `Digestible` is never used [INFO] [stdout] --> metime_core/src/digest.rs:3:11 [INFO] [stdout] | [INFO] [stdout] 3 | pub trait Digestible { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait `Steal` is never used [INFO] [stdout] --> metime_core/src/sync.rs:12:11 [INFO] [stdout] | [INFO] [stdout] 12 | pub trait Steal { [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `ClientId` is never constructed [INFO] [stdout] --> metime_core/src/sync.rs:23:12 [INFO] [stdout] | [INFO] [stdout] 23 | pub struct ClientId(u64); [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enum `FastForwardError` is never used [INFO] [stdout] --> metime_core/src/sync.rs:28:10 [INFO] [stdout] | [INFO] [stdout] 28 | pub enum FastForwardError { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `ClientSync` is never constructed [INFO] [stdout] --> metime_core/src/sync/client.rs:12:12 [INFO] [stdout] | [INFO] [stdout] 12 | pub struct ClientSync [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated function `with_server_sync` is never used [INFO] [stdout] --> metime_core/src/sync/client.rs:47:18 [INFO] [stdout] | [INFO] [stdout] 40 | / impl ClientSync [INFO] [stdout] 41 | | where [INFO] [stdout] 42 | | V: Digestible + Debug + Steal, [INFO] [stdout] 43 | | S: ServerApi, [INFO] [stdout] 44 | | S::DownloadWhole: Into, [INFO] [stdout] | |______________________________- associated function in this implementation [INFO] [stdout] ... [INFO] [stdout] 47 | pub async fn with_server_sync(server_api: S) -> Self { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `with_basis_version`, `synchronize_value`, `apply_transaction`, `get_working_copy`, and `get_unsynced_transactions` are never used [INFO] [stdout] --> metime_core/src/sync/client.rs:59:12 [INFO] [stdout] | [INFO] [stdout] 53 | / impl ClientSync [INFO] [stdout] 54 | | where [INFO] [stdout] 55 | | V: Digestible + Debug + Steal, [INFO] [stdout] 56 | | S: ServerApi, [INFO] [stdout] | |____________________- associated items in this implementation [INFO] [stdout] ... [INFO] [stdout] 59 | pub fn with_basis_version(server_api: S, basis_version: V, sequence_number: u64) -> Self { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 76 | pub async fn synchronize_value(&mut self) -> Result<(), CommunicationError> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 158 | pub fn apply_transaction(&mut self, transaction: S::Tx) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 165 | pub fn get_working_copy(&self) -> &V { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 169 | pub fn get_unsynced_transactions(&self) -> &[S::Tx] { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait `ServerApi` is never used [INFO] [stdout] --> metime_core/src/sync/client.rs:175:11 [INFO] [stdout] | [INFO] [stdout] 175 | pub trait ServerApi> { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enum `PushError` is never used [INFO] [stdout] --> metime_core/src/sync/client.rs:210:10 [INFO] [stdout] | [INFO] [stdout] 210 | pub enum PushError { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enum `CommunicationError` is never used [INFO] [stdout] --> metime_core/src/sync/client.rs:218:10 [INFO] [stdout] | [INFO] [stdout] 218 | pub enum CommunicationError { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `ClientInfo` is never constructed [INFO] [stdout] --> metime_core/src/sync/server.rs:10:12 [INFO] [stdout] | [INFO] [stdout] 10 | pub struct ClientInfo { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `ServerSync` is never constructed [INFO] [stdout] --> metime_core/src/sync/server.rs:21:12 [INFO] [stdout] | [INFO] [stdout] 21 | pub struct ServerSync> { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `new`, `get_blessed`, `register_client`, `get_client_sequence_number`, `get_transactions_since`, and `fast_forward_transactions` are never used [INFO] [stdout] --> metime_core/src/sync/server.rs:37:12 [INFO] [stdout] | [INFO] [stdout] 32 | / impl ServerSync [INFO] [stdout] 33 | | where [INFO] [stdout] 34 | | V: Digestible + Debug, [INFO] [stdout] 35 | | T: Transaction + Debug, [INFO] [stdout] | |______________________________- associated items in this implementation [INFO] [stdout] 36 | { [INFO] [stdout] 37 | pub fn new(blessed_version: V) -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 42 | pub fn get_blessed(&self) -> &V { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 46 | pub fn register_client(&mut self, client_id: ClientId) { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 50 | pub fn get_client_sequence_number(&self, client: &ClientId) -> Option { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 54 | pub fn get_transactions_since( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 67 | pub fn fast_forward_transactions( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait `Transaction` is never used [INFO] [stdout] --> metime_core/src/sync/transaction.rs:6:11 [INFO] [stdout] | [INFO] [stdout] 6 | pub trait Transaction { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: type alias `Rollback` is never used [INFO] [stdout] --> metime_core/src/sync/transaction.rs:16:10 [INFO] [stdout] | [INFO] [stdout] 16 | pub type Rollback = Box; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enum `TransactionError` is never used [INFO] [stdout] --> metime_core/src/sync/transaction.rs:20:10 [INFO] [stdout] | [INFO] [stdout] 20 | pub enum TransactionError { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `execute_all_or_roll_back` is never used [INFO] [stdout] --> metime_core/src/sync/transaction.rs:31:8 [INFO] [stdout] | [INFO] [stdout] 31 | pub fn execute_all_or_roll_back( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> metime_core/src/data/database.rs:66:16 [INFO] [stdout] | [INFO] [stdout] 66 | if !latest.is_some_and(|latest| latest < segment.start) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `latest.is_none_or(|latest| latest >= segment.start)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stdout] = note: `#[warn(clippy::nonminimal_bool)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `filter(..).next()` on an `Iterator`. This is more succinctly expressed by calling `.find(..)` instead [INFO] [stdout] --> metime_core/src/data/database.rs:135:9 [INFO] [stdout] | [INFO] [stdout] 135 | self.segments.iter().rev().filter(|&segment| segment.start <= dt).next() [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `self.segments.iter().rev().find(|&segment| segment.start <= dt)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#filter_next [INFO] [stdout] = note: `#[warn(clippy::filter_next)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `Iterator::last` on a `DoubleEndedIterator`; this will needlessly iterate the entire iterator [INFO] [stdout] --> metime_core/src/data/database.rs:154:27 [INFO] [stdout] | [INFO] [stdout] 154 | let first_index = iter [INFO] [stdout] | ___________________________^ [INFO] [stdout] 155 | | .filter_map(|(index, segment)| if segment.start <= start { Some(index) } else { None }) [INFO] [stdout] 156 | | .last() [INFO] [stdout] | |___________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#double_ended_iterator_last [INFO] [stdout] = note: `#[warn(clippy::double_ended_iterator_last)]` on by default [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 156 - .last() [INFO] [stdout] 156 + .next_back() [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of `filter_map` with an identity function [INFO] [stdout] --> metime_core/src/data/event.rs:160:14 [INFO] [stdout] | [INFO] [stdout] 160 | .filter_map(identity); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: try: `flatten()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#filter_map_identity [INFO] [stdout] = note: `#[warn(clippy::filter_map_identity)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> metime_core/src/data/event.rs:147:21 [INFO] [stdout] | [INFO] [stdout] 147 | return Some(Some(event_instance)); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] = note: `#[warn(clippy::needless_return)]` on by default [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 147 - return Some(Some(event_instance)); [INFO] [stdout] 147 + Some(Some(event_instance)) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> metime_core/src/data/event.rs:152:21 [INFO] [stdout] | [INFO] [stdout] 152 | return Some(None); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 152 - return Some(None); [INFO] [stdout] 152 + Some(None) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you don't need to add `&` to all patterns [INFO] [stdout] --> metime_core/src/data/time.rs:47:9 [INFO] [stdout] | [INFO] [stdout] 47 | / match self { [INFO] [stdout] 48 | | &Period::DateTimeInterval { start, end } => (start, end), [INFO] [stdout] 49 | | &Period::DateTime(dt) => (dt, dt), [INFO] [stdout] 50 | | &Period::DateInterval { start, additional } => { [INFO] [stdout] ... | [INFO] [stdout] 61 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stdout] = note: `#[warn(clippy::match_ref_pats)]` on by default [INFO] [stdout] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stdout] | [INFO] [stdout] 47 ~ match *self { [INFO] [stdout] 48 ~ Period::DateTimeInterval { start, end } => (start, end), [INFO] [stdout] 49 ~ Period::DateTime(dt) => (dt, dt), [INFO] [stdout] 50 ~ Period::DateInterval { start, additional } => { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the following explicit lifetimes could be elided: 'a [INFO] [stdout] --> metime_core/src/data/time.rs:226:10 [INFO] [stdout] | [INFO] [stdout] 226 | impl<'a> IntoIterator for &'a IcalRecurrenceDesc { [INFO] [stdout] | ^^ ^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stdout] = note: `#[warn(clippy::needless_lifetimes)]` on by default [INFO] [stdout] help: elide the lifetimes [INFO] [stdout] | [INFO] [stdout] 226 - impl<'a> IntoIterator for &'a IcalRecurrenceDesc { [INFO] [stdout] 226 + impl IntoIterator for &IcalRecurrenceDesc { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `categories` is never read [INFO] [stdout] --> metime_core/src/data/database.rs:13:5 [INFO] [stdout] | [INFO] [stdout] 11 | pub struct Database { [INFO] [stdout] | -------- field in this struct [INFO] [stdout] 12 | manifest: DatabaseManifest, [INFO] [stdout] 13 | categories: CategoriesTable, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `Database` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `last_digest_confirmed` is never read [INFO] [stdout] --> metime_core/src/sync/server.rs:18:5 [INFO] [stdout] | [INFO] [stdout] 10 | pub struct ClientInfo { [INFO] [stdout] | ---------- field in this struct [INFO] [stdout] ... [INFO] [stdout] 18 | last_digest_confirmed: Option, // TODO keep this updated as the client makes requests [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variant `Pop` is never constructed [INFO] [stdout] --> metime_core/src/sync.rs:55:9 [INFO] [stdout] | [INFO] [stdout] 53 | enum VecOperation { [INFO] [stdout] | ------------ variant in this enum [INFO] [stdout] 54 | Push(u32), [INFO] [stdout] 55 | Pop(u32), // expects the given value to be popped [INFO] [stdout] | ^^^ [INFO] [stdout] | [INFO] [stdout] = note: `VecOperation` 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: this boolean expression can be simplified [INFO] [stdout] --> metime_core/src/data/database.rs:66:16 [INFO] [stdout] | [INFO] [stdout] 66 | if !latest.is_some_and(|latest| latest < segment.start) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `latest.is_none_or(|latest| latest >= segment.start)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stdout] = note: `#[warn(clippy::nonminimal_bool)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `filter(..).next()` on an `Iterator`. This is more succinctly expressed by calling `.find(..)` instead [INFO] [stdout] --> metime_core/src/data/database.rs:135:9 [INFO] [stdout] | [INFO] [stdout] 135 | self.segments.iter().rev().filter(|&segment| segment.start <= dt).next() [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `self.segments.iter().rev().find(|&segment| segment.start <= dt)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#filter_next [INFO] [stdout] = note: `#[warn(clippy::filter_next)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `Iterator::last` on a `DoubleEndedIterator`; this will needlessly iterate the entire iterator [INFO] [stdout] --> metime_core/src/data/database.rs:154:27 [INFO] [stdout] | [INFO] [stdout] 154 | let first_index = iter [INFO] [stdout] | ___________________________^ [INFO] [stdout] 155 | | .filter_map(|(index, segment)| if segment.start <= start { Some(index) } else { None }) [INFO] [stdout] 156 | | .last() [INFO] [stdout] | |___________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#double_ended_iterator_last [INFO] [stdout] = note: `#[warn(clippy::double_ended_iterator_last)]` on by default [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 156 - .last() [INFO] [stdout] 156 + .next_back() [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of `filter_map` with an identity function [INFO] [stdout] --> metime_core/src/data/event.rs:160:14 [INFO] [stdout] | [INFO] [stdout] 160 | .filter_map(identity); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: try: `flatten()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#filter_map_identity [INFO] [stdout] = note: `#[warn(clippy::filter_map_identity)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> metime_core/src/data/event.rs:147:21 [INFO] [stdout] | [INFO] [stdout] 147 | return Some(Some(event_instance)); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] = note: `#[warn(clippy::needless_return)]` on by default [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 147 - return Some(Some(event_instance)); [INFO] [stdout] 147 + Some(Some(event_instance)) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> metime_core/src/data/event.rs:152:21 [INFO] [stdout] | [INFO] [stdout] 152 | return Some(None); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 152 - return Some(None); [INFO] [stdout] 152 + Some(None) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you don't need to add `&` to all patterns [INFO] [stdout] --> metime_core/src/data/time.rs:47:9 [INFO] [stdout] | [INFO] [stdout] 47 | / match self { [INFO] [stdout] 48 | | &Period::DateTimeInterval { start, end } => (start, end), [INFO] [stdout] 49 | | &Period::DateTime(dt) => (dt, dt), [INFO] [stdout] 50 | | &Period::DateInterval { start, additional } => { [INFO] [stdout] ... | [INFO] [stdout] 61 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stdout] = note: `#[warn(clippy::match_ref_pats)]` on by default [INFO] [stdout] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stdout] | [INFO] [stdout] 47 ~ match *self { [INFO] [stdout] 48 ~ Period::DateTimeInterval { start, end } => (start, end), [INFO] [stdout] 49 ~ Period::DateTime(dt) => (dt, dt), [INFO] [stdout] 50 ~ Period::DateInterval { start, additional } => { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the following explicit lifetimes could be elided: 'a [INFO] [stdout] --> metime_core/src/data/time.rs:226:10 [INFO] [stdout] | [INFO] [stdout] 226 | impl<'a> IntoIterator for &'a IcalRecurrenceDesc { [INFO] [stdout] | ^^ ^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stdout] = note: `#[warn(clippy::needless_lifetimes)]` on by default [INFO] [stdout] help: elide the lifetimes [INFO] [stdout] | [INFO] [stdout] 226 - impl<'a> IntoIterator for &'a IcalRecurrenceDesc { [INFO] [stdout] 226 + impl IntoIterator for &IcalRecurrenceDesc { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you don't need to add `&` to all patterns [INFO] [stdout] --> metime_core/src/sync.rs:63:13 [INFO] [stdout] | [INFO] [stdout] 63 | / match self { [INFO] [stdout] 64 | | &VecOperation::Push(value) => { [INFO] [stdout] 65 | | vec.push(value); [INFO] [stdout] 66 | | Ok(Box::new(move |vec| { [INFO] [stdout] ... | [INFO] [stdout] 83 | | } [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stdout] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stdout] | [INFO] [stdout] 63 ~ match *self { [INFO] [stdout] 64 ~ VecOperation::Push(value) => { [INFO] [stdout] 65 | vec.push(value); [INFO] [stdout] ... [INFO] [stdout] 70 | } [INFO] [stdout] 71 ~ VecOperation::Pop(expected) => { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `ClientId` which implements the `Copy` trait [INFO] [stdout] --> metime_core/src/sync.rs:115:54 [INFO] [stdout] | [INFO] [stdout] 115 | self.server.borrow_mut().register_client(client_id.clone()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `client_id` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] = note: `#[warn(clippy::clone_on_copy)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref on an immutable reference [INFO] [stdout] --> metime_core/src/sync.rs:116:47 [INFO] [stdout] | [INFO] [stdout] 116 | ServerHandle { client_id, server: &*self } [INFO] [stdout] | ^^^^^^ help: if you would like to reborrow, try removing `&*`: `self` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#borrow_deref_ref [INFO] [stdout] = note: `#[warn(clippy::borrow_deref_ref)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> metime_core/src/sync.rs:119:24 [INFO] [stdout] | [INFO] [stdout] 119 | fn get_blessed(&self) -> Ref> { [INFO] [stdout] | ^^^^^ ^^^^^^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | | [INFO] [stdout] | the lifetime is elided here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] = note: `#[warn(mismatched_lifetime_syntaxes)]` on by default [INFO] [stdout] help: use `'_` for type paths [INFO] [stdout] | [INFO] [stdout] 119 | fn get_blessed(&self) -> Ref<'_, Vec> { [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 26.67s [INFO] running `Command { std: "docker" "inspect" "630b309dfc847cf34b363dee3c3ee37d6434cc458cbe732e56ca83639e93efed", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "630b309dfc847cf34b363dee3c3ee37d6434cc458cbe732e56ca83639e93efed", kill_on_drop: false }` [INFO] [stdout] 630b309dfc847cf34b363dee3c3ee37d6434cc458cbe732e56ca83639e93efed