[INFO] fetching crate voidmap 1.1.5... [INFO] linting voidmap-1.1.5 against nightly for clippy-nonminimal_bool-denied [INFO] extracting crate voidmap 1.1.5 into /workspace/builds/worker-1-tc1/source [INFO] started tweaking crates.io crate voidmap 1.1.5 [INFO] removed 0 missing tests [INFO] finished tweaking crates.io crate voidmap 1.1.5 [INFO] tweaked toml for crates.io crate voidmap 1.1.5 written to /workspace/builds/worker-1-tc1/source/Cargo.toml [INFO] validating manifest of crates.io crate voidmap 1.1.5 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] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+nightly" "generate-lockfile" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] [stderr] Updating crates.io index [INFO] [stderr] Locking 73 packages to latest compatible versions [INFO] [stderr] Adding dirs v1.0.5 (available: v6.0.0) [INFO] [stderr] Adding hyper v0.10.16 (available: v1.8.1) [INFO] [stderr] Adding lazy_static v0.2.11 (available: v1.5.0) [INFO] [stderr] Adding log v0.3.9 (available: v0.4.29) [INFO] [stderr] Adding protobuf v1.7.5 (available: v3.7.2) [INFO] [stderr] Adding quickcheck v0.3.2 (available: v1.1.0) [INFO] [stderr] Adding rand v0.3.23 (available: v0.10.0) [INFO] [stderr] Adding regex v0.1.80 (available: v1.12.3) [INFO] [stderr] Adding termion v1.5.6 (available: v4.0.6) [INFO] [stderr] Adding time v0.1.45 (available: v0.3.47) [INFO] [stderr] Adding unicode-segmentation v0.1.3 (available: v1.12.0) [INFO] [stderr] Adding wasi v0.10.0+wasi-snapshot-preview1 (available: v0.10.2+wasi-snapshot-preview1) [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] warning: `package.edition` is unspecified, defaulting to `2015` while the latest is `2024` [INFO] [stderr] Downloading crates ... [INFO] [stderr] Downloaded quickcheck v0.3.2 [INFO] [stderr] Downloaded unicode-segmentation v0.1.3 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-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] 08e8ce576f3882329bf22ad1919009bc4a3d095c0a5eeccc57db8a1f7fe7ff96 [INFO] running `Command { std: "docker" "start" "-a" "08e8ce576f3882329bf22ad1919009bc4a3d095c0a5eeccc57db8a1f7fe7ff96", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "08e8ce576f3882329bf22ad1919009bc4a3d095c0a5eeccc57db8a1f7fe7ff96", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "08e8ce576f3882329bf22ad1919009bc4a3d095c0a5eeccc57db8a1f7fe7ff96", kill_on_drop: false }` [INFO] [stdout] 08e8ce576f3882329bf22ad1919009bc4a3d095c0a5eeccc57db8a1f7fe7ff96 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-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] 0de9b30edddd85c29a870930319710713dbc379b28fdfbf5094c4ec87c3f4173 [INFO] running `Command { std: "docker" "start" "-a" "0de9b30edddd85c29a870930319710713dbc379b28fdfbf5094c4ec87c3f4173", kill_on_drop: false }` [INFO] [stderr] warning: `package.edition` is unspecified, defaulting to `2015` while the latest is `2024` [INFO] [stderr] Compiling winapi-build v0.1.1 [INFO] [stderr] Checking winapi v0.2.8 [INFO] [stderr] Compiling version_check v0.1.5 [INFO] [stderr] Checking regex-syntax v0.3.9 [INFO] [stderr] Checking utf8-ranges v0.1.3 [INFO] [stderr] Checking matches v0.1.10 [INFO] [stderr] Checking percent-encoding v1.0.1 [INFO] [stderr] Compiling protobuf v1.7.5 [INFO] [stderr] Checking safemem v0.3.3 [INFO] [stderr] Checking language-tags v0.2.2 [INFO] [stderr] Checking log v0.3.9 [INFO] [stderr] Checking typeable v0.1.2 [INFO] [stderr] Checking traitobject v0.1.1 [INFO] [stderr] Checking memchr v0.1.11 [INFO] [stderr] Checking rand v0.3.23 [INFO] [stderr] Checking time v0.1.45 [INFO] [stderr] Checking num_cpus v1.17.0 [INFO] [stderr] Checking idna v0.1.5 [INFO] [stderr] Checking numtoa v0.1.0 [INFO] [stderr] Checking dirs v1.0.5 [INFO] [stderr] Checking base64 v0.9.3 [INFO] [stderr] Checking fs2 v0.4.3 [INFO] [stderr] Checking aho-corasick v0.5.3 [INFO] [stderr] Checking unicode-segmentation v0.1.3 [INFO] [stderr] Compiling kernel32-sys v0.2.2 [INFO] [stderr] Checking mime v0.2.6 [INFO] [stderr] Compiling unicase v1.4.2 [INFO] [stderr] Checking termion v1.5.6 [INFO] [stderr] Checking thread-id v2.0.0 [INFO] [stderr] Checking thread_local v0.2.7 [INFO] [stderr] Checking url v1.7.2 [INFO] [stderr] Checking regex v0.1.80 [INFO] [stderr] Checking hyper v0.10.16 [INFO] [stderr] Checking env_logger v0.3.5 [INFO] [stderr] Checking quickcheck v0.3.2 [INFO] [stderr] Checking voidmap v1.1.5 (/opt/rustwide/workdir) [INFO] [stdout] warning: lint `box_pointers` has been removed: it does not detect other kinds of allocations, and existed only for historical reasons [INFO] [stdout] --> src/pb/data_model.rs:10:10 [INFO] [stdout] | [INFO] [stdout] 10 | #![allow(box_pointers)] [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(renamed_and_removed_lints)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: lint `box_pointers` has been removed: it does not detect other kinds of allocations, and existed only for historical reasons [INFO] [stdout] --> src/pb/data_model.rs:10:10 [INFO] [stdout] | [INFO] [stdout] 10 | #![allow(box_pointers)] [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(renamed_and_removed_lints)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: statics have by default a `'static` lifetime [INFO] [stdout] --> src/pb/data_model.rs:2217:37 [INFO] [stdout] | [INFO] [stdout] 2217 | static file_descriptor_proto_data: &'static [u8] = &[ [INFO] [stdout] | -^^^^^^^----- help: consider removing `'static`: `&[u8]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_static_lifetimes [INFO] [stdout] = note: `#[warn(clippy::redundant_static_lifetimes)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: statics have by default a `'static` lifetime [INFO] [stdout] --> src/pb/data_model.rs:2217:37 [INFO] [stdout] | [INFO] [stdout] 2217 | static file_descriptor_proto_data: &'static [u8] = &[ [INFO] [stdout] | -^^^^^^^----- help: consider removing `'static`: `&[u8]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_static_lifetimes [INFO] [stdout] = note: `#[warn(clippy::redundant_static_lifetimes)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated constant `std::sync::ONCE_INIT`: the `Once::new()` function is now preferred [INFO] [stdout] --> src/logging.rs:52:1 [INFO] [stdout] | [INFO] [stdout] 52 | / lazy_static! { [INFO] [stdout] 53 | | static ref LOGS: RwLock> = RwLock::new(vec![]); [INFO] [stdout] 54 | | } [INFO] [stdout] | |_^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(deprecated)]` on by default [INFO] [stdout] = note: this warning originates in the macro `__lazy_static_create` which comes from the expansion of the macro `lazy_static` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated constant `std::sync::ONCE_INIT`: the `Once::new()` function is now preferred [INFO] [stdout] --> src/screen.rs:346:9 [INFO] [stdout] | [INFO] [stdout] 346 | / lazy_static! { [INFO] [stdout] 347 | | static ref RE: Regex = Regex::new(r"#prio=(\d+)").unwrap(); [INFO] [stdout] 348 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = note: this warning originates in the macro `__lazy_static_create` which comes from the expansion of the macro `lazy_static` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated constant `std::sync::ONCE_INIT`: the `Once::new()` function is now preferred [INFO] [stdout] --> src/screen.rs:731:9 [INFO] [stdout] | [INFO] [stdout] 731 | / lazy_static! { [INFO] [stdout] 732 | | static ref RE_DATE: Regex = Regex::new(r"\[(\S+)\]").unwrap(); [INFO] [stdout] 733 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = note: this warning originates in the macro `__lazy_static_create` which comes from the expansion of the macro `lazy_static` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated constant `std::sync::ONCE_INIT`: the `Once::new()` function is now preferred [INFO] [stdout] --> src/screen.rs:2126:9 [INFO] [stdout] | [INFO] [stdout] 2126 | / lazy_static! { [INFO] [stdout] 2127 | | //// general subtree population and modification [INFO] [stdout] 2128 | | // limit shows the top N results. [INFO] [stdout] 2129 | | static ref RE_LIMIT: Regex = Regex::new(r"#limit=(\d+)").unwrap(); [INFO] [stdout] ... | [INFO] [stdout] 2143 | | static ref RE_N: Regex = Regex::new(r"#n=(\d+)").unwrap(); [INFO] [stdout] 2144 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = note: this warning originates in the macro `__lazy_static_create` which comes from the expansion of the macro `lazy_static` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated constant `std::sync::ONCE_INIT`: the `Once::new()` function is now preferred [INFO] [stdout] --> src/screen.rs:2126:9 [INFO] [stdout] | [INFO] [stdout] 2126 | / lazy_static! { [INFO] [stdout] 2127 | | //// general subtree population and modification [INFO] [stdout] 2128 | | // limit shows the top N results. [INFO] [stdout] 2129 | | static ref RE_LIMIT: Regex = Regex::new(r"#limit=(\d+)").unwrap(); [INFO] [stdout] ... | [INFO] [stdout] 2143 | | static ref RE_N: Regex = Regex::new(r"#n=(\d+)").unwrap(); [INFO] [stdout] 2144 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = note: this warning originates in the macro `__lazy_static_create` which comes from the expansion of the macro `lazy_static` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated constant `std::sync::ONCE_INIT`: the `Once::new()` function is now preferred [INFO] [stdout] --> src/screen.rs:2126:9 [INFO] [stdout] | [INFO] [stdout] 2126 | / lazy_static! { [INFO] [stdout] 2127 | | //// general subtree population and modification [INFO] [stdout] 2128 | | // limit shows the top N results. [INFO] [stdout] 2129 | | static ref RE_LIMIT: Regex = Regex::new(r"#limit=(\d+)").unwrap(); [INFO] [stdout] ... | [INFO] [stdout] 2143 | | static ref RE_N: Regex = Regex::new(r"#n=(\d+)").unwrap(); [INFO] [stdout] 2144 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = note: this warning originates in the macro `__lazy_static_create` which comes from the expansion of the macro `lazy_static` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated constant `std::sync::ONCE_INIT`: the `Once::new()` function is now preferred [INFO] [stdout] --> src/screen.rs:2126:9 [INFO] [stdout] | [INFO] [stdout] 2126 | / lazy_static! { [INFO] [stdout] 2127 | | //// general subtree population and modification [INFO] [stdout] 2128 | | // limit shows the top N results. [INFO] [stdout] 2129 | | static ref RE_LIMIT: Regex = Regex::new(r"#limit=(\d+)").unwrap(); [INFO] [stdout] ... | [INFO] [stdout] 2143 | | static ref RE_N: Regex = Regex::new(r"#n=(\d+)").unwrap(); [INFO] [stdout] 2144 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = note: this warning originates in the macro `__lazy_static_create` which comes from the expansion of the macro `lazy_static` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated constant `std::sync::ONCE_INIT`: the `Once::new()` function is now preferred [INFO] [stdout] --> src/screen.rs:2126:9 [INFO] [stdout] | [INFO] [stdout] 2126 | / lazy_static! { [INFO] [stdout] 2127 | | //// general subtree population and modification [INFO] [stdout] 2128 | | // limit shows the top N results. [INFO] [stdout] 2129 | | static ref RE_LIMIT: Regex = Regex::new(r"#limit=(\d+)").unwrap(); [INFO] [stdout] ... | [INFO] [stdout] 2143 | | static ref RE_N: Regex = Regex::new(r"#n=(\d+)").unwrap(); [INFO] [stdout] 2144 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = note: this warning originates in the macro `__lazy_static_create` which comes from the expansion of the macro `lazy_static` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated constant `std::sync::ONCE_INIT`: the `Once::new()` function is now preferred [INFO] [stdout] --> src/screen.rs:2126:9 [INFO] [stdout] | [INFO] [stdout] 2126 | / lazy_static! { [INFO] [stdout] 2127 | | //// general subtree population and modification [INFO] [stdout] 2128 | | // limit shows the top N results. [INFO] [stdout] 2129 | | static ref RE_LIMIT: Regex = Regex::new(r"#limit=(\d+)").unwrap(); [INFO] [stdout] ... | [INFO] [stdout] 2143 | | static ref RE_N: Regex = Regex::new(r"#n=(\d+)").unwrap(); [INFO] [stdout] 2144 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = note: this warning originates in the macro `__lazy_static_create` which comes from the expansion of the macro `lazy_static` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated constant `std::sync::ONCE_INIT`: the `Once::new()` function is now preferred [INFO] [stdout] --> src/screen.rs:2126:9 [INFO] [stdout] | [INFO] [stdout] 2126 | / lazy_static! { [INFO] [stdout] 2127 | | //// general subtree population and modification [INFO] [stdout] 2128 | | // limit shows the top N results. [INFO] [stdout] 2129 | | static ref RE_LIMIT: Regex = Regex::new(r"#limit=(\d+)").unwrap(); [INFO] [stdout] ... | [INFO] [stdout] 2143 | | static ref RE_N: Regex = Regex::new(r"#n=(\d+)").unwrap(); [INFO] [stdout] 2144 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = note: this warning originates in the macro `__lazy_static_create` which comes from the expansion of the macro `lazy_static` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated constant `std::sync::ONCE_INIT`: the `Once::new()` function is now preferred [INFO] [stdout] --> src/screen.rs:2126:9 [INFO] [stdout] | [INFO] [stdout] 2126 | / lazy_static! { [INFO] [stdout] 2127 | | //// general subtree population and modification [INFO] [stdout] 2128 | | // limit shows the top N results. [INFO] [stdout] 2129 | | static ref RE_LIMIT: Regex = Regex::new(r"#limit=(\d+)").unwrap(); [INFO] [stdout] ... | [INFO] [stdout] 2143 | | static ref RE_N: Regex = Regex::new(r"#n=(\d+)").unwrap(); [INFO] [stdout] 2144 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = note: this warning originates in the macro `__lazy_static_create` which comes from the expansion of the macro `lazy_static` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated constant `std::sync::ONCE_INIT`: the `Once::new()` function is now preferred [INFO] [stdout] --> src/screen.rs:2126:9 [INFO] [stdout] | [INFO] [stdout] 2126 | / lazy_static! { [INFO] [stdout] 2127 | | //// general subtree population and modification [INFO] [stdout] 2128 | | // limit shows the top N results. [INFO] [stdout] 2129 | | static ref RE_LIMIT: Regex = Regex::new(r"#limit=(\d+)").unwrap(); [INFO] [stdout] ... | [INFO] [stdout] 2143 | | static ref RE_N: Regex = Regex::new(r"#n=(\d+)").unwrap(); [INFO] [stdout] 2144 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = note: this warning originates in the macro `__lazy_static_create` which comes from the expansion of the macro `lazy_static` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated constant `std::sync::ONCE_INIT`: the `Once::new()` function is now preferred [INFO] [stdout] --> src/meta.rs:10:1 [INFO] [stdout] | [INFO] [stdout] 10 | / lazy_static! { [INFO] [stdout] 11 | | static ref LOC: (f32, f32) = gps_query().unwrap_or_else(|e| { [INFO] [stdout] 12 | | error!("failed to get gps: {:?}", e); [INFO] [stdout] 13 | | (0.0, 0.0) [INFO] [stdout] 14 | | }); [INFO] [stdout] 15 | | } [INFO] [stdout] | |_^ [INFO] [stdout] | [INFO] [stdout] = note: this warning originates in the macro `__lazy_static_create` which comes from the expansion of the macro `lazy_static` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated constant `std::sync::ONCE_INIT`: the `Once::new()` function is now preferred [INFO] [stdout] --> src/config.rs:92:5 [INFO] [stdout] | [INFO] [stdout] 92 | / lazy_static! { [INFO] [stdout] 93 | | static ref RE: Regex = Regex::new(r"C-(.)").unwrap(); [INFO] [stdout] 94 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = note: this warning originates in the macro `__lazy_static_create` which comes from the expansion of the macro `lazy_static` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated constant `std::sync::ONCE_INIT`: the `Once::new()` function is now preferred [INFO] [stdout] --> src/tagdb.rs:23:9 [INFO] [stdout] | [INFO] [stdout] 23 | / lazy_static! { [INFO] [stdout] 24 | | static ref RE_TAG_KEY: Regex = Regex::new(r"#([^\s=]+)*").unwrap(); [INFO] [stdout] 25 | | static ref RE_TAG_KEY_VALUE: Regex = Regex::new(r"#(\S+)*").unwrap(); [INFO] [stdout] 26 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = note: this warning originates in the macro `__lazy_static_create` which comes from the expansion of the macro `lazy_static` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated constant `std::sync::ONCE_INIT`: the `Once::new()` function is now preferred [INFO] [stdout] --> src/tagdb.rs:23:9 [INFO] [stdout] | [INFO] [stdout] 23 | / lazy_static! { [INFO] [stdout] 24 | | static ref RE_TAG_KEY: Regex = Regex::new(r"#([^\s=]+)*").unwrap(); [INFO] [stdout] 25 | | static ref RE_TAG_KEY_VALUE: Regex = Regex::new(r"#(\S+)*").unwrap(); [INFO] [stdout] 26 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = note: this warning originates in the macro `__lazy_static_create` which comes from the expansion of the macro `lazy_static` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated constant `std::sync::ONCE_INIT`: the `Once::new()` function is now preferred [INFO] [stdout] --> src/dateparse.rs:6:5 [INFO] [stdout] | [INFO] [stdout] 6 | / lazy_static! { [INFO] [stdout] 7 | | static ref YEARS: Regex = Regex::new(r"(?P\d+)y").unwrap(); [INFO] [stdout] 8 | | static ref MONTHS: Regex = Regex::new(r"(?P\d+)m").unwrap(); [INFO] [stdout] 9 | | static ref WEEKS: Regex = Regex::new(r"(?P\d+)w").unwrap(); [INFO] [stdout] 10 | | static ref DAYS: Regex = Regex::new(r"(?P\d+)d").unwrap(); [INFO] [stdout] 11 | | static ref HOURS: Regex = Regex::new(r"(?P\d+)h").unwrap(); [INFO] [stdout] 12 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = note: this warning originates in the macro `__lazy_static_create` which comes from the expansion of the macro `lazy_static` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated constant `std::sync::ONCE_INIT`: the `Once::new()` function is now preferred [INFO] [stdout] --> src/dateparse.rs:6:5 [INFO] [stdout] | [INFO] [stdout] 6 | / lazy_static! { [INFO] [stdout] 7 | | static ref YEARS: Regex = Regex::new(r"(?P\d+)y").unwrap(); [INFO] [stdout] 8 | | static ref MONTHS: Regex = Regex::new(r"(?P\d+)m").unwrap(); [INFO] [stdout] 9 | | static ref WEEKS: Regex = Regex::new(r"(?P\d+)w").unwrap(); [INFO] [stdout] 10 | | static ref DAYS: Regex = Regex::new(r"(?P\d+)d").unwrap(); [INFO] [stdout] 11 | | static ref HOURS: Regex = Regex::new(r"(?P\d+)h").unwrap(); [INFO] [stdout] 12 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = note: this warning originates in the macro `__lazy_static_create` which comes from the expansion of the macro `lazy_static` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated constant `std::sync::ONCE_INIT`: the `Once::new()` function is now preferred [INFO] [stdout] --> src/dateparse.rs:6:5 [INFO] [stdout] | [INFO] [stdout] 6 | / lazy_static! { [INFO] [stdout] 7 | | static ref YEARS: Regex = Regex::new(r"(?P\d+)y").unwrap(); [INFO] [stdout] 8 | | static ref MONTHS: Regex = Regex::new(r"(?P\d+)m").unwrap(); [INFO] [stdout] 9 | | static ref WEEKS: Regex = Regex::new(r"(?P\d+)w").unwrap(); [INFO] [stdout] 10 | | static ref DAYS: Regex = Regex::new(r"(?P\d+)d").unwrap(); [INFO] [stdout] 11 | | static ref HOURS: Regex = Regex::new(r"(?P\d+)h").unwrap(); [INFO] [stdout] 12 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = note: this warning originates in the macro `__lazy_static_create` which comes from the expansion of the macro `lazy_static` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated constant `std::sync::ONCE_INIT`: the `Once::new()` function is now preferred [INFO] [stdout] --> src/dateparse.rs:6:5 [INFO] [stdout] | [INFO] [stdout] 6 | / lazy_static! { [INFO] [stdout] 7 | | static ref YEARS: Regex = Regex::new(r"(?P\d+)y").unwrap(); [INFO] [stdout] 8 | | static ref MONTHS: Regex = Regex::new(r"(?P\d+)m").unwrap(); [INFO] [stdout] 9 | | static ref WEEKS: Regex = Regex::new(r"(?P\d+)w").unwrap(); [INFO] [stdout] 10 | | static ref DAYS: Regex = Regex::new(r"(?P\d+)d").unwrap(); [INFO] [stdout] 11 | | static ref HOURS: Regex = Regex::new(r"(?P\d+)h").unwrap(); [INFO] [stdout] 12 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = note: this warning originates in the macro `__lazy_static_create` which comes from the expansion of the macro `lazy_static` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated constant `std::sync::ONCE_INIT`: the `Once::new()` function is now preferred [INFO] [stdout] --> src/dateparse.rs:6:5 [INFO] [stdout] | [INFO] [stdout] 6 | / lazy_static! { [INFO] [stdout] 7 | | static ref YEARS: Regex = Regex::new(r"(?P\d+)y").unwrap(); [INFO] [stdout] 8 | | static ref MONTHS: Regex = Regex::new(r"(?P\d+)m").unwrap(); [INFO] [stdout] 9 | | static ref WEEKS: Regex = Regex::new(r"(?P\d+)w").unwrap(); [INFO] [stdout] 10 | | static ref DAYS: Regex = Regex::new(r"(?P\d+)d").unwrap(); [INFO] [stdout] 11 | | static ref HOURS: Regex = Regex::new(r"(?P\d+)h").unwrap(); [INFO] [stdout] 12 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = note: this warning originates in the macro `__lazy_static_create` which comes from the expansion of the macro `lazy_static` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated constant `std::sync::ONCE_INIT`: the `Once::new()` function is now preferred [INFO] [stdout] --> src/logging.rs:52:1 [INFO] [stdout] | [INFO] [stdout] 52 | / lazy_static! { [INFO] [stdout] 53 | | static ref LOGS: RwLock> = RwLock::new(vec![]); [INFO] [stdout] 54 | | } [INFO] [stdout] | |_^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(deprecated)]` on by default [INFO] [stdout] = note: this warning originates in the macro `__lazy_static_create` which comes from the expansion of the macro `lazy_static` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated constant `std::sync::ONCE_INIT`: the `Once::new()` function is now preferred [INFO] [stdout] --> src/screen.rs:346:9 [INFO] [stdout] | [INFO] [stdout] 346 | / lazy_static! { [INFO] [stdout] 347 | | static ref RE: Regex = Regex::new(r"#prio=(\d+)").unwrap(); [INFO] [stdout] 348 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = note: this warning originates in the macro `__lazy_static_create` which comes from the expansion of the macro `lazy_static` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated constant `std::sync::ONCE_INIT`: the `Once::new()` function is now preferred [INFO] [stdout] --> src/screen.rs:731:9 [INFO] [stdout] | [INFO] [stdout] 731 | / lazy_static! { [INFO] [stdout] 732 | | static ref RE_DATE: Regex = Regex::new(r"\[(\S+)\]").unwrap(); [INFO] [stdout] 733 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = note: this warning originates in the macro `__lazy_static_create` which comes from the expansion of the macro `lazy_static` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated constant `std::sync::ONCE_INIT`: the `Once::new()` function is now preferred [INFO] [stdout] --> src/screen.rs:2126:9 [INFO] [stdout] | [INFO] [stdout] 2126 | / lazy_static! { [INFO] [stdout] 2127 | | //// general subtree population and modification [INFO] [stdout] 2128 | | // limit shows the top N results. [INFO] [stdout] 2129 | | static ref RE_LIMIT: Regex = Regex::new(r"#limit=(\d+)").unwrap(); [INFO] [stdout] ... | [INFO] [stdout] 2143 | | static ref RE_N: Regex = Regex::new(r"#n=(\d+)").unwrap(); [INFO] [stdout] 2144 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = note: this warning originates in the macro `__lazy_static_create` which comes from the expansion of the macro `lazy_static` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated constant `std::sync::ONCE_INIT`: the `Once::new()` function is now preferred [INFO] [stdout] --> src/screen.rs:2126:9 [INFO] [stdout] | [INFO] [stdout] 2126 | / lazy_static! { [INFO] [stdout] 2127 | | //// general subtree population and modification [INFO] [stdout] 2128 | | // limit shows the top N results. [INFO] [stdout] 2129 | | static ref RE_LIMIT: Regex = Regex::new(r"#limit=(\d+)").unwrap(); [INFO] [stdout] ... | [INFO] [stdout] 2143 | | static ref RE_N: Regex = Regex::new(r"#n=(\d+)").unwrap(); [INFO] [stdout] 2144 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = note: this warning originates in the macro `__lazy_static_create` which comes from the expansion of the macro `lazy_static` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated constant `std::sync::ONCE_INIT`: the `Once::new()` function is now preferred [INFO] [stdout] --> src/screen.rs:2126:9 [INFO] [stdout] | [INFO] [stdout] 2126 | / lazy_static! { [INFO] [stdout] 2127 | | //// general subtree population and modification [INFO] [stdout] 2128 | | // limit shows the top N results. [INFO] [stdout] 2129 | | static ref RE_LIMIT: Regex = Regex::new(r"#limit=(\d+)").unwrap(); [INFO] [stdout] ... | [INFO] [stdout] 2143 | | static ref RE_N: Regex = Regex::new(r"#n=(\d+)").unwrap(); [INFO] [stdout] 2144 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = note: this warning originates in the macro `__lazy_static_create` which comes from the expansion of the macro `lazy_static` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated constant `std::sync::ONCE_INIT`: the `Once::new()` function is now preferred [INFO] [stdout] --> src/screen.rs:2126:9 [INFO] [stdout] | [INFO] [stdout] 2126 | / lazy_static! { [INFO] [stdout] 2127 | | //// general subtree population and modification [INFO] [stdout] 2128 | | // limit shows the top N results. [INFO] [stdout] 2129 | | static ref RE_LIMIT: Regex = Regex::new(r"#limit=(\d+)").unwrap(); [INFO] [stdout] ... | [INFO] [stdout] 2143 | | static ref RE_N: Regex = Regex::new(r"#n=(\d+)").unwrap(); [INFO] [stdout] 2144 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = note: this warning originates in the macro `__lazy_static_create` which comes from the expansion of the macro `lazy_static` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated constant `std::sync::ONCE_INIT`: the `Once::new()` function is now preferred [INFO] [stdout] --> src/screen.rs:2126:9 [INFO] [stdout] | [INFO] [stdout] 2126 | / lazy_static! { [INFO] [stdout] 2127 | | //// general subtree population and modification [INFO] [stdout] 2128 | | // limit shows the top N results. [INFO] [stdout] 2129 | | static ref RE_LIMIT: Regex = Regex::new(r"#limit=(\d+)").unwrap(); [INFO] [stdout] ... | [INFO] [stdout] 2143 | | static ref RE_N: Regex = Regex::new(r"#n=(\d+)").unwrap(); [INFO] [stdout] 2144 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = note: this warning originates in the macro `__lazy_static_create` which comes from the expansion of the macro `lazy_static` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated constant `std::sync::ONCE_INIT`: the `Once::new()` function is now preferred [INFO] [stdout] --> src/screen.rs:2126:9 [INFO] [stdout] | [INFO] [stdout] 2126 | / lazy_static! { [INFO] [stdout] 2127 | | //// general subtree population and modification [INFO] [stdout] 2128 | | // limit shows the top N results. [INFO] [stdout] 2129 | | static ref RE_LIMIT: Regex = Regex::new(r"#limit=(\d+)").unwrap(); [INFO] [stdout] ... | [INFO] [stdout] 2143 | | static ref RE_N: Regex = Regex::new(r"#n=(\d+)").unwrap(); [INFO] [stdout] 2144 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = note: this warning originates in the macro `__lazy_static_create` which comes from the expansion of the macro `lazy_static` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated constant `std::sync::ONCE_INIT`: the `Once::new()` function is now preferred [INFO] [stdout] --> src/screen.rs:2126:9 [INFO] [stdout] | [INFO] [stdout] 2126 | / lazy_static! { [INFO] [stdout] 2127 | | //// general subtree population and modification [INFO] [stdout] 2128 | | // limit shows the top N results. [INFO] [stdout] 2129 | | static ref RE_LIMIT: Regex = Regex::new(r"#limit=(\d+)").unwrap(); [INFO] [stdout] ... | [INFO] [stdout] 2143 | | static ref RE_N: Regex = Regex::new(r"#n=(\d+)").unwrap(); [INFO] [stdout] 2144 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = note: this warning originates in the macro `__lazy_static_create` which comes from the expansion of the macro `lazy_static` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated constant `std::sync::ONCE_INIT`: the `Once::new()` function is now preferred [INFO] [stdout] --> src/screen.rs:2126:9 [INFO] [stdout] | [INFO] [stdout] 2126 | / lazy_static! { [INFO] [stdout] 2127 | | //// general subtree population and modification [INFO] [stdout] 2128 | | // limit shows the top N results. [INFO] [stdout] 2129 | | static ref RE_LIMIT: Regex = Regex::new(r"#limit=(\d+)").unwrap(); [INFO] [stdout] ... | [INFO] [stdout] 2143 | | static ref RE_N: Regex = Regex::new(r"#n=(\d+)").unwrap(); [INFO] [stdout] 2144 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = note: this warning originates in the macro `__lazy_static_create` which comes from the expansion of the macro `lazy_static` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated constant `std::sync::ONCE_INIT`: the `Once::new()` function is now preferred [INFO] [stdout] --> src/screen.rs:2126:9 [INFO] [stdout] | [INFO] [stdout] 2126 | / lazy_static! { [INFO] [stdout] 2127 | | //// general subtree population and modification [INFO] [stdout] 2128 | | // limit shows the top N results. [INFO] [stdout] 2129 | | static ref RE_LIMIT: Regex = Regex::new(r"#limit=(\d+)").unwrap(); [INFO] [stdout] ... | [INFO] [stdout] 2143 | | static ref RE_N: Regex = Regex::new(r"#n=(\d+)").unwrap(); [INFO] [stdout] 2144 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = note: this warning originates in the macro `__lazy_static_create` which comes from the expansion of the macro `lazy_static` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated constant `std::sync::ONCE_INIT`: the `Once::new()` function is now preferred [INFO] [stdout] --> src/meta.rs:10:1 [INFO] [stdout] | [INFO] [stdout] 10 | / lazy_static! { [INFO] [stdout] 11 | | static ref LOC: (f32, f32) = gps_query().unwrap_or_else(|e| { [INFO] [stdout] 12 | | error!("failed to get gps: {:?}", e); [INFO] [stdout] 13 | | (0.0, 0.0) [INFO] [stdout] 14 | | }); [INFO] [stdout] 15 | | } [INFO] [stdout] | |_^ [INFO] [stdout] | [INFO] [stdout] = note: this warning originates in the macro `__lazy_static_create` which comes from the expansion of the macro `lazy_static` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated constant `std::sync::ONCE_INIT`: the `Once::new()` function is now preferred [INFO] [stdout] --> src/config.rs:92:5 [INFO] [stdout] | [INFO] [stdout] 92 | / lazy_static! { [INFO] [stdout] 93 | | static ref RE: Regex = Regex::new(r"C-(.)").unwrap(); [INFO] [stdout] 94 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = note: this warning originates in the macro `__lazy_static_create` which comes from the expansion of the macro `lazy_static` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated constant `std::sync::ONCE_INIT`: the `Once::new()` function is now preferred [INFO] [stdout] --> src/tagdb.rs:23:9 [INFO] [stdout] | [INFO] [stdout] 23 | / lazy_static! { [INFO] [stdout] 24 | | static ref RE_TAG_KEY: Regex = Regex::new(r"#([^\s=]+)*").unwrap(); [INFO] [stdout] 25 | | static ref RE_TAG_KEY_VALUE: Regex = Regex::new(r"#(\S+)*").unwrap(); [INFO] [stdout] 26 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = note: this warning originates in the macro `__lazy_static_create` which comes from the expansion of the macro `lazy_static` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated constant `std::sync::ONCE_INIT`: the `Once::new()` function is now preferred [INFO] [stdout] --> src/tagdb.rs:23:9 [INFO] [stdout] | [INFO] [stdout] 23 | / lazy_static! { [INFO] [stdout] 24 | | static ref RE_TAG_KEY: Regex = Regex::new(r"#([^\s=]+)*").unwrap(); [INFO] [stdout] 25 | | static ref RE_TAG_KEY_VALUE: Regex = Regex::new(r"#(\S+)*").unwrap(); [INFO] [stdout] 26 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = note: this warning originates in the macro `__lazy_static_create` which comes from the expansion of the macro `lazy_static` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated constant `std::sync::ONCE_INIT`: the `Once::new()` function is now preferred [INFO] [stdout] --> src/dateparse.rs:6:5 [INFO] [stdout] | [INFO] [stdout] 6 | / lazy_static! { [INFO] [stdout] 7 | | static ref YEARS: Regex = Regex::new(r"(?P\d+)y").unwrap(); [INFO] [stdout] 8 | | static ref MONTHS: Regex = Regex::new(r"(?P\d+)m").unwrap(); [INFO] [stdout] 9 | | static ref WEEKS: Regex = Regex::new(r"(?P\d+)w").unwrap(); [INFO] [stdout] 10 | | static ref DAYS: Regex = Regex::new(r"(?P\d+)d").unwrap(); [INFO] [stdout] 11 | | static ref HOURS: Regex = Regex::new(r"(?P\d+)h").unwrap(); [INFO] [stdout] 12 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = note: this warning originates in the macro `__lazy_static_create` which comes from the expansion of the macro `lazy_static` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated constant `std::sync::ONCE_INIT`: the `Once::new()` function is now preferred [INFO] [stdout] --> src/dateparse.rs:6:5 [INFO] [stdout] | [INFO] [stdout] 6 | / lazy_static! { [INFO] [stdout] 7 | | static ref YEARS: Regex = Regex::new(r"(?P\d+)y").unwrap(); [INFO] [stdout] 8 | | static ref MONTHS: Regex = Regex::new(r"(?P\d+)m").unwrap(); [INFO] [stdout] 9 | | static ref WEEKS: Regex = Regex::new(r"(?P\d+)w").unwrap(); [INFO] [stdout] 10 | | static ref DAYS: Regex = Regex::new(r"(?P\d+)d").unwrap(); [INFO] [stdout] 11 | | static ref HOURS: Regex = Regex::new(r"(?P\d+)h").unwrap(); [INFO] [stdout] 12 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = note: this warning originates in the macro `__lazy_static_create` which comes from the expansion of the macro `lazy_static` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated constant `std::sync::ONCE_INIT`: the `Once::new()` function is now preferred [INFO] [stdout] --> src/dateparse.rs:6:5 [INFO] [stdout] | [INFO] [stdout] 6 | / lazy_static! { [INFO] [stdout] 7 | | static ref YEARS: Regex = Regex::new(r"(?P\d+)y").unwrap(); [INFO] [stdout] 8 | | static ref MONTHS: Regex = Regex::new(r"(?P\d+)m").unwrap(); [INFO] [stdout] 9 | | static ref WEEKS: Regex = Regex::new(r"(?P\d+)w").unwrap(); [INFO] [stdout] 10 | | static ref DAYS: Regex = Regex::new(r"(?P\d+)d").unwrap(); [INFO] [stdout] 11 | | static ref HOURS: Regex = Regex::new(r"(?P\d+)h").unwrap(); [INFO] [stdout] 12 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = note: this warning originates in the macro `__lazy_static_create` which comes from the expansion of the macro `lazy_static` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated constant `std::sync::ONCE_INIT`: the `Once::new()` function is now preferred [INFO] [stdout] --> src/dateparse.rs:6:5 [INFO] [stdout] | [INFO] [stdout] 6 | / lazy_static! { [INFO] [stdout] 7 | | static ref YEARS: Regex = Regex::new(r"(?P\d+)y").unwrap(); [INFO] [stdout] 8 | | static ref MONTHS: Regex = Regex::new(r"(?P\d+)m").unwrap(); [INFO] [stdout] 9 | | static ref WEEKS: Regex = Regex::new(r"(?P\d+)w").unwrap(); [INFO] [stdout] 10 | | static ref DAYS: Regex = Regex::new(r"(?P\d+)d").unwrap(); [INFO] [stdout] 11 | | static ref HOURS: Regex = Regex::new(r"(?P\d+)h").unwrap(); [INFO] [stdout] 12 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = note: this warning originates in the macro `__lazy_static_create` which comes from the expansion of the macro `lazy_static` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated constant `std::sync::ONCE_INIT`: the `Once::new()` function is now preferred [INFO] [stdout] --> src/dateparse.rs:6:5 [INFO] [stdout] | [INFO] [stdout] 6 | / lazy_static! { [INFO] [stdout] 7 | | static ref YEARS: Regex = Regex::new(r"(?P\d+)y").unwrap(); [INFO] [stdout] 8 | | static ref MONTHS: Regex = Regex::new(r"(?P\d+)m").unwrap(); [INFO] [stdout] 9 | | static ref WEEKS: Regex = Regex::new(r"(?P\d+)w").unwrap(); [INFO] [stdout] 10 | | static ref DAYS: Regex = Regex::new(r"(?P\d+)d").unwrap(); [INFO] [stdout] 11 | | static ref HOURS: Regex = Regex::new(r"(?P\d+)h").unwrap(); [INFO] [stdout] 12 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = note: this warning originates in the macro `__lazy_static_create` which comes from the expansion of the macro `lazy_static` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stdout] --> src/pb/data_model.rs:207:26 [INFO] [stdout] | [INFO] [stdout] 207 | fn as_any(&self) -> &::std::any::Any { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021! [INFO] [stdout] = note: for more information, see [INFO] [stdout] = note: `#[warn(bare_trait_objects)]` (part of `#[warn(rust_2021_compatibility)]`) on by default [INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn` [INFO] [stdout] | [INFO] [stdout] 207 | fn as_any(&self) -> &dyn (::std::any::Any) { [INFO] [stdout] | +++++ + [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stdout] --> src/pb/data_model.rs:427:26 [INFO] [stdout] | [INFO] [stdout] 427 | fn as_any(&self) -> &::std::any::Any { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021! [INFO] [stdout] = note: for more information, see [INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn` [INFO] [stdout] | [INFO] [stdout] 427 | fn as_any(&self) -> &dyn (::std::any::Any) { [INFO] [stdout] | +++++ + [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stdout] --> src/pb/data_model.rs:832:26 [INFO] [stdout] | [INFO] [stdout] 832 | fn as_any(&self) -> &::std::any::Any { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021! [INFO] [stdout] = note: for more information, see [INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn` [INFO] [stdout] | [INFO] [stdout] 832 | fn as_any(&self) -> &dyn (::std::any::Any) { [INFO] [stdout] | +++++ + [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stdout] --> src/pb/data_model.rs:1595:26 [INFO] [stdout] | [INFO] [stdout] 1595 | fn as_any(&self) -> &::std::any::Any { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021! [INFO] [stdout] = note: for more information, see [INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn` [INFO] [stdout] | [INFO] [stdout] 1595 | fn as_any(&self) -> &dyn (::std::any::Any) { [INFO] [stdout] | +++++ + [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stdout] --> src/pb/data_model.rs:1881:26 [INFO] [stdout] | [INFO] [stdout] 1881 | fn as_any(&self) -> &::std::any::Any { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021! [INFO] [stdout] = note: for more information, see [INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn` [INFO] [stdout] | [INFO] [stdout] 1881 | fn as_any(&self) -> &dyn (::std::any::Any) { [INFO] [stdout] | +++++ + [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stdout] --> src/pb/data_model.rs:2149:26 [INFO] [stdout] | [INFO] [stdout] 2149 | fn as_any(&self) -> &::std::any::Any { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021! [INFO] [stdout] = note: for more information, see [INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn` [INFO] [stdout] | [INFO] [stdout] 2149 | fn as_any(&self) -> &dyn (::std::any::Any) { [INFO] [stdout] | +++++ + [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stdout] --> src/pb/data_model.rs:207:26 [INFO] [stdout] | [INFO] [stdout] 207 | fn as_any(&self) -> &::std::any::Any { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021! [INFO] [stdout] = note: for more information, see [INFO] [stdout] = note: `#[warn(bare_trait_objects)]` (part of `#[warn(rust_2021_compatibility)]`) on by default [INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn` [INFO] [stdout] | [INFO] [stdout] 207 | fn as_any(&self) -> &dyn (::std::any::Any) { [INFO] [stdout] | +++++ + [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stdout] --> src/pb/data_model.rs:427:26 [INFO] [stdout] | [INFO] [stdout] 427 | fn as_any(&self) -> &::std::any::Any { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021! [INFO] [stdout] = note: for more information, see [INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn` [INFO] [stdout] | [INFO] [stdout] 427 | fn as_any(&self) -> &dyn (::std::any::Any) { [INFO] [stdout] | +++++ + [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stdout] --> src/pb/data_model.rs:832:26 [INFO] [stdout] | [INFO] [stdout] 832 | fn as_any(&self) -> &::std::any::Any { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021! [INFO] [stdout] = note: for more information, see [INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn` [INFO] [stdout] | [INFO] [stdout] 832 | fn as_any(&self) -> &dyn (::std::any::Any) { [INFO] [stdout] | +++++ + [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stdout] --> src/pb/data_model.rs:1595:26 [INFO] [stdout] | [INFO] [stdout] 1595 | fn as_any(&self) -> &::std::any::Any { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021! [INFO] [stdout] = note: for more information, see [INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn` [INFO] [stdout] | [INFO] [stdout] 1595 | fn as_any(&self) -> &dyn (::std::any::Any) { [INFO] [stdout] | +++++ + [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stdout] --> src/pb/data_model.rs:1881:26 [INFO] [stdout] | [INFO] [stdout] 1881 | fn as_any(&self) -> &::std::any::Any { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021! [INFO] [stdout] = note: for more information, see [INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn` [INFO] [stdout] | [INFO] [stdout] 1881 | fn as_any(&self) -> &dyn (::std::any::Any) { [INFO] [stdout] | +++++ + [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stdout] --> src/pb/data_model.rs:2149:26 [INFO] [stdout] | [INFO] [stdout] 2149 | fn as_any(&self) -> &::std::any::Any { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021! [INFO] [stdout] = note: for more information, see [INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn` [INFO] [stdout] | [INFO] [stdout] 2149 | fn as_any(&self) -> &dyn (::std::any::Any) { [INFO] [stdout] | +++++ + [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stdout] --> src/screen.rs:368:24 [INFO] [stdout] | [INFO] [stdout] 368 | let stdin: Box = Box::new(stdin()); [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021! [INFO] [stdout] = note: for more information, see [INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn` [INFO] [stdout] | [INFO] [stdout] 368 | let stdin: Box = Box::new(stdin()); [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stdout] --> src/screen.rs:389:28 [INFO] [stdout] | [INFO] [stdout] 389 | let mut stdin: Box = Box::new(stdin()); [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021! [INFO] [stdout] = note: for more information, see [INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn` [INFO] [stdout] | [INFO] [stdout] 389 | let mut stdin: Box = Box::new(stdin()); [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stdout] --> src/screen.rs:368:24 [INFO] [stdout] | [INFO] [stdout] 368 | let stdin: Box = Box::new(stdin()); [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021! [INFO] [stdout] = note: for more information, see [INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn` [INFO] [stdout] | [INFO] [stdout] 368 | let stdin: Box = Box::new(stdin()); [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stdout] --> src/screen.rs:389:28 [INFO] [stdout] | [INFO] [stdout] 389 | let mut stdin: Box = Box::new(stdin()); [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021! [INFO] [stdout] = note: for more information, see [INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn` [INFO] [stdout] | [INFO] [stdout] 389 | let mut stdin: Box = Box::new(stdin()); [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated method `core::str::::trim_right`: superseded by `trim_end` [INFO] [stdout] --> src/screen.rs:749:70 [INFO] [stdout] | [INFO] [stdout] 749 | n.content = RE_DATE.replace(&*n.content, "").trim_right().to_owned(); [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] help: replace the use of the deprecated method [INFO] [stdout] | [INFO] [stdout] 749 - n.content = RE_DATE.replace(&*n.content, "").trim_right().to_owned(); [INFO] [stdout] 749 + n.content = RE_DATE.replace(&*n.content, "").trim_end().to_owned(); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated method `core::str::::trim_right`: superseded by `trim_end` [INFO] [stdout] --> src/screen.rs:749:70 [INFO] [stdout] | [INFO] [stdout] 749 | n.content = RE_DATE.replace(&*n.content, "").trim_right().to_owned(); [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] help: replace the use of the deprecated method [INFO] [stdout] | [INFO] [stdout] 749 - n.content = RE_DATE.replace(&*n.content, "").trim_right().to_owned(); [INFO] [stdout] 749 + n.content = RE_DATE.replace(&*n.content, "").trim_end().to_owned(); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stdout] --> src/pb/data_model.rs:208:18 [INFO] [stdout] | [INFO] [stdout] 208 | self as &::std::any::Any [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021! [INFO] [stdout] = note: for more information, see [INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn` [INFO] [stdout] | [INFO] [stdout] 208 | self as &dyn (::std::any::Any) [INFO] [stdout] | +++++ + [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stdout] --> src/pb/data_model.rs:428:18 [INFO] [stdout] | [INFO] [stdout] 428 | self as &::std::any::Any [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021! [INFO] [stdout] = note: for more information, see [INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn` [INFO] [stdout] | [INFO] [stdout] 428 | self as &dyn (::std::any::Any) [INFO] [stdout] | +++++ + [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stdout] --> src/pb/data_model.rs:833:18 [INFO] [stdout] | [INFO] [stdout] 833 | self as &::std::any::Any [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021! [INFO] [stdout] = note: for more information, see [INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn` [INFO] [stdout] | [INFO] [stdout] 833 | self as &dyn (::std::any::Any) [INFO] [stdout] | +++++ + [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stdout] --> src/pb/data_model.rs:208:18 [INFO] [stdout] | [INFO] [stdout] 208 | self as &::std::any::Any [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021! [INFO] [stdout] = note: for more information, see [INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn` [INFO] [stdout] | [INFO] [stdout] 208 | self as &dyn (::std::any::Any) [INFO] [stdout] | +++++ + [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stdout] --> src/pb/data_model.rs:428:18 [INFO] [stdout] | [INFO] [stdout] 428 | self as &::std::any::Any [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021! [INFO] [stdout] = note: for more information, see [INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn` [INFO] [stdout] | [INFO] [stdout] 428 | self as &dyn (::std::any::Any) [INFO] [stdout] | +++++ + [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stdout] --> src/pb/data_model.rs:833:18 [INFO] [stdout] | [INFO] [stdout] 833 | self as &::std::any::Any [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021! [INFO] [stdout] = note: for more information, see [INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn` [INFO] [stdout] | [INFO] [stdout] 833 | self as &dyn (::std::any::Any) [INFO] [stdout] | +++++ + [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stdout] --> src/pb/data_model.rs:1596:18 [INFO] [stdout] | [INFO] [stdout] 1596 | self as &::std::any::Any [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021! [INFO] [stdout] = note: for more information, see [INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn` [INFO] [stdout] | [INFO] [stdout] 1596 | self as &dyn (::std::any::Any) [INFO] [stdout] | +++++ + [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stdout] --> src/pb/data_model.rs:1882:18 [INFO] [stdout] | [INFO] [stdout] 1882 | self as &::std::any::Any [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021! [INFO] [stdout] = note: for more information, see [INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn` [INFO] [stdout] | [INFO] [stdout] 1882 | self as &dyn (::std::any::Any) [INFO] [stdout] | +++++ + [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stdout] --> src/pb/data_model.rs:2150:18 [INFO] [stdout] | [INFO] [stdout] 2150 | self as &::std::any::Any [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021! [INFO] [stdout] = note: for more information, see [INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn` [INFO] [stdout] | [INFO] [stdout] 2150 | self as &dyn (::std::any::Any) [INFO] [stdout] | +++++ + [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stdout] --> src/pb/data_model.rs:1596:18 [INFO] [stdout] | [INFO] [stdout] 1596 | self as &::std::any::Any [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021! [INFO] [stdout] = note: for more information, see [INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn` [INFO] [stdout] | [INFO] [stdout] 1596 | self as &dyn (::std::any::Any) [INFO] [stdout] | +++++ + [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stdout] --> src/pb/data_model.rs:1882:18 [INFO] [stdout] | [INFO] [stdout] 1882 | self as &::std::any::Any [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021! [INFO] [stdout] = note: for more information, see [INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn` [INFO] [stdout] | [INFO] [stdout] 1882 | self as &dyn (::std::any::Any) [INFO] [stdout] | +++++ + [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stdout] --> src/pb/data_model.rs:2150:18 [INFO] [stdout] | [INFO] [stdout] 2150 | self as &::std::any::Any [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021! [INFO] [stdout] = note: for more information, see [INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn` [INFO] [stdout] | [INFO] [stdout] 2150 | self as &dyn (::std::any::Any) [INFO] [stdout] | +++++ + [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/screen.rs:666:9 [INFO] [stdout] | [INFO] [stdout] 666 | mut filter_map: &mut F, [INFO] [stdout] | ----^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/screen.rs:736:70 [INFO] [stdout] | [INFO] [stdout] 736 | let deletable = self.with_node_mut_no_meta(selected_id, |mut n| { [INFO] [stdout] | ----^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/screen.rs:745:54 [INFO] [stdout] | [INFO] [stdout] 745 | self.with_node_mut_no_meta(selected_id, |mut n| { [INFO] [stdout] | ----^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/screen.rs:796:61 [INFO] [stdout] | [INFO] [stdout] 796 | return self.with_node_mut_no_meta(node_id, |mut node| { [INFO] [stdout] | ----^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/screen.rs:666:9 [INFO] [stdout] | [INFO] [stdout] 666 | mut filter_map: &mut F, [INFO] [stdout] | ----^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/screen.rs:903:43 [INFO] [stdout] | [INFO] [stdout] 903 | self.with_node_mut_no_meta(root, |mut n| n.auto_arrange = !n.auto_arrange) [INFO] [stdout] | ----^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/screen.rs:736:70 [INFO] [stdout] | [INFO] [stdout] 736 | let deletable = self.with_node_mut_no_meta(selected_id, |mut n| { [INFO] [stdout] | ----^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/screen.rs:745:54 [INFO] [stdout] | [INFO] [stdout] 745 | self.with_node_mut_no_meta(selected_id, |mut n| { [INFO] [stdout] | ----^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/screen.rs:796:61 [INFO] [stdout] | [INFO] [stdout] 796 | return self.with_node_mut_no_meta(node_id, |mut node| { [INFO] [stdout] | ----^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/screen.rs:903:43 [INFO] [stdout] | [INFO] [stdout] 903 | self.with_node_mut_no_meta(root, |mut n| n.auto_arrange = !n.auto_arrange) [INFO] [stdout] | ----^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/screen.rs:1214:50 [INFO] [stdout] | [INFO] [stdout] 1214 | self.with_node_mut_no_meta(ptr, |mut root| { [INFO] [stdout] | ----^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/screen.rs:1342:52 [INFO] [stdout] | [INFO] [stdout] 1342 | self.with_node_mut_no_meta(parent_id, |mut parent| { [INFO] [stdout] | ----^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/screen.rs:1365:52 [INFO] [stdout] | [INFO] [stdout] 1365 | self.with_node_mut_no_meta(parent_id, |mut parent| { [INFO] [stdout] | ----^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/screen.rs:1473:50 [INFO] [stdout] | [INFO] [stdout] 1473 | self.with_node_mut_no_meta(node_id, |mut node| node.selected = true) [INFO] [stdout] | ----^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/screen.rs:1214:50 [INFO] [stdout] | [INFO] [stdout] 1214 | self.with_node_mut_no_meta(ptr, |mut root| { [INFO] [stdout] | ----^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/screen.rs:1342:52 [INFO] [stdout] | [INFO] [stdout] 1342 | self.with_node_mut_no_meta(parent_id, |mut parent| { [INFO] [stdout] | ----^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/screen.rs:1365:52 [INFO] [stdout] | [INFO] [stdout] 1365 | self.with_node_mut_no_meta(parent_id, |mut parent| { [INFO] [stdout] | ----^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/screen.rs:1473:50 [INFO] [stdout] | [INFO] [stdout] 1473 | self.with_node_mut_no_meta(node_id, |mut node| node.selected = true) [INFO] [stdout] | ----^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/tagdb.rs:33:25 [INFO] [stdout] | [INFO] [stdout] 33 | if let Some(mut tags) = self.node_to_tags.get_mut(&node) { [INFO] [stdout] | ----^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/tagdb.rs:50:29 [INFO] [stdout] | [INFO] [stdout] 50 | if let Some(mut tags) = self.node_to_tags.get_mut(&node) { [INFO] [stdout] | ----^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/tagdb.rs:68:29 [INFO] [stdout] | [INFO] [stdout] 68 | if let Some(mut nodes) = self.tag_to_nodes.get_mut(tag) { [INFO] [stdout] | ----^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `new_ephemeral_node_id` is never used [INFO] [stdout] --> src/screen.rs:131:8 [INFO] [stdout] | [INFO] [stdout] 115 | impl Screen { [INFO] [stdout] | ----------- method in this implementation [INFO] [stdout] ... [INFO] [stdout] 131 | fn new_ephemeral_node_id(&mut self) -> NodeID { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `0` is never read [INFO] [stdout] --> src/meta.rs:83:11 [INFO] [stdout] | [INFO] [stdout] 83 | Hyper(hyper::Error), [INFO] [stdout] | ----- ^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | field in this variant [INFO] [stdout] | [INFO] [stdout] = note: `GpsError` has a derived impl for the trait `Debug`, but this is 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] 83 - Hyper(hyper::Error), [INFO] [stdout] 83 + Hyper(()), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `0` is never read [INFO] [stdout] --> src/meta.rs:84:8 [INFO] [stdout] | [INFO] [stdout] 84 | Io(io::Error), [INFO] [stdout] | -- ^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | field in this variant [INFO] [stdout] | [INFO] [stdout] = note: `GpsError` has a derived impl for the trait `Debug`, but this is 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] 84 - Io(io::Error), [INFO] [stdout] 84 + Io(()), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `0` is never read [INFO] [stdout] --> src/meta.rs:85:11 [INFO] [stdout] | [INFO] [stdout] 85 | Parse(num::ParseFloatError), [INFO] [stdout] | ----- ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | field in this variant [INFO] [stdout] | [INFO] [stdout] = note: `GpsError` has a derived impl for the trait `Debug`, but this is 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] 85 - Parse(num::ParseFloatError), [INFO] [stdout] 85 + Parse(()), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `0` is never read [INFO] [stdout] --> src/meta.rs:86:11 [INFO] [stdout] | [INFO] [stdout] 86 | Other(String), [INFO] [stdout] | ----- ^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | field in this variant [INFO] [stdout] | [INFO] [stdout] = note: `GpsError` has a derived impl for the trait `Debug`, but this is 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] 86 - Other(String), [INFO] [stdout] 86 + Other(()), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/tagdb.rs:33:25 [INFO] [stdout] | [INFO] [stdout] 33 | if let Some(mut tags) = self.node_to_tags.get_mut(&node) { [INFO] [stdout] | ----^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/tagdb.rs:50:29 [INFO] [stdout] | [INFO] [stdout] 50 | if let Some(mut tags) = self.node_to_tags.get_mut(&node) { [INFO] [stdout] | ----^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/tagdb.rs:68:29 [INFO] [stdout] | [INFO] [stdout] 68 | if let Some(mut nodes) = self.tag_to_nodes.get_mut(tag) { [INFO] [stdout] | ----^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: iterating on a map's values [INFO] [stdout] --> src/serialization.rs:9:17 [INFO] [stdout] | [INFO] [stdout] 9 | let nodes = screen.nodes [INFO] [stdout] | _________________^ [INFO] [stdout] 10 | | .iter() [INFO] [stdout] 11 | | .map(|(_, node)| serialize_node(node)) [INFO] [stdout] | |______________________________________________^ help: try: `screen.nodes.values().map(|node| serialize_node(node))` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#iter_kv_map [INFO] [stdout] = note: `#[warn(clippy::iter_kv_map)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref which would be done by auto-deref [INFO] [stdout] --> src/serialization.rs:114:60 [INFO] [stdout] | [INFO] [stdout] 114 | let screen_pb: pb::Screen = protobuf::parse_from_bytes(&*data)?; [INFO] [stdout] | ^^^^^^ help: try: `&data` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] = note: `#[warn(clippy::explicit_auto_deref)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `new_ephemeral_node_id` is never used [INFO] [stdout] --> src/screen.rs:131:8 [INFO] [stdout] | [INFO] [stdout] 115 | impl Screen { [INFO] [stdout] | ----------- method in this implementation [INFO] [stdout] ... [INFO] [stdout] 131 | fn new_ephemeral_node_id(&mut self) -> NodeID { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field assignment outside of initializer for an instance created with Default::default() [INFO] [stdout] --> src/screen.rs:79:9 [INFO] [stdout] | [INFO] [stdout] 79 | root.content = "home".to_owned(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] note: consider initializing the variable with `node::Node { content: "home".to_owned(), ..Default::default() }` and removing relevant reassignments [INFO] [stdout] --> src/screen.rs:78:9 [INFO] [stdout] | [INFO] [stdout] 78 | let mut root = Node::default(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#field_reassign_with_default [INFO] [stdout] = note: `#[warn(clippy::field_reassign_with_default)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: usage of a legacy numeric constant [INFO] [stdout] --> src/screen.rs:105:31 [INFO] [stdout] | [INFO] [stdout] 105 | ephemeral_max_id: std::u64::MAX, [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#legacy_numeric_constants [INFO] [stdout] = note: `#[warn(clippy::legacy_numeric_constants)]` on by default [INFO] [stdout] help: use the associated constant instead [INFO] [stdout] | [INFO] [stdout] 105 - ephemeral_max_id: std::u64::MAX, [INFO] [stdout] 105 + ephemeral_max_id: u64::MAX, [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `0` is never read [INFO] [stdout] --> src/meta.rs:83:11 [INFO] [stdout] | [INFO] [stdout] 83 | Hyper(hyper::Error), [INFO] [stdout] | ----- ^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | field in this variant [INFO] [stdout] | [INFO] [stdout] = note: `GpsError` has a derived impl for the trait `Debug`, but this is 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] 83 - Hyper(hyper::Error), [INFO] [stdout] 83 + Hyper(()), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `0` is never read [INFO] [stdout] --> src/meta.rs:84:8 [INFO] [stdout] | [INFO] [stdout] 84 | Io(io::Error), [INFO] [stdout] | -- ^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | field in this variant [INFO] [stdout] | [INFO] [stdout] = note: `GpsError` has a derived impl for the trait `Debug`, but this is 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] 84 - Io(io::Error), [INFO] [stdout] 84 + Io(()), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `0` is never read [INFO] [stdout] --> src/meta.rs:85:11 [INFO] [stdout] | [INFO] [stdout] 85 | Parse(num::ParseFloatError), [INFO] [stdout] | ----- ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | field in this variant [INFO] [stdout] | [INFO] [stdout] = note: `GpsError` has a derived impl for the trait `Debug`, but this is 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] 85 - Parse(num::ParseFloatError), [INFO] [stdout] 85 + Parse(()), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `0` is never read [INFO] [stdout] --> src/meta.rs:86:11 [INFO] [stdout] | [INFO] [stdout] 86 | Other(String), [INFO] [stdout] | ----- ^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | field in this variant [INFO] [stdout] | [INFO] [stdout] = note: `GpsError` has a derived impl for the trait `Debug`, but this is 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] 86 - Other(String), [INFO] [stdout] 86 + Other(()), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `print!()` with a format string that ends in a single newline [INFO] [stdout] --> src/screen.rs:118:9 [INFO] [stdout] | [INFO] [stdout] 118 | print!("{}{}{}\n", cursor::Goto(1, 1), clear::All, self.config); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#print_with_newline [INFO] [stdout] = note: `#[warn(clippy::print_with_newline)]` on by default [INFO] [stdout] help: use `println!` instead [INFO] [stdout] | [INFO] [stdout] 118 - print!("{}{}{}\n", cursor::Goto(1, 1), clear::All, self.config); [INFO] [stdout] 118 + println!("{}{}{}", cursor::Goto(1, 1), clear::All, self.config); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant pattern matching, consider using `is_err()` [INFO] [stdout] --> src/screen.rs:120:16 [INFO] [stdout] | [INFO] [stdout] 120 | if let Err(_) = self.single_key_prompt("") { [INFO] [stdout] | -------^^^^^^----------------------------- help: try: `if self.single_key_prompt("").is_err()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern_matching [INFO] [stdout] = note: `#[warn(clippy::redundant_pattern_matching)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant closure [INFO] [stdout] --> src/screen.rs:148:32 [INFO] [stdout] | [INFO] [stdout] 148 | self.nodes.get(&k).map(|node| f(node)) [INFO] [stdout] | ^^^^^^^^^^^^^^ help: replace the closure with the function itself: `f` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stdout] = note: `#[warn(clippy::redundant_closure)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/screen.rs:156:15 [INFO] [stdout] | [INFO] [stdout] 156 | f(&mut node) [INFO] [stdout] | ^^^^^^^^^ help: change this to: `node` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] = note: `#[warn(clippy::needless_borrow)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/screen.rs:163:49 [INFO] [stdout] | [INFO] [stdout] 163 | self.nodes.get_mut(&k).map(|mut node| f(&mut node)) [INFO] [stdout] | ^^^^^^^^^ help: change this to: `node` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: iterating on a map's values [INFO] [stdout] --> src/serialization.rs:9:17 [INFO] [stdout] | [INFO] [stdout] 9 | let nodes = screen.nodes [INFO] [stdout] | _________________^ [INFO] [stdout] 10 | | .iter() [INFO] [stdout] 11 | | .map(|(_, node)| serialize_node(node)) [INFO] [stdout] | |______________________________________________^ help: try: `screen.nodes.values().map(|node| serialize_node(node))` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#iter_kv_map [INFO] [stdout] = note: `#[warn(clippy::iter_kv_map)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary use of `get(&node_id).is_some()` [INFO] [stdout] --> src/screen.rs:235:20 [INFO] [stdout] | [INFO] [stdout] 235 | self.nodes.get(&node_id).is_some() [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `contains_key(&node_id)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_get_then_check [INFO] [stdout] = note: `#[warn(clippy::unnecessary_get_then_check)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref which would be done by auto-deref [INFO] [stdout] --> src/serialization.rs:114:60 [INFO] [stdout] | [INFO] [stdout] 114 | let screen_pb: pb::Screen = protobuf::parse_from_bytes(&*data)?; [INFO] [stdout] | ^^^^^^ help: try: `&data` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] = note: `#[warn(clippy::explicit_auto_deref)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref which would be done by auto-deref [INFO] [stdout] --> src/screen.rs:351:32 [INFO] [stdout] | [INFO] [stdout] 351 | if RE.is_match(&*c) { [INFO] [stdout] | ^^^ help: try: `&c` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field assignment outside of initializer for an instance created with Default::default() [INFO] [stdout] --> src/screen.rs:79:9 [INFO] [stdout] | [INFO] [stdout] 79 | root.content = "home".to_owned(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] note: consider initializing the variable with `node::Node { content: "home".to_owned(), ..Default::default() }` and removing relevant reassignments [INFO] [stdout] --> src/screen.rs:78:9 [INFO] [stdout] | [INFO] [stdout] 78 | let mut root = Node::default(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#field_reassign_with_default [INFO] [stdout] = note: `#[warn(clippy::field_reassign_with_default)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref which would be done by auto-deref [INFO] [stdout] --> src/screen.rs:352:38 [INFO] [stdout] | [INFO] [stdout] 352 | RE.captures_iter(&*c).nth(0).and_then(|n| { [INFO] [stdout] | ^^^ help: try: `&c` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: usage of a legacy numeric constant [INFO] [stdout] --> src/screen.rs:105:31 [INFO] [stdout] | [INFO] [stdout] 105 | ephemeral_max_id: std::u64::MAX, [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#legacy_numeric_constants [INFO] [stdout] = note: `#[warn(clippy::legacy_numeric_constants)]` on by default [INFO] [stdout] help: use the associated constant instead [INFO] [stdout] | [INFO] [stdout] 105 - ephemeral_max_id: std::u64::MAX, [INFO] [stdout] 105 + ephemeral_max_id: u64::MAX, [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this can be `std::io::Error::other(_)` [INFO] [stdout] --> src/screen.rs:365:24 [INFO] [stdout] | [INFO] [stdout] 365 | return Err(Error::new(ErrorKind::Other, "can't prompt in test")); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#io_other_error [INFO] [stdout] = note: `#[warn(clippy::io_other_error)]` on by default [INFO] [stdout] help: use `std::io::Error::other` [INFO] [stdout] | [INFO] [stdout] 365 - return Err(Error::new(ErrorKind::Other, "can't prompt in test")); [INFO] [stdout] 365 + return Err(Error::other("can't prompt in test")); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `print!()` with a format string that ends in a single newline [INFO] [stdout] --> src/screen.rs:118:9 [INFO] [stdout] | [INFO] [stdout] 118 | print!("{}{}{}\n", cursor::Goto(1, 1), clear::All, self.config); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#print_with_newline [INFO] [stdout] = note: `#[warn(clippy::print_with_newline)]` on by default [INFO] [stdout] help: use `println!` instead [INFO] [stdout] | [INFO] [stdout] 118 - print!("{}{}{}\n", cursor::Goto(1, 1), clear::All, self.config); [INFO] [stdout] 118 + println!("{}{}{}", cursor::Goto(1, 1), clear::All, self.config); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant pattern matching, consider using `is_err()` [INFO] [stdout] --> src/screen.rs:120:16 [INFO] [stdout] | [INFO] [stdout] 120 | if let Err(_) = self.single_key_prompt("") { [INFO] [stdout] | -------^^^^^^----------------------------- help: try: `if self.single_key_prompt("").is_err()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern_matching [INFO] [stdout] = note: `#[warn(clippy::redundant_pattern_matching)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this can be `std::io::Error::other(_)` [INFO] [stdout] --> src/screen.rs:386:24 [INFO] [stdout] | [INFO] [stdout] 386 | return Err(Error::new(ErrorKind::Other, "can't prompt in test")); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#io_other_error [INFO] [stdout] help: use `std::io::Error::other` [INFO] [stdout] | [INFO] [stdout] 386 - return Err(Error::new(ErrorKind::Other, "can't prompt in test")); [INFO] [stdout] 386 + return Err(Error::other("can't prompt in test")); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant closure [INFO] [stdout] --> src/screen.rs:148:32 [INFO] [stdout] | [INFO] [stdout] 148 | self.nodes.get(&k).map(|node| f(node)) [INFO] [stdout] | ^^^^^^^^^^^^^^ help: replace the closure with the function itself: `f` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stdout] = note: `#[warn(clippy::redundant_closure)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/screen.rs:156:15 [INFO] [stdout] | [INFO] [stdout] 156 | f(&mut node) [INFO] [stdout] | ^^^^^^^^^ help: change this to: `node` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] = note: `#[warn(clippy::needless_borrow)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/screen.rs:163:49 [INFO] [stdout] | [INFO] [stdout] 163 | self.nodes.get_mut(&k).map(|mut node| f(&mut node)) [INFO] [stdout] | ^^^^^^^^^ help: change this to: `node` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref which would be done by auto-deref [INFO] [stdout] --> src/screen.rs:432:50 [INFO] [stdout] | [INFO] [stdout] 432 | if let Ok(Some(mut query)) = self.prompt(&*prompt) { [INFO] [stdout] | ^^^^^^^^ help: try: `&prompt` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this creates an owned instance just for comparison [INFO] [stdout] --> src/screen.rs:433:25 [INFO] [stdout] | [INFO] [stdout] 433 | if query == "".to_owned() { [INFO] [stdout] | ^^^^^^^^^^^^^ help: try: `""` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cmp_owned [INFO] [stdout] = note: `#[warn(clippy::cmp_owned)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary use of `get(&node_id).is_some()` [INFO] [stdout] --> src/screen.rs:235:20 [INFO] [stdout] | [INFO] [stdout] 235 | self.nodes.get(&node_id).is_some() [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `contains_key(&node_id)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_get_then_check [INFO] [stdout] = note: `#[warn(clippy::unnecessary_get_then_check)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: explicit call to `.into_iter()` in function argument accepting `IntoIterator` [INFO] [stdout] --> src/screen.rs:497:41 [INFO] [stdout] | [INFO] [stdout] 497 | chars.split("").skip(1).zip(nodes.into_iter()).collect(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] note: this parameter accepts any `IntoIterator`, so you don't need to call `.into_iter()` [INFO] [stdout] --> /rustc/3645249d79dfb136b5d8de3ce153d19d6698d92d/library/core/src/iter/traits/iterator.rs:629:11 [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_conversion [INFO] [stdout] = note: `#[warn(clippy::useless_conversion)]` on by default [INFO] [stdout] help: consider removing the `.into_iter()` [INFO] [stdout] | [INFO] [stdout] 497 - chars.split("").skip(1).zip(nodes.into_iter()).collect(); [INFO] [stdout] 497 + chars.split("").skip(1).zip(nodes).collect(); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary use of `to_owned` [INFO] [stdout] --> src/screen.rs:560:26 [INFO] [stdout] | [INFO] [stdout] 560 | .arg(content.to_owned()) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: use: `&content` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_to_owned [INFO] [stdout] = note: `#[warn(clippy::unnecessary_to_owned)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref which would be done by auto-deref [INFO] [stdout] --> src/screen.rs:351:32 [INFO] [stdout] | [INFO] [stdout] 351 | if RE.is_match(&*c) { [INFO] [stdout] | ^^^ help: try: `&c` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref which would be done by auto-deref [INFO] [stdout] --> src/screen.rs:352:38 [INFO] [stdout] | [INFO] [stdout] 352 | RE.captures_iter(&*c).nth(0).and_then(|n| { [INFO] [stdout] | ^^^ help: try: `&c` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this can be `std::io::Error::other(_)` [INFO] [stdout] --> src/screen.rs:365:24 [INFO] [stdout] | [INFO] [stdout] 365 | return Err(Error::new(ErrorKind::Other, "can't prompt in test")); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#io_other_error [INFO] [stdout] = note: `#[warn(clippy::io_other_error)]` on by default [INFO] [stdout] help: use `std::io::Error::other` [INFO] [stdout] | [INFO] [stdout] 365 - return Err(Error::new(ErrorKind::Other, "can't prompt in test")); [INFO] [stdout] 365 + return Err(Error::other("can't prompt in test")); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary use of `to_owned` [INFO] [stdout] --> src/screen.rs:569:26 [INFO] [stdout] | [INFO] [stdout] 569 | .arg(content.to_owned()) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: use: `&content` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_to_owned [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant pattern matching, consider using `is_ok()` [INFO] [stdout] --> src/screen.rs:588:16 [INFO] [stdout] | [INFO] [stdout] 588 | if let Ok(_) = remove_file(&path) { [INFO] [stdout] | -------^^^^^--------------------- help: try: `if remove_file(&path).is_ok()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern_matching [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this can be `std::io::Error::other(_)` [INFO] [stdout] --> src/screen.rs:386:24 [INFO] [stdout] | [INFO] [stdout] 386 | return Err(Error::new(ErrorKind::Other, "can't prompt in test")); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#io_other_error [INFO] [stdout] help: use `std::io::Error::other` [INFO] [stdout] | [INFO] [stdout] 386 - return Err(Error::new(ErrorKind::Other, "can't prompt in test")); [INFO] [stdout] 386 + return Err(Error::other("can't prompt in test")); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: usage of a legacy numeric constant [INFO] [stdout] --> src/screen.rs:638:21 [INFO] [stdout] | [INFO] [stdout] 638 | bottom: std::u16::MAX, // make this "bottomless" since we can paginate [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#legacy_numeric_constants [INFO] [stdout] help: use the associated constant instead [INFO] [stdout] | [INFO] [stdout] 638 - bottom: std::u16::MAX, // make this "bottomless" since we can paginate [INFO] [stdout] 638 + bottom: u16::MAX, // make this "bottomless" since we can paginate [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref which would be done by auto-deref [INFO] [stdout] --> src/screen.rs:432:50 [INFO] [stdout] | [INFO] [stdout] 432 | if let Ok(Some(mut query)) = self.prompt(&*prompt) { [INFO] [stdout] | ^^^^^^^^ help: try: `&prompt` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this creates an owned instance just for comparison [INFO] [stdout] --> src/screen.rs:433:25 [INFO] [stdout] | [INFO] [stdout] 433 | if query == "".to_owned() { [INFO] [stdout] | ^^^^^^^^^^^^^ help: try: `""` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cmp_owned [INFO] [stdout] = note: `#[warn(clippy::cmp_owned)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `.iter().nth()` on a `Vec` [INFO] [stdout] --> src/screen.rs:747:37 [INFO] [stdout] | [INFO] [stdout] 747 | if let Some(date) = re_matches::(&RE_DATE, &*n.content).iter().nth(0) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#iter_nth [INFO] [stdout] = note: `#[warn(clippy::iter_nth)]` on by default [INFO] [stdout] help: `get` is equivalent but more concise [INFO] [stdout] | [INFO] [stdout] 747 - if let Some(date) = re_matches::(&RE_DATE, &*n.content).iter().nth(0) { [INFO] [stdout] 747 + if let Some(date) = re_matches::(&RE_DATE, &*n.content).get(0) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref which would be done by auto-deref [INFO] [stdout] --> src/screen.rs:747:68 [INFO] [stdout] | [INFO] [stdout] 747 | if let Some(date) = re_matches::(&RE_DATE, &*n.content).iter().nth(0) { [INFO] [stdout] | ^^^^^^^^^^^ help: try: `&n.content` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref which would be done by auto-deref [INFO] [stdout] --> src/screen.rs:749:53 [INFO] [stdout] | [INFO] [stdout] 749 | n.content = RE_DATE.replace(&*n.content, "").trim_right().to_owned(); [INFO] [stdout] | ^^^^^^^^^^^ help: try: `&n.content` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: usage of a legacy numeric constant [INFO] [stdout] --> src/screen.rs:776:34 [INFO] [stdout] | [INFO] [stdout] 776 | (coords.0, min(coords.1, std::u16::MAX - self.view_y) + self.view_y) [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#legacy_numeric_constants [INFO] [stdout] help: use the associated constant instead [INFO] [stdout] | [INFO] [stdout] 776 - (coords.0, min(coords.1, std::u16::MAX - self.view_y) + self.view_y) [INFO] [stdout] 776 + (coords.0, min(coords.1, u16::MAX - self.view_y) + self.view_y) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: explicit call to `.into_iter()` in function argument accepting `IntoIterator` [INFO] [stdout] --> src/screen.rs:497:41 [INFO] [stdout] | [INFO] [stdout] 497 | chars.split("").skip(1).zip(nodes.into_iter()).collect(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] note: this parameter accepts any `IntoIterator`, so you don't need to call `.into_iter()` [INFO] [stdout] --> /rustc/3645249d79dfb136b5d8de3ce153d19d6698d92d/library/core/src/iter/traits/iterator.rs:629:11 [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_conversion [INFO] [stdout] = note: `#[warn(clippy::useless_conversion)]` on by default [INFO] [stdout] help: consider removing the `.into_iter()` [INFO] [stdout] | [INFO] [stdout] 497 - chars.split("").skip(1).zip(nodes.into_iter()).collect(); [INFO] [stdout] 497 + chars.split("").skip(1).zip(nodes).collect(); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `Option.and_then(|x| Some(y))`, which is more succinctly expressed as `map(|x| y)` [INFO] [stdout] --> src/screen.rs:796:24 [INFO] [stdout] | [INFO] [stdout] 796 | return self.with_node_mut_no_meta(node_id, |mut node| { [INFO] [stdout] | ________________________^ [INFO] [stdout] 797 | | trace!("selected node {} at {:?}", node_id, coords); [INFO] [stdout] 798 | | node.selected = true; [INFO] [stdout] 799 | | node_id [INFO] [stdout] ... | [INFO] [stdout] 804 | | Some(id) [INFO] [stdout] 805 | | }) [INFO] [stdout] | |______________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bind_instead_of_map [INFO] [stdout] = note: `#[warn(clippy::bind_instead_of_map)]` on by default [INFO] [stdout] help: use `map` instead [INFO] [stdout] | [INFO] [stdout] 800 ~ }).map(|id| { [INFO] [stdout] 801 | self.selected = Some(node_id); [INFO] [stdout] 802 | self.dragging_from = Some(coords); [INFO] [stdout] 803 | self.dragging_to = Some(coords); [INFO] [stdout] 804 ~ id [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary use of `to_owned` [INFO] [stdout] --> src/screen.rs:560:26 [INFO] [stdout] | [INFO] [stdout] 560 | .arg(content.to_owned()) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: use: `&content` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_to_owned [INFO] [stdout] = note: `#[warn(clippy::unnecessary_to_owned)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: dereferencing a tuple pattern where every element takes a reference [INFO] [stdout] --> src/screen.rs:836:33 [INFO] [stdout] | [INFO] [stdout] 836 | self.arrows.retain(|&(ref from, ref to)| { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrowed_reference [INFO] [stdout] = note: `#[warn(clippy::needless_borrowed_reference)]` on by default [INFO] [stdout] help: try removing the `&` and `ref` parts [INFO] [stdout] | [INFO] [stdout] 836 - self.arrows.retain(|&(ref from, ref to)| { [INFO] [stdout] 836 + self.arrows.retain(|(from, to)| { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary use of `to_owned` [INFO] [stdout] --> src/screen.rs:569:26 [INFO] [stdout] | [INFO] [stdout] 569 | .arg(content.to_owned()) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: use: `&content` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_to_owned [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant pattern matching, consider using `is_ok()` [INFO] [stdout] --> src/screen.rs:588:16 [INFO] [stdout] | [INFO] [stdout] 588 | if let Ok(_) = remove_file(&path) { [INFO] [stdout] | -------^^^^^--------------------- help: try: `if remove_file(&path).is_ok()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern_matching [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: usage of a legacy numeric constant [INFO] [stdout] --> src/screen.rs:638:21 [INFO] [stdout] | [INFO] [stdout] 638 | bottom: std::u16::MAX, // make this "bottomless" since we can paginate [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#legacy_numeric_constants [INFO] [stdout] help: use the associated constant instead [INFO] [stdout] | [INFO] [stdout] 638 - bottom: std::u16::MAX, // make this "bottomless" since we can paginate [INFO] [stdout] 638 + bottom: u16::MAX, // make this "bottomless" since we can paginate [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant pattern matching, consider using `is_none()` [INFO] [stdout] --> src/screen.rs:1157:16 [INFO] [stdout] | [INFO] [stdout] 1157 | if let None = self.drawn_at(node_id) { [INFO] [stdout] | -------^^^^------------------------- help: try: `if self.drawn_at(node_id).is_none()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern_matching [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `.iter().nth()` on a `Vec` [INFO] [stdout] --> src/screen.rs:747:37 [INFO] [stdout] | [INFO] [stdout] 747 | if let Some(date) = re_matches::(&RE_DATE, &*n.content).iter().nth(0) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#iter_nth [INFO] [stdout] = note: `#[warn(clippy::iter_nth)]` on by default [INFO] [stdout] help: `get` is equivalent but more concise [INFO] [stdout] | [INFO] [stdout] 747 - if let Some(date) = re_matches::(&RE_DATE, &*n.content).iter().nth(0) { [INFO] [stdout] 747 + if let Some(date) = re_matches::(&RE_DATE, &*n.content).get(0) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref which would be done by auto-deref [INFO] [stdout] --> src/screen.rs:747:68 [INFO] [stdout] | [INFO] [stdout] 747 | if let Some(date) = re_matches::(&RE_DATE, &*n.content).iter().nth(0) { [INFO] [stdout] | ^^^^^^^^^^^ help: try: `&n.content` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref which would be done by auto-deref [INFO] [stdout] --> src/screen.rs:749:53 [INFO] [stdout] | [INFO] [stdout] 749 | n.content = RE_DATE.replace(&*n.content, "").trim_right().to_owned(); [INFO] [stdout] | ^^^^^^^^^^^ help: try: `&n.content` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: usage of a legacy numeric constant [INFO] [stdout] --> src/screen.rs:776:34 [INFO] [stdout] | [INFO] [stdout] 776 | (coords.0, min(coords.1, std::u16::MAX - self.view_y) + self.view_y) [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#legacy_numeric_constants [INFO] [stdout] help: use the associated constant instead [INFO] [stdout] | [INFO] [stdout] 776 - (coords.0, min(coords.1, std::u16::MAX - self.view_y) + self.view_y) [INFO] [stdout] 776 + (coords.0, min(coords.1, u16::MAX - self.view_y) + self.view_y) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `Option.and_then(|x| Some(y))`, which is more succinctly expressed as `map(|x| y)` [INFO] [stdout] --> src/screen.rs:796:24 [INFO] [stdout] | [INFO] [stdout] 796 | return self.with_node_mut_no_meta(node_id, |mut node| { [INFO] [stdout] | ________________________^ [INFO] [stdout] 797 | | trace!("selected node {} at {:?}", node_id, coords); [INFO] [stdout] 798 | | node.selected = true; [INFO] [stdout] 799 | | node_id [INFO] [stdout] ... | [INFO] [stdout] 804 | | Some(id) [INFO] [stdout] 805 | | }) [INFO] [stdout] | |______________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bind_instead_of_map [INFO] [stdout] = note: `#[warn(clippy::bind_instead_of_map)]` on by default [INFO] [stdout] help: use `map` instead [INFO] [stdout] | [INFO] [stdout] 800 ~ }).map(|id| { [INFO] [stdout] 801 | self.selected = Some(node_id); [INFO] [stdout] 802 | self.dragging_from = Some(coords); [INFO] [stdout] 803 | self.dragging_to = Some(coords); [INFO] [stdout] 804 ~ id [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: dereferencing a tuple pattern where every element takes a reference [INFO] [stdout] --> src/screen.rs:836:33 [INFO] [stdout] | [INFO] [stdout] 836 | self.arrows.retain(|&(ref from, ref to)| { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrowed_reference [INFO] [stdout] = note: `#[warn(clippy::needless_borrowed_reference)]` on by default [INFO] [stdout] help: try removing the `&` and `ref` parts [INFO] [stdout] | [INFO] [stdout] 836 - self.arrows.retain(|&(ref from, ref to)| { [INFO] [stdout] 836 + self.arrows.retain(|(from, to)| { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: dereferencing a tuple pattern where every element takes a reference [INFO] [stdout] --> src/screen.rs:1460:33 [INFO] [stdout] | [INFO] [stdout] 1460 | node_costs.sort_by_key(|&(_, ref cost)| cost.clone()); [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrowed_reference [INFO] [stdout] help: try removing the `&` and `ref` parts [INFO] [stdout] | [INFO] [stdout] 1460 - node_costs.sort_by_key(|&(_, ref cost)| cost.clone()); [INFO] [stdout] 1460 + node_costs.sort_by_key(|(_, cost)| cost.clone()); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `.iter().nth()` on a `Vec` [INFO] [stdout] --> src/screen.rs:1461:9 [INFO] [stdout] | [INFO] [stdout] 1461 | node_costs.iter().nth(0).map(|&(&id, _)| id) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#iter_nth [INFO] [stdout] help: `get` is equivalent but more concise [INFO] [stdout] | [INFO] [stdout] 1461 - node_costs.iter().nth(0).map(|&(&id, _)| id) [INFO] [stdout] 1461 + node_costs.get(0).map(|&(&id, _)| id) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `map(f)` on an `Option` value where `f` is a closure that returns the unit type `()` [INFO] [stdout] --> src/screen.rs:1473:13 [INFO] [stdout] | [INFO] [stdout] 1473 | / self.with_node_mut_no_meta(node_id, |mut node| node.selected = true) [INFO] [stdout] 1474 | | .map(|_| self.selected = Some(node_id)); [INFO] [stdout] | |_______________________________________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#option_map_unit_fn [INFO] [stdout] = note: `#[warn(clippy::option_map_unit_fn)]` on by default [INFO] [stdout] help: use `if let` instead [INFO] [stdout] | [INFO] [stdout] 1473 - self.with_node_mut_no_meta(node_id, |mut node| node.selected = true) [INFO] [stdout] 1474 - .map(|_| self.selected = Some(node_id)); [INFO] [stdout] 1473 + if let Some(_) = self.with_node_mut_no_meta(node_id, |mut node| node.selected = true) { ... } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: dereferencing a tuple pattern where every element takes a reference [INFO] [stdout] --> src/screen.rs:1547:13 [INFO] [stdout] | [INFO] [stdout] 1547 | for &(ref a, ref b) in &self.arrows { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrowed_reference [INFO] [stdout] help: try removing the `&` and `ref` parts [INFO] [stdout] | [INFO] [stdout] 1547 - for &(ref a, ref b) in &self.arrows { [INFO] [stdout] 1547 + for (a, b) in &self.arrows { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary use of `get(a).is_some()` [INFO] [stdout] --> src/screen.rs:1548:32 [INFO] [stdout] | [INFO] [stdout] 1548 | assert!(self.nodes.get(a).is_some()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: replace it with: `contains_key(a)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_get_then_check [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary use of `get(b).is_some()` [INFO] [stdout] --> src/screen.rs:1549:32 [INFO] [stdout] | [INFO] [stdout] 1549 | assert!(self.nodes.get(b).is_some()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: replace it with: `contains_key(b)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_get_then_check [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant pattern matching, consider using `is_ok()` [INFO] [stdout] --> src/screen.rs:1560:20 [INFO] [stdout] | [INFO] [stdout] 1560 | if let Ok(_) = remove_file(&tmp_path) { [INFO] [stdout] | -------^^^^^------------------------- help: try: `if remove_file(&tmp_path).is_ok()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern_matching [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref which would be done by auto-deref [INFO] [stdout] --> src/screen.rs:1564:25 [INFO] [stdout] | [INFO] [stdout] 1564 | f.write_all(&*data).unwrap(); [INFO] [stdout] | ^^^^^^ help: try: `&data` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary use of `get(&from).is_some()` [INFO] [stdout] --> src/screen.rs:1595:27 [INFO] [stdout] | [INFO] [stdout] 1595 | if self.nodes.get(&from).is_some() && self.nodes.get(&to).is_some() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: replace it with: `contains_key(&from)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_get_then_check [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary use of `get(&to).is_some()` [INFO] [stdout] --> src/screen.rs:1595:62 [INFO] [stdout] | [INFO] [stdout] 1595 | if self.nodes.get(&from).is_some() && self.nodes.get(&to).is_some() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `contains_key(&to)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_get_then_check [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/screen.rs:1603:25 [INFO] [stdout] | [INFO] [stdout] 1603 | false || acc [INFO] [stdout] | ^^^^^^^^^^^^ help: try: `acc` [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: dereferencing a tuple pattern where every element takes a reference [INFO] [stdout] --> src/screen.rs:1598:27 [INFO] [stdout] | [INFO] [stdout] 1598 | |acc, &(ref nl1, ref nl2)| if nl1 == &from && [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrowed_reference [INFO] [stdout] help: try removing the `&` and `ref` parts [INFO] [stdout] | [INFO] [stdout] 1598 - |acc, &(ref nl1, ref nl2)| if nl1 == &from && [INFO] [stdout] 1598 + |acc, (nl1, nl2)| if nl1 == &from && [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: usage of a legacy numeric constant [INFO] [stdout] --> src/screen.rs:1649:33 [INFO] [stdout] | [INFO] [stdout] 1649 | self.ephemeral_max_id = std::u64::MAX; [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#legacy_numeric_constants [INFO] [stdout] help: use the associated constant instead [INFO] [stdout] | [INFO] [stdout] 1649 - self.ephemeral_max_id = std::u64::MAX; [INFO] [stdout] 1649 + self.ephemeral_max_id = u64::MAX; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: dereferencing a tuple pattern where every element takes a reference [INFO] [stdout] --> src/screen.rs:1687:13 [INFO] [stdout] | [INFO] [stdout] 1687 | for &(ref from, ref to) in &self.arrows { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrowed_reference [INFO] [stdout] help: try removing the `&` and `ref` parts [INFO] [stdout] | [INFO] [stdout] 1687 - for &(ref from, ref to) in &self.arrows { [INFO] [stdout] 1687 + for (from, to) in &self.arrows { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant pattern matching, consider using `is_none()` [INFO] [stdout] --> src/screen.rs:1157:16 [INFO] [stdout] | [INFO] [stdout] 1157 | if let None = self.drawn_at(node_id) { [INFO] [stdout] | -------^^^^------------------------- help: try: `if self.drawn_at(node_id).is_none()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern_matching [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: comparison to empty slice [INFO] [stdout] --> src/screen.rs:1809:16 [INFO] [stdout] | [INFO] [stdout] 1809 | if prefix != "" { [INFO] [stdout] | ^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!prefix.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#comparison_to_empty [INFO] [stdout] = note: `#[warn(clippy::comparison_to_empty)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: comparison to empty slice [INFO] [stdout] --> src/screen.rs:1827:34 [INFO] [stdout] | [INFO] [stdout] 1827 | if !node.selected && prefix != "" { [INFO] [stdout] | ^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!prefix.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#comparison_to_empty [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `usize` which implements the `Copy` trait [INFO] [stdout] --> src/screen.rs:1838:57 [INFO] [stdout] | [INFO] [stdout] 1838 | self.grapheme_cache.insert(node.id, vg.clone()); [INFO] [stdout] | ^^^^^^^^^^ help: try removing the `clone` call: `vg` [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: using `clone` on type `usize` which implements the `Copy` trait [INFO] [stdout] --> src/screen.rs:1858:53 [INFO] [stdout] | [INFO] [stdout] 1858 | self.grapheme_cache.insert(node.id, vg.clone()); [INFO] [stdout] | ^^^^^^^^^^ help: try removing the `clone` call: `vg` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: comparison to empty slice [INFO] [stdout] --> src/screen.rs:1875:19 [INFO] [stdout] | [INFO] [stdout] 1875 | } else if prefix == "" { [INFO] [stdout] | ^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `prefix.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#comparison_to_empty [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: calling `push_str()` using a single-character string literal [INFO] [stdout] --> src/screen.rs:1876:13 [INFO] [stdout] | [INFO] [stdout] 1876 | prefix.push_str(" "); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: consider using `push` with a character literal: `prefix.push(' ')` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_add_str [INFO] [stdout] = note: `#[warn(clippy::single_char_add_str)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: dereferencing a tuple pattern where every element takes a reference [INFO] [stdout] --> src/screen.rs:1460:33 [INFO] [stdout] | [INFO] [stdout] 1460 | node_costs.sort_by_key(|&(_, ref cost)| cost.clone()); [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrowed_reference [INFO] [stdout] help: try removing the `&` and `ref` parts [INFO] [stdout] | [INFO] [stdout] 1460 - node_costs.sort_by_key(|&(_, ref cost)| cost.clone()); [INFO] [stdout] 1460 + node_costs.sort_by_key(|(_, cost)| cost.clone()); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `.iter().nth()` on a `Vec` [INFO] [stdout] --> src/screen.rs:1461:9 [INFO] [stdout] | [INFO] [stdout] 1461 | node_costs.iter().nth(0).map(|&(&id, _)| id) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#iter_nth [INFO] [stdout] help: `get` is equivalent but more concise [INFO] [stdout] | [INFO] [stdout] 1461 - node_costs.iter().nth(0).map(|&(&id, _)| id) [INFO] [stdout] 1461 + node_costs.get(0).map(|&(&id, _)| id) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `map(f)` on an `Option` value where `f` is a closure that returns the unit type `()` [INFO] [stdout] --> src/screen.rs:1473:13 [INFO] [stdout] | [INFO] [stdout] 1473 | / self.with_node_mut_no_meta(node_id, |mut node| node.selected = true) [INFO] [stdout] 1474 | | .map(|_| self.selected = Some(node_id)); [INFO] [stdout] | |_______________________________________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#option_map_unit_fn [INFO] [stdout] = note: `#[warn(clippy::option_map_unit_fn)]` on by default [INFO] [stdout] help: use `if let` instead [INFO] [stdout] | [INFO] [stdout] 1473 - self.with_node_mut_no_meta(node_id, |mut node| node.selected = true) [INFO] [stdout] 1474 - .map(|_| self.selected = Some(node_id)); [INFO] [stdout] 1473 + if let Some(_) = self.with_node_mut_no_meta(node_id, |mut node| node.selected = true) { ... } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref which would be done by auto-deref [INFO] [stdout] --> src/screen.rs:1967:30 [INFO] [stdout] | [INFO] [stdout] 1967 | header_text.push_str(&*plot_line); [INFO] [stdout] | ^^^^^^^^^^^ help: try: `&plot_line` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: dereferencing a tuple pattern where every element takes a reference [INFO] [stdout] --> src/screen.rs:1547:13 [INFO] [stdout] | [INFO] [stdout] 1547 | for &(ref a, ref b) in &self.arrows { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrowed_reference [INFO] [stdout] help: try removing the `&` and `ref` parts [INFO] [stdout] | [INFO] [stdout] 1547 - for &(ref a, ref b) in &self.arrows { [INFO] [stdout] 1547 + for (a, b) in &self.arrows { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary use of `get(a).is_some()` [INFO] [stdout] --> src/screen.rs:1548:32 [INFO] [stdout] | [INFO] [stdout] 1548 | assert!(self.nodes.get(a).is_some()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: replace it with: `contains_key(a)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_get_then_check [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary use of `get(b).is_some()` [INFO] [stdout] --> src/screen.rs:1549:32 [INFO] [stdout] | [INFO] [stdout] 1549 | assert!(self.nodes.get(b).is_some()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: replace it with: `contains_key(b)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_get_then_check [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant pattern matching, consider using `is_ok()` [INFO] [stdout] --> src/screen.rs:1560:20 [INFO] [stdout] | [INFO] [stdout] 1560 | if let Ok(_) = remove_file(&tmp_path) { [INFO] [stdout] | -------^^^^^------------------------- help: try: `if remove_file(&tmp_path).is_ok()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern_matching [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref which would be done by auto-deref [INFO] [stdout] --> src/screen.rs:1564:25 [INFO] [stdout] | [INFO] [stdout] 1564 | f.write_all(&*data).unwrap(); [INFO] [stdout] | ^^^^^^ help: try: `&data` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/screen.rs:2062:21 [INFO] [stdout] | [INFO] [stdout] 2062 | if (!(neighbor.0 >= self.dims.0) && !(neighbor.1 >= self.dims.1 + self.view_y) && [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `(neighbor.0 < self.dims.0)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/screen.rs:2062:53 [INFO] [stdout] | [INFO] [stdout] 2062 | if (!(neighbor.0 >= self.dims.0) && !(neighbor.1 >= self.dims.1 + self.view_y) && [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `(neighbor.1 < self.dims.1 + self.view_y)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary use of `get(&from).is_some()` [INFO] [stdout] --> src/screen.rs:1595:27 [INFO] [stdout] | [INFO] [stdout] 1595 | if self.nodes.get(&from).is_some() && self.nodes.get(&to).is_some() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: replace it with: `contains_key(&from)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_get_then_check [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary use of `get(&to).is_some()` [INFO] [stdout] --> src/screen.rs:1595:62 [INFO] [stdout] | [INFO] [stdout] 1595 | if self.nodes.get(&from).is_some() && self.nodes.get(&to).is_some() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `contains_key(&to)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_get_then_check [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/screen.rs:1603:25 [INFO] [stdout] | [INFO] [stdout] 1603 | false || acc [INFO] [stdout] | ^^^^^^^^^^^^ help: try: `acc` [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: dereferencing a tuple pattern where every element takes a reference [INFO] [stdout] --> src/screen.rs:1598:27 [INFO] [stdout] | [INFO] [stdout] 1598 | |acc, &(ref nl1, ref nl2)| if nl1 == &from && [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrowed_reference [INFO] [stdout] help: try removing the `&` and `ref` parts [INFO] [stdout] | [INFO] [stdout] 1598 - |acc, &(ref nl1, ref nl2)| if nl1 == &from && [INFO] [stdout] 1598 + |acc, (nl1, nl2)| if nl1 == &from && [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: usage of a legacy numeric constant [INFO] [stdout] --> src/screen.rs:2066:29 [INFO] [stdout] | [INFO] [stdout] 2066 | let c = std::u16::MAX - cost(neighbor, dest); [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#legacy_numeric_constants [INFO] [stdout] help: use the associated constant instead [INFO] [stdout] | [INFO] [stdout] 2066 - let c = std::u16::MAX - cost(neighbor, dest); [INFO] [stdout] 2066 + let c = u16::MAX - cost(neighbor, dest); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: usage of a legacy numeric constant [INFO] [stdout] --> src/screen.rs:1649:33 [INFO] [stdout] | [INFO] [stdout] 1649 | self.ephemeral_max_id = std::u64::MAX; [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#legacy_numeric_constants [INFO] [stdout] help: use the associated constant instead [INFO] [stdout] | [INFO] [stdout] 1649 - self.ephemeral_max_id = std::u64::MAX; [INFO] [stdout] 1649 + self.ephemeral_max_id = u64::MAX; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: dereferencing a tuple pattern where every element takes a reference [INFO] [stdout] --> src/screen.rs:1687:13 [INFO] [stdout] | [INFO] [stdout] 1687 | for &(ref from, ref to) in &self.arrows { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrowed_reference [INFO] [stdout] help: try removing the `&` and `ref` parts [INFO] [stdout] | [INFO] [stdout] 1687 - for &(ref from, ref to) in &self.arrows { [INFO] [stdout] 1687 + for (from, to) in &self.arrows { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of `Option::filter` [INFO] [stdout] --> src/screen.rs:2100:13 [INFO] [stdout] | [INFO] [stdout] 2100 | / if let Some(t) = f { [INFO] [stdout] 2101 | | if t > last_week { Some(t) } else { None } [INFO] [stdout] 2102 | | } else { [INFO] [stdout] 2103 | | None [INFO] [stdout] 2104 | | } [INFO] [stdout] | |_____________^ help: try: `f.filter(|&t| t > last_week)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_filter [INFO] [stdout] = note: `#[warn(clippy::manual_filter)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: iterating on a map's values [INFO] [stdout] --> src/screen.rs:2120:35 [INFO] [stdout] | [INFO] [stdout] 2120 | let week_line: Vec = counts.into_iter().map(|(_, v)| v).collect(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `counts.into_values()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#iter_kv_map [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: comparison to empty slice [INFO] [stdout] --> src/screen.rs:1809:16 [INFO] [stdout] | [INFO] [stdout] 1809 | if prefix != "" { [INFO] [stdout] | ^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!prefix.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#comparison_to_empty [INFO] [stdout] = note: `#[warn(clippy::comparison_to_empty)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: comparison to empty slice [INFO] [stdout] --> src/screen.rs:1827:34 [INFO] [stdout] | [INFO] [stdout] 1827 | if !node.selected && prefix != "" { [INFO] [stdout] | ^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!prefix.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#comparison_to_empty [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref which would be done by auto-deref [INFO] [stdout] --> src/screen.rs:2152:54 [INFO] [stdout] | [INFO] [stdout] 2152 | for tag in &re_matches::(&RE_TAGGED, &*node.content) { [INFO] [stdout] | ^^^^^^^^^^^^^^ help: try: `&node.content` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `usize` which implements the `Copy` trait [INFO] [stdout] --> src/screen.rs:1838:57 [INFO] [stdout] | [INFO] [stdout] 1838 | self.grapheme_cache.insert(node.id, vg.clone()); [INFO] [stdout] | ^^^^^^^^^^ help: try removing the `clone` call: `vg` [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 which would be done by auto-deref [INFO] [stdout] --> src/screen.rs:2168:29 [INFO] [stdout] | [INFO] [stdout] 2168 | if RE_DONE.is_match(&*node.content) { [INFO] [stdout] | ^^^^^^^^^^^^^^ help: try: `&node.content` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `usize` which implements the `Copy` trait [INFO] [stdout] --> src/screen.rs:1858:53 [INFO] [stdout] | [INFO] [stdout] 1858 | self.grapheme_cache.insert(node.id, vg.clone()); [INFO] [stdout] | ^^^^^^^^^^ help: try removing the `clone` call: `vg` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref which would be done by auto-deref [INFO] [stdout] --> src/screen.rs:2176:29 [INFO] [stdout] | [INFO] [stdout] 2176 | if RE_OPEN.is_match(&*node.content) { [INFO] [stdout] | ^^^^^^^^^^^^^^ help: try: `&node.content` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `.iter().nth()` on a `Vec` [INFO] [stdout] --> src/screen.rs:2184:30 [INFO] [stdout] | [INFO] [stdout] 2184 | if let Some(since) = re_matches::(&RE_SINCE, &*node.content).iter().nth( [INFO] [stdout] | ______________________________^ [INFO] [stdout] 2185 | | 0, [INFO] [stdout] 2186 | | ) [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#iter_nth [INFO] [stdout] help: `get` is equivalent but more concise [INFO] [stdout] | [INFO] [stdout] 2184 - if let Some(since) = re_matches::(&RE_SINCE, &*node.content).iter().nth( [INFO] [stdout] 2184 + if let Some(since) = re_matches::(&RE_SINCE, &*node.content).get( [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref which would be done by auto-deref [INFO] [stdout] --> src/screen.rs:2184:62 [INFO] [stdout] | [INFO] [stdout] 2184 | if let Some(since) = re_matches::(&RE_SINCE, &*node.content).iter().nth( [INFO] [stdout] | ^^^^^^^^^^^^^^ help: try: `&node.content` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: comparison to empty slice [INFO] [stdout] --> src/screen.rs:1875:19 [INFO] [stdout] | [INFO] [stdout] 1875 | } else if prefix == "" { [INFO] [stdout] | ^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `prefix.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#comparison_to_empty [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: calling `push_str()` using a single-character string literal [INFO] [stdout] --> src/screen.rs:1876:13 [INFO] [stdout] | [INFO] [stdout] 1876 | prefix.push_str(" "); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: consider using `push` with a character literal: `prefix.push(' ')` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_add_str [INFO] [stdout] = note: `#[warn(clippy::single_char_add_str)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `.iter().nth()` on a `Vec` [INFO] [stdout] --> src/screen.rs:2202:30 [INFO] [stdout] | [INFO] [stdout] 2202 | if let Some(until) = re_matches::(&RE_UNTIL, &*node.content).iter().nth( [INFO] [stdout] | ______________________________^ [INFO] [stdout] 2203 | | 0, [INFO] [stdout] 2204 | | ) [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#iter_nth [INFO] [stdout] help: `get` is equivalent but more concise [INFO] [stdout] | [INFO] [stdout] 2202 - if let Some(until) = re_matches::(&RE_UNTIL, &*node.content).iter().nth( [INFO] [stdout] 2202 + if let Some(until) = re_matches::(&RE_UNTIL, &*node.content).get( [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref which would be done by auto-deref [INFO] [stdout] --> src/screen.rs:2202:62 [INFO] [stdout] | [INFO] [stdout] 2202 | if let Some(until) = re_matches::(&RE_UNTIL, &*node.content).iter().nth( [INFO] [stdout] | ^^^^^^^^^^^^^^ help: try: `&node.content` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref which would be done by auto-deref [INFO] [stdout] --> src/screen.rs:2220:28 [INFO] [stdout] | [INFO] [stdout] 2220 | if RE_REV.is_match(&*node.content) { [INFO] [stdout] | ^^^^^^^^^^^^^^ help: try: `&node.content` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `.iter().nth()` on a `Vec` [INFO] [stdout] --> src/screen.rs:2223:31 [INFO] [stdout] | [INFO] [stdout] 2223 | if let Some(&limit) = re_matches(&RE_LIMIT, &*node.content).iter().nth(0) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#iter_nth [INFO] [stdout] help: `get` is equivalent but more concise [INFO] [stdout] | [INFO] [stdout] 2223 - if let Some(&limit) = re_matches(&RE_LIMIT, &*node.content).iter().nth(0) { [INFO] [stdout] 2223 + if let Some(&limit) = re_matches(&RE_LIMIT, &*node.content).get(0) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref which would be done by auto-deref [INFO] [stdout] --> src/screen.rs:2223:53 [INFO] [stdout] | [INFO] [stdout] 2223 | if let Some(&limit) = re_matches(&RE_LIMIT, &*node.content).iter().nth(0) { [INFO] [stdout] | ^^^^^^^^^^^^^^ help: try: `&node.content` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref which would be done by auto-deref [INFO] [stdout] --> src/screen.rs:2227:47 [INFO] [stdout] | [INFO] [stdout] 2227 | let re_n = re_matches::(&RE_N, &*node.content); [INFO] [stdout] | ^^^^^^^^^^^^^^ help: try: `&node.content` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `.iter().nth()` on a `Vec` [INFO] [stdout] --> src/screen.rs:2228:21 [INFO] [stdout] | [INFO] [stdout] 2228 | let n_opt = re_n.iter().nth(0); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#iter_nth [INFO] [stdout] help: `get` is equivalent but more concise [INFO] [stdout] | [INFO] [stdout] 2228 - let n_opt = re_n.iter().nth(0); [INFO] [stdout] 2228 + let n_opt = re_n.get(0); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `.iter().nth()` on a `Vec` [INFO] [stdout] --> src/screen.rs:2229:29 [INFO] [stdout] | [INFO] [stdout] 2229 | if let Some(plot) = re_matches::(&RE_PLOT, &*node.content).iter().nth(0) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#iter_nth [INFO] [stdout] help: `get` is equivalent but more concise [INFO] [stdout] | [INFO] [stdout] 2229 - if let Some(plot) = re_matches::(&RE_PLOT, &*node.content).iter().nth(0) { [INFO] [stdout] 2229 + if let Some(plot) = re_matches::(&RE_PLOT, &*node.content).get(0) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref which would be done by auto-deref [INFO] [stdout] --> src/screen.rs:2229:60 [INFO] [stdout] | [INFO] [stdout] 2229 | if let Some(plot) = re_matches::(&RE_PLOT, &*node.content).iter().nth(0) { [INFO] [stdout] | ^^^^^^^^^^^^^^ help: try: `&node.content` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary closure used to substitute value for `Option::None` [INFO] [stdout] --> src/screen.rs:2233:25 [INFO] [stdout] | [INFO] [stdout] 2233 | let until = until_opt.unwrap_or_else(|| now); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_lazy_evaluations [INFO] [stdout] = note: `#[warn(clippy::unnecessary_lazy_evaluations)]` on by default [INFO] [stdout] help: use `unwrap_or` instead [INFO] [stdout] | [INFO] [stdout] 2233 - let until = until_opt.unwrap_or_else(|| now); [INFO] [stdout] 2233 + let until = until_opt.unwrap_or(now); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref which would be done by auto-deref [INFO] [stdout] --> src/screen.rs:1967:30 [INFO] [stdout] | [INFO] [stdout] 1967 | header_text.push_str(&*plot_line); [INFO] [stdout] | ^^^^^^^^^^^ help: try: `&plot_line` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/screen.rs:2062:21 [INFO] [stdout] | [INFO] [stdout] 2062 | if (!(neighbor.0 >= self.dims.0) && !(neighbor.1 >= self.dims.1 + self.view_y) && [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `(neighbor.0 < self.dims.0)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/screen.rs:2062:53 [INFO] [stdout] | [INFO] [stdout] 2062 | if (!(neighbor.0 >= self.dims.0) && !(neighbor.1 >= self.dims.1 + self.view_y) && [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `(neighbor.1 < self.dims.1 + self.view_y)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: usage of a legacy numeric constant [INFO] [stdout] --> src/screen.rs:2066:29 [INFO] [stdout] | [INFO] [stdout] 2066 | let c = std::u16::MAX - cost(neighbor, dest); [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#legacy_numeric_constants [INFO] [stdout] help: use the associated constant instead [INFO] [stdout] | [INFO] [stdout] 2066 - let c = std::u16::MAX - cost(neighbor, dest); [INFO] [stdout] 2066 + let c = u16::MAX - cost(neighbor, dest); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of `Option::filter` [INFO] [stdout] --> src/screen.rs:2100:13 [INFO] [stdout] | [INFO] [stdout] 2100 | / if let Some(t) = f { [INFO] [stdout] 2101 | | if t > last_week { Some(t) } else { None } [INFO] [stdout] 2102 | | } else { [INFO] [stdout] 2103 | | None [INFO] [stdout] 2104 | | } [INFO] [stdout] | |_____________^ help: try: `f.filter(|&t| t > last_week)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_filter [INFO] [stdout] = note: `#[warn(clippy::manual_filter)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: iterating on a map's values [INFO] [stdout] --> src/screen.rs:2120:35 [INFO] [stdout] | [INFO] [stdout] 2120 | let week_line: Vec = counts.into_iter().map(|(_, v)| v).collect(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `counts.into_values()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#iter_kv_map [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting to the same type is unnecessary (`i64` -> `i64`) [INFO] [stdout] --> src/plot.rs:13:12 [INFO] [stdout] | [INFO] [stdout] 13 | if *max as i64 == 0 { [INFO] [stdout] | ^^^^^^^^^^^ help: try: `*max` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] = note: `#[warn(clippy::unnecessary_cast)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `i64` which implements the `Copy` trait [INFO] [stdout] --> src/plot.rs:33:17 [INFO] [stdout] | [INFO] [stdout] 33 | let step = (end.clone() - start.clone()) / bars as i64; [INFO] [stdout] | ^^^^^^^^^^^ help: try removing the `clone` call: `end` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `i64` which implements the `Copy` trait [INFO] [stdout] --> src/plot.rs:33:31 [INFO] [stdout] | [INFO] [stdout] 33 | let step = (end.clone() - start.clone()) / bars as i64; [INFO] [stdout] | ^^^^^^^^^^^^^ help: try removing the `clone` call: `start` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref on an immutable reference [INFO] [stdout] --> src/colors.rs:14:13 [INFO] [stdout] | [INFO] [stdout] 14 | let c = &*rand::thread_rng().choose(&*colors).unwrap(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [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] help: if you would like to reborrow, try removing `&*` [INFO] [stdout] | [INFO] [stdout] 14 - let c = &*rand::thread_rng().choose(&*colors).unwrap(); [INFO] [stdout] 14 + let c = rand::thread_rng().choose(&*colors).unwrap(); [INFO] [stdout] | [INFO] [stdout] help: if you would like to deref, try using `&**` [INFO] [stdout] | [INFO] [stdout] 14 | let c = &**rand::thread_rng().choose(&*colors).unwrap(); [INFO] [stdout] | + [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref which would be done by auto-deref [INFO] [stdout] --> src/colors.rs:14:41 [INFO] [stdout] | [INFO] [stdout] 14 | let c = &*rand::thread_rng().choose(&*colors).unwrap(); [INFO] [stdout] | ^^^^^^^^ help: try: `&colors` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref which would be done by auto-deref [INFO] [stdout] --> src/screen.rs:2152:54 [INFO] [stdout] | [INFO] [stdout] 2152 | for tag in &re_matches::(&RE_TAGGED, &*node.content) { [INFO] [stdout] | ^^^^^^^^^^^^^^ help: try: `&node.content` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref which would be done by auto-deref [INFO] [stdout] --> src/screen.rs:2168:29 [INFO] [stdout] | [INFO] [stdout] 2168 | if RE_DONE.is_match(&*node.content) { [INFO] [stdout] | ^^^^^^^^^^^^^^ help: try: `&node.content` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref which would be done by auto-deref [INFO] [stdout] --> src/screen.rs:2176:29 [INFO] [stdout] | [INFO] [stdout] 2176 | if RE_OPEN.is_match(&*node.content) { [INFO] [stdout] | ^^^^^^^^^^^^^^ help: try: `&node.content` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `.iter().nth()` on a `Vec` [INFO] [stdout] --> src/screen.rs:2184:30 [INFO] [stdout] | [INFO] [stdout] 2184 | if let Some(since) = re_matches::(&RE_SINCE, &*node.content).iter().nth( [INFO] [stdout] | ______________________________^ [INFO] [stdout] 2185 | | 0, [INFO] [stdout] 2186 | | ) [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#iter_nth [INFO] [stdout] help: `get` is equivalent but more concise [INFO] [stdout] | [INFO] [stdout] 2184 - if let Some(since) = re_matches::(&RE_SINCE, &*node.content).iter().nth( [INFO] [stdout] 2184 + if let Some(since) = re_matches::(&RE_SINCE, &*node.content).get( [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref which would be done by auto-deref [INFO] [stdout] --> src/screen.rs:2184:62 [INFO] [stdout] | [INFO] [stdout] 2184 | if let Some(since) = re_matches::(&RE_SINCE, &*node.content).iter().nth( [INFO] [stdout] | ^^^^^^^^^^^^^^ help: try: `&node.content` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `.iter().nth()` on a `Vec` [INFO] [stdout] --> src/screen.rs:2202:30 [INFO] [stdout] | [INFO] [stdout] 2202 | if let Some(until) = re_matches::(&RE_UNTIL, &*node.content).iter().nth( [INFO] [stdout] | ______________________________^ [INFO] [stdout] 2203 | | 0, [INFO] [stdout] 2204 | | ) [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#iter_nth [INFO] [stdout] help: `get` is equivalent but more concise [INFO] [stdout] | [INFO] [stdout] 2202 - if let Some(until) = re_matches::(&RE_UNTIL, &*node.content).iter().nth( [INFO] [stdout] 2202 + if let Some(until) = re_matches::(&RE_UNTIL, &*node.content).get( [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref which would be done by auto-deref [INFO] [stdout] --> src/screen.rs:2202:62 [INFO] [stdout] | [INFO] [stdout] 2202 | if let Some(until) = re_matches::(&RE_UNTIL, &*node.content).iter().nth( [INFO] [stdout] | ^^^^^^^^^^^^^^ help: try: `&node.content` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `0 as *const _` detected [INFO] [stdout] --> src/pb/data_model.rs:44:18 [INFO] [stdout] | [INFO] [stdout] 44 | ptr: 0 as *const Tag, [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: try: `std::ptr::null::()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#zero_ptr [INFO] [stdout] = note: `#[warn(clippy::zero_ptr)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant closure [INFO] [stdout] --> src/pb/data_model.rs:77:40 [INFO] [stdout] | [INFO] [stdout] 77 | self.key.take().unwrap_or_else(|| ::std::string::String::new()) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace the closure with the associated function itself: `::std::string::String::new` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref which would be done by auto-deref [INFO] [stdout] --> src/screen.rs:2220:28 [INFO] [stdout] | [INFO] [stdout] 2220 | if RE_REV.is_match(&*node.content) { [INFO] [stdout] | ^^^^^^^^^^^^^^ help: try: `&node.content` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/pb/data_model.rs:82:24 [INFO] [stdout] | [INFO] [stdout] 82 | Some(v) => &v, [INFO] [stdout] | ^^ help: change this to: `v` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `.iter().nth()` on a `Vec` [INFO] [stdout] --> src/screen.rs:2223:31 [INFO] [stdout] | [INFO] [stdout] 2223 | if let Some(&limit) = re_matches(&RE_LIMIT, &*node.content).iter().nth(0) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#iter_nth [INFO] [stdout] help: `get` is equivalent but more concise [INFO] [stdout] | [INFO] [stdout] 2223 - if let Some(&limit) = re_matches(&RE_LIMIT, &*node.content).iter().nth(0) { [INFO] [stdout] 2223 + if let Some(&limit) = re_matches(&RE_LIMIT, &*node.content).get(0) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant closure [INFO] [stdout] --> src/pb/data_model.rs:121:42 [INFO] [stdout] | [INFO] [stdout] 121 | self.value.take().unwrap_or_else(|| ::std::string::String::new()) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace the closure with the associated function itself: `::std::string::String::new` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref which would be done by auto-deref [INFO] [stdout] --> src/screen.rs:2223:53 [INFO] [stdout] | [INFO] [stdout] 2223 | if let Some(&limit) = re_matches(&RE_LIMIT, &*node.content).iter().nth(0) { [INFO] [stdout] | ^^^^^^^^^^^^^^ help: try: `&node.content` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/pb/data_model.rs:126:24 [INFO] [stdout] | [INFO] [stdout] 126 | Some(v) => &v, [INFO] [stdout] | ^^ help: change this to: `v` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref which would be done by auto-deref [INFO] [stdout] --> src/screen.rs:2227:47 [INFO] [stdout] | [INFO] [stdout] 2227 | let re_n = re_matches::(&RE_N, &*node.content); [INFO] [stdout] | ^^^^^^^^^^^^^^ help: try: `&node.content` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `.iter().nth()` on a `Vec` [INFO] [stdout] --> src/screen.rs:2228:21 [INFO] [stdout] | [INFO] [stdout] 2228 | let n_opt = re_n.iter().nth(0); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#iter_nth [INFO] [stdout] help: `get` is equivalent but more concise [INFO] [stdout] | [INFO] [stdout] 2228 - let n_opt = re_n.iter().nth(0); [INFO] [stdout] 2228 + let n_opt = re_n.get(0); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `.iter().nth()` on a `Vec` [INFO] [stdout] --> src/screen.rs:2229:29 [INFO] [stdout] | [INFO] [stdout] 2229 | if let Some(plot) = re_matches::(&RE_PLOT, &*node.content).iter().nth(0) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#iter_nth [INFO] [stdout] help: `get` is equivalent but more concise [INFO] [stdout] | [INFO] [stdout] 2229 - if let Some(plot) = re_matches::(&RE_PLOT, &*node.content).iter().nth(0) { [INFO] [stdout] 2229 + if let Some(plot) = re_matches::(&RE_PLOT, &*node.content).get(0) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref which would be done by auto-deref [INFO] [stdout] --> src/screen.rs:2229:60 [INFO] [stdout] | [INFO] [stdout] 2229 | if let Some(plot) = re_matches::(&RE_PLOT, &*node.content).iter().nth(0) { [INFO] [stdout] | ^^^^^^^^^^^^^^ help: try: `&node.content` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary closure used to substitute value for `Option::None` [INFO] [stdout] --> src/screen.rs:2233:25 [INFO] [stdout] | [INFO] [stdout] 2233 | let until = until_opt.unwrap_or_else(|| now); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_lazy_evaluations [INFO] [stdout] = note: `#[warn(clippy::unnecessary_lazy_evaluations)]` on by default [INFO] [stdout] help: use `unwrap_or` instead [INFO] [stdout] | [INFO] [stdout] 2233 - let until = until_opt.unwrap_or_else(|| now); [INFO] [stdout] 2233 + let until = until_opt.unwrap_or(now); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/pb/data_model.rs:174:55 [INFO] [stdout] | [INFO] [stdout] 174 | my_size += ::protobuf::rt::string_size(1, &v); [INFO] [stdout] | ^^ help: change this to: `v` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/pb/data_model.rs:177:55 [INFO] [stdout] | [INFO] [stdout] 177 | my_size += ::protobuf::rt::string_size(2, &v); [INFO] [stdout] | ^^ help: change this to: `v` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/pb/data_model.rs:186:32 [INFO] [stdout] | [INFO] [stdout] 186 | os.write_string(1, &v)?; [INFO] [stdout] | ^^ help: change this to: `v` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/pb/data_model.rs:189:32 [INFO] [stdout] | [INFO] [stdout] 189 | os.write_string(2, &v)?; [INFO] [stdout] | ^^ help: change this to: `v` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `0 as *const _` detected [INFO] [stdout] --> src/pb/data_model.rs:224:18 [INFO] [stdout] | [INFO] [stdout] 224 | ptr: 0 as *const ::protobuf::reflect::MessageDescriptor, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `std::ptr::null::<::protobuf::reflect::MessageDescriptor>()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#zero_ptr [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: calls to `push` immediately after creation [INFO] [stdout] --> src/pb/data_model.rs:228:17 [INFO] [stdout] | [INFO] [stdout] 228 | / let mut fields = ::std::vec::Vec::new(); [INFO] [stdout] 229 | | fields.push(::protobuf::reflect::accessor::make_singular_field_accessor::<_, ::protobuf::types::ProtobufTypeString>( [INFO] [stdout] 230 | | "key", [INFO] [stdout] 231 | | Tag::get_key_for_reflect, [INFO] [stdout] ... | [INFO] [stdout] 237 | | Tag::mut_value_for_reflect, [INFO] [stdout] 238 | | )); [INFO] [stdout] | |___________________^ help: consider using the `vec![]` macro: `let fields = vec![..];` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#vec_init_then_push [INFO] [stdout] = note: `#[warn(clippy::vec_init_then_push)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `0 as *const _` detected [INFO] [stdout] --> src/pb/data_model.rs:290:18 [INFO] [stdout] | [INFO] [stdout] 290 | ptr: 0 as *const Gps, [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: try: `std::ptr::null::()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#zero_ptr [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `0 as *const _` detected [INFO] [stdout] --> src/pb/data_model.rs:444:18 [INFO] [stdout] | [INFO] [stdout] 444 | ptr: 0 as *const ::protobuf::reflect::MessageDescriptor, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `std::ptr::null::<::protobuf::reflect::MessageDescriptor>()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#zero_ptr [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: calls to `push` immediately after creation [INFO] [stdout] --> src/pb/data_model.rs:448:17 [INFO] [stdout] | [INFO] [stdout] 448 | / let mut fields = ::std::vec::Vec::new(); [INFO] [stdout] 449 | | fields.push(::protobuf::reflect::accessor::make_option_accessor::<_, ::protobuf::types::ProtobufTypeFloat>( [INFO] [stdout] 450 | | "lat", [INFO] [stdout] 451 | | Gps::get_lat_for_reflect, [INFO] [stdout] ... | [INFO] [stdout] 457 | | Gps::mut_lon_for_reflect, [INFO] [stdout] 458 | | )); [INFO] [stdout] | |___________________^ help: consider using the `vec![]` macro: `let fields = vec![..];` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#vec_init_then_push [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `0 as *const _` detected [INFO] [stdout] --> src/pb/data_model.rs:514:18 [INFO] [stdout] | [INFO] [stdout] 514 | ptr: 0 as *const Meta, [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: try: `std::ptr::null::()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#zero_ptr [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant closure [INFO] [stdout] --> src/pb/data_model.rs:628:40 [INFO] [stdout] | [INFO] [stdout] 628 | self.gps.take().unwrap_or_else(|| Gps::new()) [INFO] [stdout] | ^^^^^^^^^^^^^ help: replace the closure with the associated function itself: `Gps::new` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting to the same type is unnecessary (`i64` -> `i64`) [INFO] [stdout] --> src/plot.rs:13:12 [INFO] [stdout] | [INFO] [stdout] 13 | if *max as i64 == 0 { [INFO] [stdout] | ^^^^^^^^^^^ help: try: `*max` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] = note: `#[warn(clippy::unnecessary_cast)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `i64` which implements the `Copy` trait [INFO] [stdout] --> src/plot.rs:33:17 [INFO] [stdout] | [INFO] [stdout] 33 | let step = (end.clone() - start.clone()) / bars as i64; [INFO] [stdout] | ^^^^^^^^^^^ help: try removing the `clone` call: `end` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `i64` which implements the `Copy` trait [INFO] [stdout] --> src/plot.rs:33:31 [INFO] [stdout] | [INFO] [stdout] 33 | let step = (end.clone() - start.clone()) / bars as i64; [INFO] [stdout] | ^^^^^^^^^^^^^ help: try removing the `clone` call: `start` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref on an immutable reference [INFO] [stdout] --> src/colors.rs:14:13 [INFO] [stdout] | [INFO] [stdout] 14 | let c = &*rand::thread_rng().choose(&*colors).unwrap(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [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] help: if you would like to reborrow, try removing `&*` [INFO] [stdout] | [INFO] [stdout] 14 - let c = &*rand::thread_rng().choose(&*colors).unwrap(); [INFO] [stdout] 14 + let c = rand::thread_rng().choose(&*colors).unwrap(); [INFO] [stdout] | [INFO] [stdout] help: if you would like to deref, try using `&**` [INFO] [stdout] | [INFO] [stdout] 14 | let c = &**rand::thread_rng().choose(&*colors).unwrap(); [INFO] [stdout] | + [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref which would be done by auto-deref [INFO] [stdout] --> src/colors.rs:14:41 [INFO] [stdout] | [INFO] [stdout] 14 | let c = &*rand::thread_rng().choose(&*colors).unwrap(); [INFO] [stdout] | ^^^^^^^^ help: try: `&colors` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `0 as *const _` detected [INFO] [stdout] --> src/pb/data_model.rs:849:18 [INFO] [stdout] | [INFO] [stdout] 849 | ptr: 0 as *const ::protobuf::reflect::MessageDescriptor, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `std::ptr::null::<::protobuf::reflect::MessageDescriptor>()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#zero_ptr [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `0 as *const _` detected [INFO] [stdout] --> src/pb/data_model.rs:44:18 [INFO] [stdout] | [INFO] [stdout] 44 | ptr: 0 as *const Tag, [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: try: `std::ptr::null::()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#zero_ptr [INFO] [stdout] = note: `#[warn(clippy::zero_ptr)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: calls to `push` immediately after creation [INFO] [stdout] --> src/pb/data_model.rs:853:17 [INFO] [stdout] | [INFO] [stdout] 853 | / let mut fields = ::std::vec::Vec::new(); [INFO] [stdout] 854 | | fields.push(::protobuf::reflect::accessor::make_option_accessor::<_, ::protobuf::types::ProtobufTypeUint64>( [INFO] [stdout] 855 | | "ctime", [INFO] [stdout] 856 | | Meta::get_ctime_for_reflect, [INFO] [stdout] ... | [INFO] [stdout] 882 | | Meta::mut_due_for_reflect, [INFO] [stdout] 883 | | )); [INFO] [stdout] | |___________________^ help: consider using the `vec![]` macro: `let fields = vec![..];` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#vec_init_then_push [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant closure [INFO] [stdout] --> src/pb/data_model.rs:77:40 [INFO] [stdout] | [INFO] [stdout] 77 | self.key.take().unwrap_or_else(|| ::std::string::String::new()) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace the closure with the associated function itself: `::std::string::String::new` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/pb/data_model.rs:82:24 [INFO] [stdout] | [INFO] [stdout] 82 | Some(v) => &v, [INFO] [stdout] | ^^ help: change this to: `v` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant closure [INFO] [stdout] --> src/pb/data_model.rs:121:42 [INFO] [stdout] | [INFO] [stdout] 121 | self.value.take().unwrap_or_else(|| ::std::string::String::new()) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace the closure with the associated function itself: `::std::string::String::new` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/pb/data_model.rs:126:24 [INFO] [stdout] | [INFO] [stdout] 126 | Some(v) => &v, [INFO] [stdout] | ^^ help: change this to: `v` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `0 as *const _` detected [INFO] [stdout] --> src/pb/data_model.rs:950:18 [INFO] [stdout] | [INFO] [stdout] 950 | ptr: 0 as *const Node, [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: try: `std::ptr::null::()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#zero_ptr [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/pb/data_model.rs:174:55 [INFO] [stdout] | [INFO] [stdout] 174 | my_size += ::protobuf::rt::string_size(1, &v); [INFO] [stdout] | ^^ help: change this to: `v` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/pb/data_model.rs:177:55 [INFO] [stdout] | [INFO] [stdout] 177 | my_size += ::protobuf::rt::string_size(2, &v); [INFO] [stdout] | ^^ help: change this to: `v` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant closure [INFO] [stdout] --> src/pb/data_model.rs:1010:41 [INFO] [stdout] | [INFO] [stdout] 1010 | self.meta.take().unwrap_or_else(|| Meta::new()) [INFO] [stdout] | ^^^^^^^^^^^^^^ help: replace the closure with the associated function itself: `Meta::new` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/pb/data_model.rs:186:32 [INFO] [stdout] | [INFO] [stdout] 186 | os.write_string(1, &v)?; [INFO] [stdout] | ^^ help: change this to: `v` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/pb/data_model.rs:189:32 [INFO] [stdout] | [INFO] [stdout] 189 | os.write_string(2, &v)?; [INFO] [stdout] | ^^ help: change this to: `v` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant closure [INFO] [stdout] --> src/pb/data_model.rs:1051:41 [INFO] [stdout] | [INFO] [stdout] 1051 | self.text.take().unwrap_or_else(|| ::std::string::String::new()) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace the closure with the associated function itself: `::std::string::String::new` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `0 as *const _` detected [INFO] [stdout] --> src/pb/data_model.rs:224:18 [INFO] [stdout] | [INFO] [stdout] 224 | ptr: 0 as *const ::protobuf::reflect::MessageDescriptor, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `std::ptr::null::<::protobuf::reflect::MessageDescriptor>()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#zero_ptr [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/pb/data_model.rs:1056:24 [INFO] [stdout] | [INFO] [stdout] 1056 | Some(v) => &v, [INFO] [stdout] | ^^ help: change this to: `v` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: calls to `push` immediately after creation [INFO] [stdout] --> src/pb/data_model.rs:228:17 [INFO] [stdout] | [INFO] [stdout] 228 | / let mut fields = ::std::vec::Vec::new(); [INFO] [stdout] 229 | | fields.push(::protobuf::reflect::accessor::make_singular_field_accessor::<_, ::protobuf::types::ProtobufTypeString>( [INFO] [stdout] 230 | | "key", [INFO] [stdout] 231 | | Tag::get_key_for_reflect, [INFO] [stdout] ... | [INFO] [stdout] 237 | | Tag::mut_value_for_reflect, [INFO] [stdout] 238 | | )); [INFO] [stdout] | |___________________^ help: consider using the `vec![]` macro: `let fields = vec![..];` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#vec_init_then_push [INFO] [stdout] = note: `#[warn(clippy::vec_init_then_push)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: replacing a value of type `T` with `T::default()` is better expressed using `std::mem::take` [INFO] [stdout] --> src/pb/data_model.rs:1087:9 [INFO] [stdout] | [INFO] [stdout] 1087 | ::std::mem::replace(&mut self.children, ::std::vec::Vec::new()) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using: `std::mem::take(&mut self.children)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#mem_replace_with_default [INFO] [stdout] = note: `#[warn(clippy::mem_replace_with_default)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `0 as *const _` detected [INFO] [stdout] --> src/pb/data_model.rs:290:18 [INFO] [stdout] | [INFO] [stdout] 290 | ptr: 0 as *const Gps, [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: try: `std::ptr::null::()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#zero_ptr [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant closure [INFO] [stdout] --> src/pb/data_model.rs:1317:46 [INFO] [stdout] | [INFO] [stdout] 1317 | self.free_text.take().unwrap_or_else(|| ::std::string::String::new()) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace the closure with the associated function itself: `::std::string::String::new` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/pb/data_model.rs:1322:24 [INFO] [stdout] | [INFO] [stdout] 1322 | Some(v) => &v, [INFO] [stdout] | ^^ help: change this to: `v` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `0 as *const _` detected [INFO] [stdout] --> src/pb/data_model.rs:444:18 [INFO] [stdout] | [INFO] [stdout] 444 | ptr: 0 as *const ::protobuf::reflect::MessageDescriptor, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `std::ptr::null::<::protobuf::reflect::MessageDescriptor>()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#zero_ptr [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: calls to `push` immediately after creation [INFO] [stdout] --> src/pb/data_model.rs:448:17 [INFO] [stdout] | [INFO] [stdout] 448 | / let mut fields = ::std::vec::Vec::new(); [INFO] [stdout] 449 | | fields.push(::protobuf::reflect::accessor::make_option_accessor::<_, ::protobuf::types::ProtobufTypeFloat>( [INFO] [stdout] 450 | | "lat", [INFO] [stdout] 451 | | Gps::get_lat_for_reflect, [INFO] [stdout] ... | [INFO] [stdout] 457 | | Gps::mut_lon_for_reflect, [INFO] [stdout] 458 | | )); [INFO] [stdout] | |___________________^ help: consider using the `vec![]` macro: `let fields = vec![..];` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#vec_init_then_push [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `0 as *const _` detected [INFO] [stdout] --> src/pb/data_model.rs:514:18 [INFO] [stdout] | [INFO] [stdout] 514 | ptr: 0 as *const Meta, [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: try: `std::ptr::null::()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#zero_ptr [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant closure [INFO] [stdout] --> src/pb/data_model.rs:628:40 [INFO] [stdout] | [INFO] [stdout] 628 | self.gps.take().unwrap_or_else(|| Gps::new()) [INFO] [stdout] | ^^^^^^^^^^^^^ help: replace the closure with the associated function itself: `Gps::new` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/pb/data_model.rs:1500:55 [INFO] [stdout] | [INFO] [stdout] 1500 | my_size += ::protobuf::rt::string_size(3, &v); [INFO] [stdout] | ^^ help: change this to: `v` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/pb/data_model.rs:1527:56 [INFO] [stdout] | [INFO] [stdout] 1527 | my_size += ::protobuf::rt::string_size(12, &v); [INFO] [stdout] | ^^ help: change this to: `v` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/pb/data_model.rs:1547:32 [INFO] [stdout] | [INFO] [stdout] 1547 | os.write_string(3, &v)?; [INFO] [stdout] | ^^ help: change this to: `v` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/pb/data_model.rs:1574:33 [INFO] [stdout] | [INFO] [stdout] 1574 | os.write_string(12, &v)?; [INFO] [stdout] | ^^ help: change this to: `v` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `0 as *const _` detected [INFO] [stdout] --> src/pb/data_model.rs:1612:18 [INFO] [stdout] | [INFO] [stdout] 1612 | ptr: 0 as *const ::protobuf::reflect::MessageDescriptor, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `std::ptr::null::<::protobuf::reflect::MessageDescriptor>()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#zero_ptr [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: calls to `push` immediately after creation [INFO] [stdout] --> src/pb/data_model.rs:1616:17 [INFO] [stdout] | [INFO] [stdout] 1616 | / let mut fields = ::std::vec::Vec::new(); [INFO] [stdout] 1617 | | fields.push(::protobuf::reflect::accessor::make_option_accessor::<_, ::protobuf::types::ProtobufTypeUint64>( [INFO] [stdout] 1618 | | "id", [INFO] [stdout] 1619 | | Node::get_id_for_reflect, [INFO] [stdout] ... | [INFO] [stdout] 1680 | | Node::mut_auto_arrange_for_reflect, [INFO] [stdout] 1681 | | )); [INFO] [stdout] | |___________________^ help: consider using the `vec![]` macro: `let fields = vec![..];` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#vec_init_then_push [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `0 as *const _` detected [INFO] [stdout] --> src/pb/data_model.rs:1744:18 [INFO] [stdout] | [INFO] [stdout] 1744 | ptr: 0 as *const Arrow, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: try: `std::ptr::null::()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#zero_ptr [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `0 as *const _` detected [INFO] [stdout] --> src/pb/data_model.rs:849:18 [INFO] [stdout] | [INFO] [stdout] 849 | ptr: 0 as *const ::protobuf::reflect::MessageDescriptor, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `std::ptr::null::<::protobuf::reflect::MessageDescriptor>()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#zero_ptr [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: calls to `push` immediately after creation [INFO] [stdout] --> src/pb/data_model.rs:853:17 [INFO] [stdout] | [INFO] [stdout] 853 | / let mut fields = ::std::vec::Vec::new(); [INFO] [stdout] 854 | | fields.push(::protobuf::reflect::accessor::make_option_accessor::<_, ::protobuf::types::ProtobufTypeUint64>( [INFO] [stdout] 855 | | "ctime", [INFO] [stdout] 856 | | Meta::get_ctime_for_reflect, [INFO] [stdout] ... | [INFO] [stdout] 882 | | Meta::mut_due_for_reflect, [INFO] [stdout] 883 | | )); [INFO] [stdout] | |___________________^ help: consider using the `vec![]` macro: `let fields = vec![..];` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#vec_init_then_push [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `0 as *const _` detected [INFO] [stdout] --> src/pb/data_model.rs:1898:18 [INFO] [stdout] | [INFO] [stdout] 1898 | ptr: 0 as *const ::protobuf::reflect::MessageDescriptor, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `std::ptr::null::<::protobuf::reflect::MessageDescriptor>()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#zero_ptr [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: calls to `push` immediately after creation [INFO] [stdout] --> src/pb/data_model.rs:1902:17 [INFO] [stdout] | [INFO] [stdout] 1902 | / let mut fields = ::std::vec::Vec::new(); [INFO] [stdout] 1903 | | fields.push(::protobuf::reflect::accessor::make_option_accessor::<_, ::protobuf::types::ProtobufTypeUint64>( [INFO] [stdout] 1904 | | "from_node", [INFO] [stdout] 1905 | | Arrow::get_from_node_for_reflect, [INFO] [stdout] ... | [INFO] [stdout] 1911 | | Arrow::mut_to_node_for_reflect, [INFO] [stdout] 1912 | | )); [INFO] [stdout] | |___________________^ help: consider using the `vec![]` macro: `let fields = vec![..];` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#vec_init_then_push [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `0 as *const _` detected [INFO] [stdout] --> src/pb/data_model.rs:950:18 [INFO] [stdout] | [INFO] [stdout] 950 | ptr: 0 as *const Node, [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: try: `std::ptr::null::()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#zero_ptr [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `0 as *const _` detected [INFO] [stdout] --> src/pb/data_model.rs:1965:18 [INFO] [stdout] | [INFO] [stdout] 1965 | ptr: 0 as *const Screen, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: try: `std::ptr::null::()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#zero_ptr [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant closure [INFO] [stdout] --> src/pb/data_model.rs:1010:41 [INFO] [stdout] | [INFO] [stdout] 1010 | self.meta.take().unwrap_or_else(|| Meta::new()) [INFO] [stdout] | ^^^^^^^^^^^^^^ help: replace the closure with the associated function itself: `Meta::new` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant closure [INFO] [stdout] --> src/pb/data_model.rs:1051:41 [INFO] [stdout] | [INFO] [stdout] 1051 | self.text.take().unwrap_or_else(|| ::std::string::String::new()) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace the closure with the associated function itself: `::std::string::String::new` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/pb/data_model.rs:1056:24 [INFO] [stdout] | [INFO] [stdout] 1056 | Some(v) => &v, [INFO] [stdout] | ^^ help: change this to: `v` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: replacing a value of type `T` with `T::default()` is better expressed using `std::mem::take` [INFO] [stdout] --> src/pb/data_model.rs:1087:9 [INFO] [stdout] | [INFO] [stdout] 1087 | ::std::mem::replace(&mut self.children, ::std::vec::Vec::new()) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using: `std::mem::take(&mut self.children)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#mem_replace_with_default [INFO] [stdout] = note: `#[warn(clippy::mem_replace_with_default)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `0 as *const _` detected [INFO] [stdout] --> src/pb/data_model.rs:2166:18 [INFO] [stdout] | [INFO] [stdout] 2166 | ptr: 0 as *const ::protobuf::reflect::MessageDescriptor, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `std::ptr::null::<::protobuf::reflect::MessageDescriptor>()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#zero_ptr [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: calls to `push` immediately after creation [INFO] [stdout] --> src/pb/data_model.rs:2170:17 [INFO] [stdout] | [INFO] [stdout] 2170 | / ... let mut fields = ::std::vec::Vec::new(); [INFO] [stdout] 2171 | | ... fields.push(::protobuf::reflect::accessor::make_repeated_field_accessor::<_, ::protobuf::types::ProtobufTypeMessage>( [INFO] [stdout] 2172 | | ... "nodes", [INFO] [stdout] 2173 | | ... Screen::get_nodes_for_reflect, [INFO] [stdout] ... | [INFO] [stdout] 2184 | | ... Screen::mut_arrows_for_reflect, [INFO] [stdout] 2185 | | ... )); [INFO] [stdout] | |_________^ help: consider using the `vec![]` macro: `let fields = vec![..];` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#vec_init_then_push [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant closure [INFO] [stdout] --> src/pb/data_model.rs:1317:46 [INFO] [stdout] | [INFO] [stdout] 1317 | self.free_text.take().unwrap_or_else(|| ::std::string::String::new()) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace the closure with the associated function itself: `::std::string::String::new` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/pb/data_model.rs:1322:24 [INFO] [stdout] | [INFO] [stdout] 1322 | Some(v) => &v, [INFO] [stdout] | ^^ help: change this to: `v` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/pb/data_model.rs:1500:55 [INFO] [stdout] | [INFO] [stdout] 1500 | my_size += ::protobuf::rt::string_size(3, &v); [INFO] [stdout] | ^^ help: change this to: `v` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/pb/data_model.rs:1527:56 [INFO] [stdout] | [INFO] [stdout] 1527 | my_size += ::protobuf::rt::string_size(12, &v); [INFO] [stdout] | ^^ help: change this to: `v` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/pb/data_model.rs:1547:32 [INFO] [stdout] | [INFO] [stdout] 1547 | os.write_string(3, &v)?; [INFO] [stdout] | ^^ help: change this to: `v` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/pb/data_model.rs:1574:33 [INFO] [stdout] | [INFO] [stdout] 1574 | os.write_string(12, &v)?; [INFO] [stdout] | ^^ help: change this to: `v` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `0 as *const _` detected [INFO] [stdout] --> src/pb/data_model.rs:1612:18 [INFO] [stdout] | [INFO] [stdout] 1612 | ptr: 0 as *const ::protobuf::reflect::MessageDescriptor, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `std::ptr::null::<::protobuf::reflect::MessageDescriptor>()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#zero_ptr [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: calls to `push` immediately after creation [INFO] [stdout] --> src/pb/data_model.rs:1616:17 [INFO] [stdout] | [INFO] [stdout] 1616 | / let mut fields = ::std::vec::Vec::new(); [INFO] [stdout] 1617 | | fields.push(::protobuf::reflect::accessor::make_option_accessor::<_, ::protobuf::types::ProtobufTypeUint64>( [INFO] [stdout] 1618 | | "id", [INFO] [stdout] 1619 | | Node::get_id_for_reflect, [INFO] [stdout] ... | [INFO] [stdout] 1680 | | Node::mut_auto_arrange_for_reflect, [INFO] [stdout] 1681 | | )); [INFO] [stdout] | |___________________^ help: consider using the `vec![]` macro: `let fields = vec![..];` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#vec_init_then_push [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `0 as *const _` detected [INFO] [stdout] --> src/pb/data_model.rs:1744:18 [INFO] [stdout] | [INFO] [stdout] 1744 | ptr: 0 as *const Arrow, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: try: `std::ptr::null::()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#zero_ptr [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `0 as *const _` detected [INFO] [stdout] --> src/pb/data_model.rs:2404:10 [INFO] [stdout] | [INFO] [stdout] 2404 | ptr: 0 as *const ::protobuf::descriptor::FileDescriptorProto, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `std::ptr::null::<::protobuf::descriptor::FileDescriptorProto>()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#zero_ptr [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `0 as *const _` detected [INFO] [stdout] --> src/pb/data_model.rs:1898:18 [INFO] [stdout] | [INFO] [stdout] 1898 | ptr: 0 as *const ::protobuf::reflect::MessageDescriptor, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `std::ptr::null::<::protobuf::reflect::MessageDescriptor>()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#zero_ptr [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: calls to `push` immediately after creation [INFO] [stdout] --> src/pb/data_model.rs:1902:17 [INFO] [stdout] | [INFO] [stdout] 1902 | / let mut fields = ::std::vec::Vec::new(); [INFO] [stdout] 1903 | | fields.push(::protobuf::reflect::accessor::make_option_accessor::<_, ::protobuf::types::ProtobufTypeUint64>( [INFO] [stdout] 1904 | | "from_node", [INFO] [stdout] 1905 | | Arrow::get_from_node_for_reflect, [INFO] [stdout] ... | [INFO] [stdout] 1911 | | Arrow::mut_to_node_for_reflect, [INFO] [stdout] 1912 | | )); [INFO] [stdout] | |___________________^ help: consider using the `vec![]` macro: `let fields = vec![..];` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#vec_init_then_push [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `0 as *const _` detected [INFO] [stdout] --> src/pb/data_model.rs:1965:18 [INFO] [stdout] | [INFO] [stdout] 1965 | ptr: 0 as *const Screen, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: try: `std::ptr::null::()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#zero_ptr [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant closure [INFO] [stdout] --> src/config.rs:113:22 [INFO] [stdout] | [INFO] [stdout] 113 | .map(|c| Ctrl(c)) [INFO] [stdout] | ^^^^^^^^^^^ help: replace the closure with the tuple variant itself: `Ctrl` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `.nth(0)` on a `std::iter::Iterator`, when `.next()` is equivalent [INFO] [stdout] --> src/config.rs:109:13 [INFO] [stdout] | [INFO] [stdout] 109 | / RE.captures_iter(other) [INFO] [stdout] 110 | | .nth(0) [INFO] [stdout] | |_______________________^ help: try calling `.next()` instead of `.nth(0)`: `RE.captures_iter(other).next()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#iter_nth_zero [INFO] [stdout] = note: `#[warn(clippy::iter_nth_zero)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `.nth(0)` on a `std::iter::Iterator`, when `.next()` is equivalent [INFO] [stdout] --> src/config.rs:112:31 [INFO] [stdout] | [INFO] [stdout] 112 | .and_then(|r| r.chars().nth(0)) [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: try calling `.next()` instead of `.nth(0)`: `r.chars().next()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#iter_nth_zero [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `write!()` with a format string that ends in a single newline [INFO] [stdout] --> src/config.rs:170:9 [INFO] [stdout] | [INFO] [stdout] 170 | write!(f, "Configured Hotkeys:\n").unwrap(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#write_with_newline [INFO] [stdout] = note: `#[warn(clippy::write_with_newline)]` on by default [INFO] [stdout] help: use `writeln!` instead [INFO] [stdout] | [INFO] [stdout] 170 - write!(f, "Configured Hotkeys:\n").unwrap(); [INFO] [stdout] 170 + writeln!(f, "Configured Hotkeys:").unwrap(); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `write!()` with a format string that ends in a single newline [INFO] [stdout] --> src/config.rs:172:13 [INFO] [stdout] | [INFO] [stdout] 172 | write!(f, " {:?}: {:?}\n", action, key).unwrap(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#write_with_newline [INFO] [stdout] help: use `writeln!` instead [INFO] [stdout] | [INFO] [stdout] 172 - write!(f, " {:?}: {:?}\n", action, key).unwrap(); [INFO] [stdout] 172 + writeln!(f, " {:?}: {:?}", action, key).unwrap(); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this can be `std::io::Error::other(_)` [INFO] [stdout] --> src/config.rs:198:28 [INFO] [stdout] | [INFO] [stdout] 198 | return Err(Error::new(ErrorKind::Other, e)); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#io_other_error [INFO] [stdout] help: use `std::io::Error::other` [INFO] [stdout] | [INFO] [stdout] 198 - return Err(Error::new(ErrorKind::Other, e)); [INFO] [stdout] 198 + return Err(Error::other(e)); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this can be `std::io::Error::other(_)` [INFO] [stdout] --> src/config.rs:208:28 [INFO] [stdout] | [INFO] [stdout] 208 | return Err(Error::new(ErrorKind::Other, e)); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#io_other_error [INFO] [stdout] help: use `std::io::Error::other` [INFO] [stdout] | [INFO] [stdout] 208 - return Err(Error::new(ErrorKind::Other, e)); [INFO] [stdout] 208 + return Err(Error::other(e)); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `0 as *const _` detected [INFO] [stdout] --> src/pb/data_model.rs:2166:18 [INFO] [stdout] | [INFO] [stdout] 2166 | ptr: 0 as *const ::protobuf::reflect::MessageDescriptor, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `std::ptr::null::<::protobuf::reflect::MessageDescriptor>()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#zero_ptr [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: calls to `push` immediately after creation [INFO] [stdout] --> src/pb/data_model.rs:2170:17 [INFO] [stdout] | [INFO] [stdout] 2170 | / ... let mut fields = ::std::vec::Vec::new(); [INFO] [stdout] 2171 | | ... fields.push(::protobuf::reflect::accessor::make_repeated_field_accessor::<_, ::protobuf::types::ProtobufTypeMessage>( [INFO] [stdout] 2172 | | ... "nodes", [INFO] [stdout] 2173 | | ... Screen::get_nodes_for_reflect, [INFO] [stdout] ... | [INFO] [stdout] 2184 | | ... Screen::mut_arrows_for_reflect, [INFO] [stdout] 2185 | | ... )); [INFO] [stdout] | |_________^ help: consider using the `vec![]` macro: `let fields = vec![..];` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#vec_init_then_push [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `impl` can be derived [INFO] [stdout] --> src/tagdb.rs:12:1 [INFO] [stdout] | [INFO] [stdout] 12 | / impl Default for TagDB { [INFO] [stdout] 13 | | fn default() -> TagDB { [INFO] [stdout] 14 | | TagDB { [INFO] [stdout] 15 | | node_to_tags: HashMap::new(), [INFO] [stdout] ... | [INFO] [stdout] 19 | | } [INFO] [stdout] | |_^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#derivable_impls [INFO] [stdout] = note: `#[warn(clippy::derivable_impls)]` on by default [INFO] [stdout] help: replace the manual implementation with a derive attribute [INFO] [stdout] | [INFO] [stdout] 7 + #[derive(Default)] [INFO] [stdout] 8 | pub struct TagDB { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref which would be done by auto-deref [INFO] [stdout] --> src/tagdb.rs:30:60 [INFO] [stdout] | [INFO] [stdout] 30 | let tags = re_matches::(&RE_TAG_KEY_VALUE, &*text); [INFO] [stdout] | ^^^^^^ help: try: `&text` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant closure [INFO] [stdout] --> src/tagdb.rs:39:33 [INFO] [stdout] | [INFO] [stdout] 39 | .unwrap_or_else(|| HashSet::new()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: replace the closure with the associated function itself: `HashSet::new` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref which would be done by auto-deref [INFO] [stdout] --> src/tagdb.rs:47:58 [INFO] [stdout] | [INFO] [stdout] 47 | let tags = re_matches::(&RE_TAG_KEY, &*text); [INFO] [stdout] | ^^^^^^ help: try: `&text` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant closure [INFO] [stdout] --> src/tagdb.rs:56:37 [INFO] [stdout] | [INFO] [stdout] 56 | .unwrap_or_else(|| HashSet::new()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: replace the closure with the associated function itself: `HashSet::new` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant closure [INFO] [stdout] --> src/tagdb.rs:79:29 [INFO] [stdout] | [INFO] [stdout] 79 | .unwrap_or_else(|| vec![]); [INFO] [stdout] | ^^^^^^^^^ help: replace the closure with `Vec::new`: `std::vec::Vec::new` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary use of `to_owned` [INFO] [stdout] --> src/tagdb.rs:77:18 [INFO] [stdout] | [INFO] [stdout] 77 | .get(&tag.to_owned()) [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: replace it with: `tag` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_to_owned [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: creating a mutable reference to mutable static [INFO] [stdout] --> src/pb/data_model.rs:47:13 [INFO] [stdout] | [INFO] [stdout] 47 | instance.get(Tag::new) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ mutable reference to mutable static [INFO] [stdout] | [INFO] [stdout] = note: mutable references to mutable statics are dangerous; it's undefined behavior if any other pointer to the static is used or if any other reference is created for the static while the mutable reference lives [INFO] [stdout] = note: for more information, see [INFO] [stdout] = note: `#[warn(static_mut_refs)]` (part of `#[warn(rust_2024_compatibility)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: creating a mutable reference to mutable static [INFO] [stdout] --> src/pb/data_model.rs:227:13 [INFO] [stdout] | [INFO] [stdout] 227 | / descriptor.get(|| { [INFO] [stdout] 228 | | let mut fields = ::std::vec::Vec::new(); [INFO] [stdout] 229 | | fields.push(::protobuf::reflect::accessor::make_singular_field_accessor::<_, ::protobuf::types::ProtobufTypeString>( [INFO] [stdout] 230 | | "key", [INFO] [stdout] ... | [INFO] [stdout] 244 | | }) [INFO] [stdout] | |______________^ mutable reference to mutable static [INFO] [stdout] | [INFO] [stdout] = note: mutable references to mutable statics are dangerous; it's undefined behavior if any other pointer to the static is used or if any other reference is created for the static while the mutable reference lives [INFO] [stdout] = note: for more information, see [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/pb/data_model.rs:264:15 [INFO] [stdout] | [INFO] [stdout] 264 | fn as_ref(&self) -> ::protobuf::reflect::ProtobufValueRef { [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] 264 | fn as_ref(&self) -> ::protobuf::reflect::ProtobufValueRef<'_> { [INFO] [stdout] | ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: creating a mutable reference to mutable static [INFO] [stdout] --> src/pb/data_model.rs:293:13 [INFO] [stdout] | [INFO] [stdout] 293 | instance.get(Gps::new) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ mutable reference to mutable static [INFO] [stdout] | [INFO] [stdout] = note: mutable references to mutable statics are dangerous; it's undefined behavior if any other pointer to the static is used or if any other reference is created for the static while the mutable reference lives [INFO] [stdout] = note: for more information, see [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: creating a mutable reference to mutable static [INFO] [stdout] --> src/pb/data_model.rs:447:13 [INFO] [stdout] | [INFO] [stdout] 447 | / descriptor.get(|| { [INFO] [stdout] 448 | | let mut fields = ::std::vec::Vec::new(); [INFO] [stdout] 449 | | fields.push(::protobuf::reflect::accessor::make_option_accessor::<_, ::protobuf::types::ProtobufTypeFloat>( [INFO] [stdout] 450 | | "lat", [INFO] [stdout] ... | [INFO] [stdout] 464 | | }) [INFO] [stdout] | |______________^ mutable reference to mutable static [INFO] [stdout] | [INFO] [stdout] = note: mutable references to mutable statics are dangerous; it's undefined behavior if any other pointer to the static is used or if any other reference is created for the static while the mutable reference lives [INFO] [stdout] = note: for more information, see [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/pb/data_model.rs:484:15 [INFO] [stdout] | [INFO] [stdout] 484 | fn as_ref(&self) -> ::protobuf::reflect::ProtobufValueRef { [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] help: use `'_` for type paths [INFO] [stdout] | [INFO] [stdout] 484 | fn as_ref(&self) -> ::protobuf::reflect::ProtobufValueRef<'_> { [INFO] [stdout] | ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: creating a mutable reference to mutable static [INFO] [stdout] --> src/pb/data_model.rs:517:13 [INFO] [stdout] | [INFO] [stdout] 517 | instance.get(Meta::new) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ mutable reference to mutable static [INFO] [stdout] | [INFO] [stdout] = note: mutable references to mutable statics are dangerous; it's undefined behavior if any other pointer to the static is used or if any other reference is created for the static while the mutable reference lives [INFO] [stdout] = note: for more information, see [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `0 as *const _` detected [INFO] [stdout] --> src/pb/data_model.rs:2404:10 [INFO] [stdout] | [INFO] [stdout] 2404 | ptr: 0 as *const ::protobuf::descriptor::FileDescriptorProto, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `std::ptr::null::<::protobuf::descriptor::FileDescriptorProto>()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#zero_ptr [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: creating a mutable reference to mutable static [INFO] [stdout] --> src/pb/data_model.rs:852:13 [INFO] [stdout] | [INFO] [stdout] 852 | / descriptor.get(|| { [INFO] [stdout] 853 | | let mut fields = ::std::vec::Vec::new(); [INFO] [stdout] 854 | | fields.push(::protobuf::reflect::accessor::make_option_accessor::<_, ::protobuf::types::ProtobufTypeUint64>( [INFO] [stdout] 855 | | "ctime", [INFO] [stdout] ... | [INFO] [stdout] 889 | | }) [INFO] [stdout] | |______________^ mutable reference to mutable static [INFO] [stdout] | [INFO] [stdout] = note: mutable references to mutable statics are dangerous; it's undefined behavior if any other pointer to the static is used or if any other reference is created for the static while the mutable reference lives [INFO] [stdout] = note: for more information, see [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/pb/data_model.rs:913:15 [INFO] [stdout] | [INFO] [stdout] 913 | fn as_ref(&self) -> ::protobuf::reflect::ProtobufValueRef { [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] help: use `'_` for type paths [INFO] [stdout] | [INFO] [stdout] 913 | fn as_ref(&self) -> ::protobuf::reflect::ProtobufValueRef<'_> { [INFO] [stdout] | ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: creating a mutable reference to mutable static [INFO] [stdout] --> src/pb/data_model.rs:953:13 [INFO] [stdout] | [INFO] [stdout] 953 | instance.get(Node::new) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ mutable reference to mutable static [INFO] [stdout] | [INFO] [stdout] = note: mutable references to mutable statics are dangerous; it's undefined behavior if any other pointer to the static is used or if any other reference is created for the static while the mutable reference lives [INFO] [stdout] = note: for more information, see [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: creating a mutable reference to mutable static [INFO] [stdout] --> src/pb/data_model.rs:1615:13 [INFO] [stdout] | [INFO] [stdout] 1615 | / descriptor.get(|| { [INFO] [stdout] 1616 | | let mut fields = ::std::vec::Vec::new(); [INFO] [stdout] 1617 | | fields.push(::protobuf::reflect::accessor::make_option_accessor::<_, ::protobuf::types::ProtobufTypeUint64>( [INFO] [stdout] 1618 | | "id", [INFO] [stdout] ... | [INFO] [stdout] 1687 | | }) [INFO] [stdout] | |______________^ mutable reference to mutable static [INFO] [stdout] | [INFO] [stdout] = note: mutable references to mutable statics are dangerous; it's undefined behavior if any other pointer to the static is used or if any other reference is created for the static while the mutable reference lives [INFO] [stdout] = note: for more information, see [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/pb/data_model.rs:1718:15 [INFO] [stdout] | [INFO] [stdout] 1718 | fn as_ref(&self) -> ::protobuf::reflect::ProtobufValueRef { [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] help: use `'_` for type paths [INFO] [stdout] | [INFO] [stdout] 1718 | fn as_ref(&self) -> ::protobuf::reflect::ProtobufValueRef<'_> { [INFO] [stdout] | ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: creating a mutable reference to mutable static [INFO] [stdout] --> src/pb/data_model.rs:1747:13 [INFO] [stdout] | [INFO] [stdout] 1747 | instance.get(Arrow::new) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ mutable reference to mutable static [INFO] [stdout] | [INFO] [stdout] = note: mutable references to mutable statics are dangerous; it's undefined behavior if any other pointer to the static is used or if any other reference is created for the static while the mutable reference lives [INFO] [stdout] = note: for more information, see [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: creating a mutable reference to mutable static [INFO] [stdout] --> src/pb/data_model.rs:1901:13 [INFO] [stdout] | [INFO] [stdout] 1901 | / descriptor.get(|| { [INFO] [stdout] 1902 | | let mut fields = ::std::vec::Vec::new(); [INFO] [stdout] 1903 | | fields.push(::protobuf::reflect::accessor::make_option_accessor::<_, ::protobuf::types::ProtobufTypeUint64>( [INFO] [stdout] 1904 | | "from_node", [INFO] [stdout] ... | [INFO] [stdout] 1918 | | }) [INFO] [stdout] | |______________^ mutable reference to mutable static [INFO] [stdout] | [INFO] [stdout] = note: mutable references to mutable statics are dangerous; it's undefined behavior if any other pointer to the static is used or if any other reference is created for the static while the mutable reference lives [INFO] [stdout] = note: for more information, see [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/pb/data_model.rs:1938:15 [INFO] [stdout] | [INFO] [stdout] 1938 | fn as_ref(&self) -> ::protobuf::reflect::ProtobufValueRef { [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] help: use `'_` for type paths [INFO] [stdout] | [INFO] [stdout] 1938 | fn as_ref(&self) -> ::protobuf::reflect::ProtobufValueRef<'_> { [INFO] [stdout] | ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: creating a mutable reference to mutable static [INFO] [stdout] --> src/pb/data_model.rs:1968:13 [INFO] [stdout] | [INFO] [stdout] 1968 | instance.get(Screen::new) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ mutable reference to mutable static [INFO] [stdout] | [INFO] [stdout] = note: mutable references to mutable statics are dangerous; it's undefined behavior if any other pointer to the static is used or if any other reference is created for the static while the mutable reference lives [INFO] [stdout] = note: for more information, see [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: creating a mutable reference to mutable static [INFO] [stdout] --> src/pb/data_model.rs:2169:13 [INFO] [stdout] | [INFO] [stdout] 2169 | / ... descriptor.get(|| { [INFO] [stdout] 2170 | | ... let mut fields = ::std::vec::Vec::new(); [INFO] [stdout] 2171 | | ... fields.push(::protobuf::reflect::accessor::make_repeated_field_accessor::<_, ::protobuf::types::ProtobufTypeMessage [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/pb/data_model.rs:2212:15 [INFO] [stdout] | [INFO] [stdout] 2212 | fn as_ref(&self) -> ::protobuf::reflect::ProtobufValueRef { [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] help: use `'_` for type paths [INFO] [stdout] | [INFO] [stdout] 2212 | fn as_ref(&self) -> ::protobuf::reflect::ProtobufValueRef<'_> { [INFO] [stdout] | ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: creating a mutable reference to mutable static [INFO] [stdout] --> src/pb/data_model.rs:2413:9 [INFO] [stdout] | [INFO] [stdout] 2413 | / file_descriptor_proto_lazy.get(|| { [INFO] [stdout] 2414 | | parse_descriptor_proto() [INFO] [stdout] 2415 | | }) [INFO] [stdout] | |__________^ mutable reference to mutable static [INFO] [stdout] | [INFO] [stdout] = note: mutable references to mutable statics are dangerous; it's undefined behavior if any other pointer to the static is used or if any other reference is created for the static while the mutable reference lives [INFO] [stdout] = note: for more information, see [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant closure [INFO] [stdout] --> src/config.rs:113:22 [INFO] [stdout] | [INFO] [stdout] 113 | .map(|c| Ctrl(c)) [INFO] [stdout] | ^^^^^^^^^^^ help: replace the closure with the tuple variant itself: `Ctrl` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `.nth(0)` on a `std::iter::Iterator`, when `.next()` is equivalent [INFO] [stdout] --> src/config.rs:109:13 [INFO] [stdout] | [INFO] [stdout] 109 | / RE.captures_iter(other) [INFO] [stdout] 110 | | .nth(0) [INFO] [stdout] | |_______________________^ help: try calling `.next()` instead of `.nth(0)`: `RE.captures_iter(other).next()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#iter_nth_zero [INFO] [stdout] = note: `#[warn(clippy::iter_nth_zero)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `.nth(0)` on a `std::iter::Iterator`, when `.next()` is equivalent [INFO] [stdout] --> src/config.rs:112:31 [INFO] [stdout] | [INFO] [stdout] 112 | .and_then(|r| r.chars().nth(0)) [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: try calling `.next()` instead of `.nth(0)`: `r.chars().next()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#iter_nth_zero [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `write!()` with a format string that ends in a single newline [INFO] [stdout] --> src/config.rs:170:9 [INFO] [stdout] | [INFO] [stdout] 170 | write!(f, "Configured Hotkeys:\n").unwrap(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#write_with_newline [INFO] [stdout] = note: `#[warn(clippy::write_with_newline)]` on by default [INFO] [stdout] help: use `writeln!` instead [INFO] [stdout] | [INFO] [stdout] 170 - write!(f, "Configured Hotkeys:\n").unwrap(); [INFO] [stdout] 170 + writeln!(f, "Configured Hotkeys:").unwrap(); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `write!()` with a format string that ends in a single newline [INFO] [stdout] --> src/config.rs:172:13 [INFO] [stdout] | [INFO] [stdout] 172 | write!(f, " {:?}: {:?}\n", action, key).unwrap(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#write_with_newline [INFO] [stdout] help: use `writeln!` instead [INFO] [stdout] | [INFO] [stdout] 172 - write!(f, " {:?}: {:?}\n", action, key).unwrap(); [INFO] [stdout] 172 + writeln!(f, " {:?}: {:?}", action, key).unwrap(); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this can be `std::io::Error::other(_)` [INFO] [stdout] --> src/config.rs:198:28 [INFO] [stdout] | [INFO] [stdout] 198 | return Err(Error::new(ErrorKind::Other, e)); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#io_other_error [INFO] [stdout] help: use `std::io::Error::other` [INFO] [stdout] | [INFO] [stdout] 198 - return Err(Error::new(ErrorKind::Other, e)); [INFO] [stdout] 198 + return Err(Error::other(e)); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this can be `std::io::Error::other(_)` [INFO] [stdout] --> src/config.rs:208:28 [INFO] [stdout] | [INFO] [stdout] 208 | return Err(Error::new(ErrorKind::Other, e)); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#io_other_error [INFO] [stdout] help: use `std::io::Error::other` [INFO] [stdout] | [INFO] [stdout] 208 - return Err(Error::new(ErrorKind::Other, e)); [INFO] [stdout] 208 + return Err(Error::other(e)); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `impl` can be derived [INFO] [stdout] --> src/tagdb.rs:12:1 [INFO] [stdout] | [INFO] [stdout] 12 | / impl Default for TagDB { [INFO] [stdout] 13 | | fn default() -> TagDB { [INFO] [stdout] 14 | | TagDB { [INFO] [stdout] 15 | | node_to_tags: HashMap::new(), [INFO] [stdout] ... | [INFO] [stdout] 19 | | } [INFO] [stdout] | |_^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#derivable_impls [INFO] [stdout] = note: `#[warn(clippy::derivable_impls)]` on by default [INFO] [stdout] help: replace the manual implementation with a derive attribute [INFO] [stdout] | [INFO] [stdout] 7 + #[derive(Default)] [INFO] [stdout] 8 | pub struct TagDB { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref which would be done by auto-deref [INFO] [stdout] --> src/tagdb.rs:30:60 [INFO] [stdout] | [INFO] [stdout] 30 | let tags = re_matches::(&RE_TAG_KEY_VALUE, &*text); [INFO] [stdout] | ^^^^^^ help: try: `&text` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant closure [INFO] [stdout] --> src/tagdb.rs:39:33 [INFO] [stdout] | [INFO] [stdout] 39 | .unwrap_or_else(|| HashSet::new()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: replace the closure with the associated function itself: `HashSet::new` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref which would be done by auto-deref [INFO] [stdout] --> src/tagdb.rs:47:58 [INFO] [stdout] | [INFO] [stdout] 47 | let tags = re_matches::(&RE_TAG_KEY, &*text); [INFO] [stdout] | ^^^^^^ help: try: `&text` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant closure [INFO] [stdout] --> src/tagdb.rs:56:37 [INFO] [stdout] | [INFO] [stdout] 56 | .unwrap_or_else(|| HashSet::new()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: replace the closure with the associated function itself: `HashSet::new` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant closure [INFO] [stdout] --> src/tagdb.rs:79:29 [INFO] [stdout] | [INFO] [stdout] 79 | .unwrap_or_else(|| vec![]); [INFO] [stdout] | ^^^^^^^^^ help: replace the closure with `Vec::new`: `std::vec::Vec::new` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary use of `to_owned` [INFO] [stdout] --> src/tagdb.rs:77:18 [INFO] [stdout] | [INFO] [stdout] 77 | .get(&tag.to_owned()) [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: replace it with: `tag` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_to_owned [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: creating a mutable reference to mutable static [INFO] [stdout] --> src/pb/data_model.rs:47:13 [INFO] [stdout] | [INFO] [stdout] 47 | instance.get(Tag::new) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ mutable reference to mutable static [INFO] [stdout] | [INFO] [stdout] = note: mutable references to mutable statics are dangerous; it's undefined behavior if any other pointer to the static is used or if any other reference is created for the static while the mutable reference lives [INFO] [stdout] = note: for more information, see [INFO] [stdout] = note: `#[warn(static_mut_refs)]` (part of `#[warn(rust_2024_compatibility)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: creating a mutable reference to mutable static [INFO] [stdout] --> src/pb/data_model.rs:227:13 [INFO] [stdout] | [INFO] [stdout] 227 | / descriptor.get(|| { [INFO] [stdout] 228 | | let mut fields = ::std::vec::Vec::new(); [INFO] [stdout] 229 | | fields.push(::protobuf::reflect::accessor::make_singular_field_accessor::<_, ::protobuf::types::ProtobufTypeString>( [INFO] [stdout] 230 | | "key", [INFO] [stdout] ... | [INFO] [stdout] 244 | | }) [INFO] [stdout] | |______________^ mutable reference to mutable static [INFO] [stdout] | [INFO] [stdout] = note: mutable references to mutable statics are dangerous; it's undefined behavior if any other pointer to the static is used or if any other reference is created for the static while the mutable reference lives [INFO] [stdout] = note: for more information, see [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/pb/data_model.rs:264:15 [INFO] [stdout] | [INFO] [stdout] 264 | fn as_ref(&self) -> ::protobuf::reflect::ProtobufValueRef { [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] 264 | fn as_ref(&self) -> ::protobuf::reflect::ProtobufValueRef<'_> { [INFO] [stdout] | ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: creating a mutable reference to mutable static [INFO] [stdout] --> src/pb/data_model.rs:293:13 [INFO] [stdout] | [INFO] [stdout] 293 | instance.get(Gps::new) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ mutable reference to mutable static [INFO] [stdout] | [INFO] [stdout] = note: mutable references to mutable statics are dangerous; it's undefined behavior if any other pointer to the static is used or if any other reference is created for the static while the mutable reference lives [INFO] [stdout] = note: for more information, see [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: creating a mutable reference to mutable static [INFO] [stdout] --> src/pb/data_model.rs:447:13 [INFO] [stdout] | [INFO] [stdout] 447 | / descriptor.get(|| { [INFO] [stdout] 448 | | let mut fields = ::std::vec::Vec::new(); [INFO] [stdout] 449 | | fields.push(::protobuf::reflect::accessor::make_option_accessor::<_, ::protobuf::types::ProtobufTypeFloat>( [INFO] [stdout] 450 | | "lat", [INFO] [stdout] ... | [INFO] [stdout] 464 | | }) [INFO] [stdout] | |______________^ mutable reference to mutable static [INFO] [stdout] | [INFO] [stdout] = note: mutable references to mutable statics are dangerous; it's undefined behavior if any other pointer to the static is used or if any other reference is created for the static while the mutable reference lives [INFO] [stdout] = note: for more information, see [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/pb/data_model.rs:484:15 [INFO] [stdout] | [INFO] [stdout] 484 | fn as_ref(&self) -> ::protobuf::reflect::ProtobufValueRef { [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] help: use `'_` for type paths [INFO] [stdout] | [INFO] [stdout] 484 | fn as_ref(&self) -> ::protobuf::reflect::ProtobufValueRef<'_> { [INFO] [stdout] | ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: creating a mutable reference to mutable static [INFO] [stdout] --> src/pb/data_model.rs:517:13 [INFO] [stdout] | [INFO] [stdout] 517 | instance.get(Meta::new) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ mutable reference to mutable static [INFO] [stdout] | [INFO] [stdout] = note: mutable references to mutable statics are dangerous; it's undefined behavior if any other pointer to the static is used or if any other reference is created for the static while the mutable reference lives [INFO] [stdout] = note: for more information, see [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: creating a mutable reference to mutable static [INFO] [stdout] --> src/pb/data_model.rs:852:13 [INFO] [stdout] | [INFO] [stdout] 852 | / descriptor.get(|| { [INFO] [stdout] 853 | | let mut fields = ::std::vec::Vec::new(); [INFO] [stdout] 854 | | fields.push(::protobuf::reflect::accessor::make_option_accessor::<_, ::protobuf::types::ProtobufTypeUint64>( [INFO] [stdout] 855 | | "ctime", [INFO] [stdout] ... | [INFO] [stdout] 889 | | }) [INFO] [stdout] | |______________^ mutable reference to mutable static [INFO] [stdout] | [INFO] [stdout] = note: mutable references to mutable statics are dangerous; it's undefined behavior if any other pointer to the static is used or if any other reference is created for the static while the mutable reference lives [INFO] [stdout] = note: for more information, see [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/pb/data_model.rs:913:15 [INFO] [stdout] | [INFO] [stdout] 913 | fn as_ref(&self) -> ::protobuf::reflect::ProtobufValueRef { [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] help: use `'_` for type paths [INFO] [stdout] | [INFO] [stdout] 913 | fn as_ref(&self) -> ::protobuf::reflect::ProtobufValueRef<'_> { [INFO] [stdout] | ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: creating a mutable reference to mutable static [INFO] [stdout] --> src/pb/data_model.rs:953:13 [INFO] [stdout] | [INFO] [stdout] 953 | instance.get(Node::new) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ mutable reference to mutable static [INFO] [stdout] | [INFO] [stdout] = note: mutable references to mutable statics are dangerous; it's undefined behavior if any other pointer to the static is used or if any other reference is created for the static while the mutable reference lives [INFO] [stdout] = note: for more information, see [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: creating a mutable reference to mutable static [INFO] [stdout] --> src/pb/data_model.rs:1615:13 [INFO] [stdout] | [INFO] [stdout] 1615 | / descriptor.get(|| { [INFO] [stdout] 1616 | | let mut fields = ::std::vec::Vec::new(); [INFO] [stdout] 1617 | | fields.push(::protobuf::reflect::accessor::make_option_accessor::<_, ::protobuf::types::ProtobufTypeUint64>( [INFO] [stdout] 1618 | | "id", [INFO] [stdout] ... | [INFO] [stdout] 1687 | | }) [INFO] [stdout] | |______________^ mutable reference to mutable static [INFO] [stdout] | [INFO] [stdout] = note: mutable references to mutable statics are dangerous; it's undefined behavior if any other pointer to the static is used or if any other reference is created for the static while the mutable reference lives [INFO] [stdout] = note: for more information, see [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/pb/data_model.rs:1718:15 [INFO] [stdout] | [INFO] [stdout] 1718 | fn as_ref(&self) -> ::protobuf::reflect::ProtobufValueRef { [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] help: use `'_` for type paths [INFO] [stdout] | [INFO] [stdout] 1718 | fn as_ref(&self) -> ::protobuf::reflect::ProtobufValueRef<'_> { [INFO] [stdout] | ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: creating a mutable reference to mutable static [INFO] [stdout] --> src/pb/data_model.rs:1747:13 [INFO] [stdout] | [INFO] [stdout] 1747 | instance.get(Arrow::new) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ mutable reference to mutable static [INFO] [stdout] | [INFO] [stdout] = note: mutable references to mutable statics are dangerous; it's undefined behavior if any other pointer to the static is used or if any other reference is created for the static while the mutable reference lives [INFO] [stdout] = note: for more information, see [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: creating a mutable reference to mutable static [INFO] [stdout] --> src/pb/data_model.rs:1901:13 [INFO] [stdout] | [INFO] [stdout] 1901 | / descriptor.get(|| { [INFO] [stdout] 1902 | | let mut fields = ::std::vec::Vec::new(); [INFO] [stdout] 1903 | | fields.push(::protobuf::reflect::accessor::make_option_accessor::<_, ::protobuf::types::ProtobufTypeUint64>( [INFO] [stdout] 1904 | | "from_node", [INFO] [stdout] ... | [INFO] [stdout] 1918 | | }) [INFO] [stdout] | |______________^ mutable reference to mutable static [INFO] [stdout] | [INFO] [stdout] = note: mutable references to mutable statics are dangerous; it's undefined behavior if any other pointer to the static is used or if any other reference is created for the static while the mutable reference lives [INFO] [stdout] = note: for more information, see [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/pb/data_model.rs:1938:15 [INFO] [stdout] | [INFO] [stdout] 1938 | fn as_ref(&self) -> ::protobuf::reflect::ProtobufValueRef { [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] help: use `'_` for type paths [INFO] [stdout] | [INFO] [stdout] 1938 | fn as_ref(&self) -> ::protobuf::reflect::ProtobufValueRef<'_> { [INFO] [stdout] | ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: creating a mutable reference to mutable static [INFO] [stdout] --> src/pb/data_model.rs:1968:13 [INFO] [stdout] | [INFO] [stdout] 1968 | instance.get(Screen::new) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ mutable reference to mutable static [INFO] [stdout] | [INFO] [stdout] = note: mutable references to mutable statics are dangerous; it's undefined behavior if any other pointer to the static is used or if any other reference is created for the static while the mutable reference lives [INFO] [stdout] = note: for more information, see [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: creating a mutable reference to mutable static [INFO] [stdout] --> src/pb/data_model.rs:2169:13 [INFO] [stdout] | [INFO] [stdout] 2169 | / ... descriptor.get(|| { [INFO] [stdout] 2170 | | ... let mut fields = ::std::vec::Vec::new(); [INFO] [stdout] 2171 | | ... fields.push(::protobuf::reflect::accessor::make_repeated_field_accessor::<_, ::protobuf::types::ProtobufTypeMessage [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/pb/data_model.rs:2212:15 [INFO] [stdout] | [INFO] [stdout] 2212 | fn as_ref(&self) -> ::protobuf::reflect::ProtobufValueRef { [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] help: use `'_` for type paths [INFO] [stdout] | [INFO] [stdout] 2212 | fn as_ref(&self) -> ::protobuf::reflect::ProtobufValueRef<'_> { [INFO] [stdout] | ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: creating a mutable reference to mutable static [INFO] [stdout] --> src/pb/data_model.rs:2413:9 [INFO] [stdout] | [INFO] [stdout] 2413 | / file_descriptor_proto_lazy.get(|| { [INFO] [stdout] 2414 | | parse_descriptor_proto() [INFO] [stdout] 2415 | | }) [INFO] [stdout] | |__________^ mutable reference to mutable static [INFO] [stdout] | [INFO] [stdout] = note: mutable references to mutable statics are dangerous; it's undefined behavior if any other pointer to the static is used or if any other reference is created for the static while the mutable reference lives [INFO] [stdout] = note: for more information, see [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `#[macro_use]` import [INFO] [stdout] --> src/bin/void.rs:6:1 [INFO] [stdout] | [INFO] [stdout] 6 | #[macro_use] [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 `#[macro_use]` import [INFO] [stdout] --> src/bin/void.rs:6:1 [INFO] [stdout] | [INFO] [stdout] 6 | #[macro_use] [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> test/screen.rs:124:17 [INFO] [stdout] | [INFO] [stdout] 124 | OpVec { ops: ops } [INFO] [stdout] | ^^^^^^^^ help: replace it with: `ops` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] = note: `#[warn(clippy::redundant_field_names)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `e` [INFO] [stdout] --> src/bin/void.rs:50:26 [INFO] [stdout] | [INFO] [stdout] 50 | .unwrap_or_else(|e| panic!("another void process is using this path already.")); [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_e` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `e` [INFO] [stdout] --> src/bin/void.rs:50:26 [INFO] [stdout] | [INFO] [stdout] 50 | .unwrap_or_else(|e| panic!("another void process is using this path already.")); [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_e` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: file opened with `create`, but `truncate` behavior not defined [INFO] [stdout] --> src/bin/void.rs:39:18 [INFO] [stdout] | [INFO] [stdout] 39 | .create(true) [INFO] [stdout] | ^^^^^^^^^^^^- help: add: `.truncate(true)` [INFO] [stdout] | [INFO] [stdout] = help: if you intend to overwrite an existing file entirely, call `.truncate(true)` [INFO] [stdout] = help: if you instead know that you may want to keep some parts of the old file, call `.truncate(false)` [INFO] [stdout] = help: alternatively, use `.append(true)` to append to the file instead of overwriting it [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#suspicious_open_options [INFO] [stdout] = note: `#[warn(clippy::suspicious_open_options)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: file opened with `create`, but `truncate` behavior not defined [INFO] [stdout] --> src/bin/void.rs:39:18 [INFO] [stdout] | [INFO] [stdout] 39 | .create(true) [INFO] [stdout] | ^^^^^^^^^^^^- help: add: `.truncate(true)` [INFO] [stdout] | [INFO] [stdout] = help: if you intend to overwrite an existing file entirely, call `.truncate(true)` [INFO] [stdout] = help: if you instead know that you may want to keep some parts of the old file, call `.truncate(false)` [INFO] [stdout] = help: alternatively, use `.append(true)` to append to the file instead of overwriting it [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#suspicious_open_options [INFO] [stdout] = note: `#[warn(clippy::suspicious_open_options)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref which would be done by auto-deref [INFO] [stdout] --> src/bin/void.rs:42:33 [INFO] [stdout] | [INFO] [stdout] 42 | print_usage(&*program); [INFO] [stdout] | ^^^^^^^^^ help: try: `&program` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] = note: `#[warn(clippy::explicit_auto_deref)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref which would be done by auto-deref [INFO] [stdout] --> src/bin/void.rs:42:33 [INFO] [stdout] | [INFO] [stdout] 42 | print_usage(&*program); [INFO] [stdout] | ^^^^^^^^^ help: try: `&program` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] = note: `#[warn(clippy::explicit_auto_deref)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of `unwrap_or_else` to construct default value [INFO] [stdout] --> src/bin/void.rs:56:35 [INFO] [stdout] | [INFO] [stdout] 56 | let mut screen = saved_screen.unwrap_or_else(Screen::default); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `unwrap_or_default()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unwrap_or_default [INFO] [stdout] = note: `#[warn(clippy::unwrap_or_default)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of `unwrap_or_else` to construct default value [INFO] [stdout] --> src/bin/void.rs:56:35 [INFO] [stdout] | [INFO] [stdout] 56 | let mut screen = saved_screen.unwrap_or_else(Screen::default); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `unwrap_or_default()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unwrap_or_default [INFO] [stdout] = note: `#[warn(clippy::unwrap_or_default)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stdout] --> test/screen.rs:127:29 [INFO] [stdout] | [INFO] [stdout] 127 | fn shrink(&self) -> Box> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021! [INFO] [stdout] = note: for more information, see [INFO] [stdout] = note: `#[warn(bare_trait_objects)]` (part of `#[warn(rust_2021_compatibility)]`) on by default [INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn` [INFO] [stdout] | [INFO] [stdout] 127 | fn shrink(&self) -> Box> { [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref which would be done by auto-deref [INFO] [stdout] --> test/screen.rs:49:30 [INFO] [stdout] | [INFO] [stdout] 49 | Op { event: g.choose(&*events).unwrap().clone() } [INFO] [stdout] | ^^^^^^^^ help: try: `&events` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] = note: `#[warn(clippy::explicit_auto_deref)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref which would be done by auto-deref [INFO] [stdout] --> test/screen.rs:92:36 [INFO] [stdout] | [INFO] [stdout] 92 | let command = g.choose(&*commands).unwrap().clone(); [INFO] [stdout] | ^^^^^^^^^^ help: try: `&commands` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `.clone()` on a double reference, which returns `&str` instead of cloning the inner type [INFO] [stdout] --> test/screen.rs:92:56 [INFO] [stdout] | [INFO] [stdout] 92 | let command = g.choose(&*commands).unwrap().clone(); [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(suspicious_double_ref_op)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 4.31s [INFO] running `Command { std: "docker" "inspect" "0de9b30edddd85c29a870930319710713dbc379b28fdfbf5094c4ec87c3f4173", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "0de9b30edddd85c29a870930319710713dbc379b28fdfbf5094c4ec87c3f4173", kill_on_drop: false }` [INFO] [stdout] 0de9b30edddd85c29a870930319710713dbc379b28fdfbf5094c4ec87c3f4173