[INFO] cloning repository https://github.com/nzentzis/ysh [INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/nzentzis/ysh" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fnzentzis%2Fysh", kill_on_drop: false }` [INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fnzentzis%2Fysh'... [INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }` [INFO] [stdout] d39ab2b957db6ccf62d6eee8fe0dbe8808387e3c [INFO] linting nzentzis/ysh against nightly for clippy-nonminimal_bool-denied [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fnzentzis%2Fysh" "/workspace/builds/worker-1-tc1/source", kill_on_drop: false }` [INFO] [stderr] Cloning into '/workspace/builds/worker-1-tc1/source'... [INFO] [stderr] done. [INFO] started tweaking git repo https://github.com/nzentzis/ysh [INFO] finished tweaking git repo https://github.com/nzentzis/ysh [INFO] tweaked toml for git repo https://github.com/nzentzis/ysh written to /workspace/builds/worker-1-tc1/source/Cargo.toml [INFO] validating manifest of git repo https://github.com/nzentzis/ysh on toolchain nightly [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+nightly" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }` [INFO] crate git repo https://github.com/nzentzis/ysh already has a lockfile, it will not be regenerated [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+nightly" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] [stderr] warning: `package.edition` is unspecified, defaulting to `2015` while the latest is `2024` [INFO] [stderr] Downloading crates ... [INFO] [stderr] Downloaded stable_deref_trait v1.0.0 [INFO] [stderr] Downloaded same-file v1.0.2 [INFO] [stderr] Downloaded smallvec v0.6.3 [INFO] [stderr] Downloaded owning_ref v0.3.3 [INFO] [stderr] Downloaded bitflags v1.0.1 [INFO] [stderr] Downloaded parking_lot v0.5.4 [INFO] [stderr] Downloaded walkdir v2.1.4 [INFO] [stderr] Downloaded crossbeam-deque v0.5.1 [INFO] [stderr] Downloaded parking_lot_core v0.2.13 [INFO] [stderr] Downloaded crossbeam-utils v0.4.1 [INFO] [stderr] Downloaded rand_core v0.2.1 [INFO] [stderr] Downloaded crossbeam v0.4.1 [INFO] [stderr] Downloaded crossbeam-epoch v0.5.1 [INFO] [stderr] Downloaded log v0.4.3 [INFO] [stderr] Downloaded crossbeam-channel v0.2.3 [INFO] [stderr] Downloaded globset v0.4.0 [INFO] [stderr] Downloaded nix v0.9.0 [INFO] [stderr] Downloaded rand v0.5.4 [INFO] [stderr] Downloaded futures v0.1.20 [INFO] [stderr] Downloaded libc v0.2.36 [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] 630f99676321c12628353769d005214a361ee1399334e89c2694ecb5f2bd8bf2 [INFO] running `Command { std: "docker" "start" "-a" "630f99676321c12628353769d005214a361ee1399334e89c2694ecb5f2bd8bf2", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "630f99676321c12628353769d005214a361ee1399334e89c2694ecb5f2bd8bf2", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "630f99676321c12628353769d005214a361ee1399334e89c2694ecb5f2bd8bf2", kill_on_drop: false }` [INFO] [stdout] 630f99676321c12628353769d005214a361ee1399334e89c2694ecb5f2bd8bf2 [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] 8b593f4f6a7336cf88c99face7d2acebd0618dc96c7665b81edda66bbb1da638 [INFO] running `Command { std: "docker" "start" "-a" "8b593f4f6a7336cf88c99face7d2acebd0618dc96c7665b81edda66bbb1da638", kill_on_drop: false }` [INFO] [stderr] warning: `package.edition` is unspecified, defaulting to `2015` while the latest is `2024` [INFO] [stderr] Checking libc v0.2.36 [INFO] [stderr] Checking lazy_static v1.0.0 [INFO] [stderr] Checking cfg-if v0.1.2 [INFO] [stderr] Checking stable_deref_trait v1.0.0 [INFO] [stderr] Checking unreachable v1.0.0 [INFO] [stderr] Checking crossbeam-utils v0.4.1 [INFO] [stderr] Checking ucd-util v0.1.1 [INFO] [stderr] Checking rand_core v0.2.1 [INFO] [stderr] Checking utf8-ranges v1.0.0 [INFO] [stderr] Checking owning_ref v0.3.3 [INFO] [stderr] Checking log v0.4.3 [INFO] [stderr] Checking crossbeam-utils v0.5.0 [INFO] [stderr] Checking smallvec v0.6.3 [INFO] [stderr] Checking thread_local v0.3.5 [INFO] [stderr] Checking same-file v1.0.2 [INFO] [stderr] Checking lazy_static v0.2.11 [INFO] [stderr] Checking walkdir v2.1.4 [INFO] [stderr] Checking regex-syntax v0.5.6 [INFO] [stderr] Checking futures v0.1.20 [INFO] [stderr] Checking crossbeam-epoch v0.5.1 [INFO] [stderr] Checking rand v0.4.2 [INFO] [stderr] Checking memchr v2.0.1 [INFO] [stderr] Checking rand v0.5.4 [INFO] [stderr] Checking termion v1.5.1 [INFO] [stderr] Checking nix v0.9.0 [INFO] [stderr] Checking crossbeam-deque v0.5.1 [INFO] [stderr] Checking aho-corasick v0.6.4 [INFO] [stderr] Checking parking_lot_core v0.2.13 [INFO] [stderr] Checking parking_lot v0.5.4 [INFO] [stderr] Checking crossbeam-channel v0.2.3 [INFO] [stderr] Checking regex v0.2.11 [INFO] [stderr] Checking crossbeam v0.4.1 [INFO] [stderr] Checking globset v0.4.0 [INFO] [stderr] Checking ysh v0.1.0 (/opt/rustwide/workdir) [INFO] [stdout] warning: multiple lines skipped by escaped newline [INFO] [stdout] --> src/library/sequence.rs:75:59 [INFO] [stdout] | [INFO] [stdout] 75 | elements of the sequence are exhausted.\n\n\ [INFO] [stdout] | ___________________________________________________________^ [INFO] [stdout] 76 | | [INFO] [stdout] 77 | | With two arguments, build a transformer that reduces input \ [INFO] [stdout] | |_______________^ skipping everything up to and including this point [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple lines skipped by escaped newline [INFO] [stdout] --> src/library/sequence.rs:81:56 [INFO] [stdout] | [INFO] [stdout] 81 | arguments to the reduction function.\n\n\ [INFO] [stdout] | ________________________________________________________^ [INFO] [stdout] 82 | | [INFO] [stdout] 83 | | For example:\n\ [INFO] [stdout] | |_______________^ skipping everything up to and including this point [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple lines skipped by escaped newline [INFO] [stdout] --> src/library/sequence.rs:92:72 [INFO] [stdout] | [INFO] [stdout] 92 | for which the given function returns a truthy value.\n\n\ [INFO] [stdout] | ________________________________________________________________________^ [INFO] [stdout] 93 | | [INFO] [stdout] 94 | | With one argument, build a sequence transformer which filters \ [INFO] [stdout] | |_______________^ skipping everything up to and including this point [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple lines skipped by escaped newline [INFO] [stdout] --> src/library/sequence.rs:97:42 [INFO] [stdout] | [INFO] [stdout] 97 | and return the result.\n\n\ [INFO] [stdout] | __________________________________________^ [INFO] [stdout] 98 | | [INFO] [stdout] 99 | | This function produces a lazy sequence; filtering is performed \ [INFO] [stdout] | |_______________^ skipping everything up to and including this point [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple lines skipped by escaped newline [INFO] [stdout] --> src/library/sequence.rs:75:59 [INFO] [stdout] | [INFO] [stdout] 75 | elements of the sequence are exhausted.\n\n\ [INFO] [stdout] | ___________________________________________________________^ [INFO] [stdout] 76 | | [INFO] [stdout] 77 | | With two arguments, build a transformer that reduces input \ [INFO] [stdout] | |_______________^ skipping everything up to and including this point [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple lines skipped by escaped newline [INFO] [stdout] --> src/library/sequence.rs:81:56 [INFO] [stdout] | [INFO] [stdout] 81 | arguments to the reduction function.\n\n\ [INFO] [stdout] | ________________________________________________________^ [INFO] [stdout] 82 | | [INFO] [stdout] 83 | | For example:\n\ [INFO] [stdout] | |_______________^ skipping everything up to and including this point [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple lines skipped by escaped newline [INFO] [stdout] --> src/library/sequence.rs:92:72 [INFO] [stdout] | [INFO] [stdout] 92 | for which the given function returns a truthy value.\n\n\ [INFO] [stdout] | ________________________________________________________________________^ [INFO] [stdout] 93 | | [INFO] [stdout] 94 | | With one argument, build a sequence transformer which filters \ [INFO] [stdout] | |_______________^ skipping everything up to and including this point [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple lines skipped by escaped newline [INFO] [stdout] --> src/library/sequence.rs:97:42 [INFO] [stdout] | [INFO] [stdout] 97 | and return the result.\n\n\ [INFO] [stdout] | __________________________________________^ [INFO] [stdout] 98 | | [INFO] [stdout] 99 | | This function produces a lazy sequence; filtering is performed \ [INFO] [stdout] | |_______________^ skipping everything up to and including this point [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/library/sequence.rs:138:9 [INFO] [stdout] | [INFO] [stdout] 138 | iters: iters [INFO] [stdout] | ^^^^^^^^^^^^ help: replace it with: `iters` [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 import: `data::*` [INFO] [stdout] --> src/library/async.rs:2:5 [INFO] [stdout] | [INFO] [stdout] 2 | use data::*; [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `Arc`, `atomic`, and `mpsc` [INFO] [stdout] --> src/library/filesystem.rs:2:17 [INFO] [stdout] | [INFO] [stdout] 2 | use std::sync::{atomic, mpsc, Arc}; [INFO] [stdout] | ^^^^^^ ^^^^ ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::io` [INFO] [stdout] --> src/library/filesystem.rs:4:5 [INFO] [stdout] | [INFO] [stdout] 4 | use std::io; [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crossbeam::queue::MsQueue` [INFO] [stdout] --> src/library/filesystem.rs:10:5 [INFO] [stdout] | [INFO] [stdout] 10 | use crossbeam::queue::MsQueue; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::thread` [INFO] [stdout] --> src/library/filesystem.rs:49:9 [INFO] [stdout] | [INFO] [stdout] 49 | use std::thread; [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary trailing semicolon [INFO] [stdout] --> src/reader.rs:201:6 [INFO] [stdout] | [INFO] [stdout] 201 | }; [INFO] [stdout] | ^ help: remove this semicolon [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(redundant_semicolons)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `evaluate::*` [INFO] [stdout] --> src/stream/poly.rs:9:5 [INFO] [stdout] | [INFO] [stdout] 9 | use evaluate::*; [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/stream/poly.rs:510:25 [INFO] [stdout] | [INFO] [stdout] 510 | start: start, [INFO] [stdout] | ^^^^^^^^^^^^ help: replace it with: `start` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `ParseOutput` [INFO] [stdout] --> src/completion.rs:260:22 [INFO] [stdout] | [INFO] [stdout] 260 | use reader::{ParseOutput, ParseContext}; [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::path::PathBuf` [INFO] [stdout] --> src/pipeline.rs:2:5 [INFO] [stdout] | [INFO] [stdout] 2 | use std::path::PathBuf; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::error::Error` [INFO] [stdout] --> src/pipeline.rs:4:5 [INFO] [stdout] | [INFO] [stdout] 4 | use std::error::Error; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `empty` and `run_fn` [INFO] [stdout] --> src/pipeline.rs:11:27 [INFO] [stdout] | [INFO] [stdout] 11 | use environment::{global, empty, run_fn}; [INFO] [stdout] | ^^^^^ ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `terminal` [INFO] [stdout] --> src/pipeline.rs:197:13 [INFO] [stdout] | [INFO] [stdout] 197 | use terminal; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `pipeline::ActivePipeline` [INFO] [stdout] --> src/main.rs:46:5 [INFO] [stdout] | [INFO] [stdout] 46 | use pipeline::ActivePipeline; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated constant `std::sync::atomic::ATOMIC_BOOL_INIT`: the `new` function is now preferred [INFO] [stdout] --> src/main.rs:39:47 [INFO] [stdout] | [INFO] [stdout] 39 | use std::sync::atomic::{AtomicBool, Ordering, ATOMIC_BOOL_INIT}; [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(deprecated)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated constant `std::sync::atomic::ATOMIC_BOOL_INIT`: the `new` function is now preferred [INFO] [stdout] --> src/main.rs:50:32 [INFO] [stdout] | [INFO] [stdout] 50 | static RUN_SHELL: AtomicBool = ATOMIC_BOOL_INIT; [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] help: replace the use of the deprecated constant [INFO] [stdout] | [INFO] [stdout] 50 - static RUN_SHELL: AtomicBool = ATOMIC_BOOL_INIT; [INFO] [stdout] 50 + static RUN_SHELL: AtomicBool = AtomicBool::new(false); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated constant `std::sync::atomic::ATOMIC_BOOL_INIT`: the `new` function is now preferred [INFO] [stdout] --> src/main.rs:51:33 [INFO] [stdout] | [INFO] [stdout] 51 | static PLAN_DEBUG: AtomicBool = ATOMIC_BOOL_INIT; [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] help: replace the use of the deprecated constant [INFO] [stdout] | [INFO] [stdout] 51 - static PLAN_DEBUG: AtomicBool = ATOMIC_BOOL_INIT; [INFO] [stdout] 51 + static PLAN_DEBUG: AtomicBool = AtomicBool::new(false); [INFO] [stdout] | [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/main.rs:53:1 [INFO] [stdout] | [INFO] [stdout] 53 | / lazy_static! { [INFO] [stdout] 54 | | static ref DOC_EXIT: data::Documentation = data::Documentation::new() [INFO] [stdout] 55 | | .short("Exits the shell's core REPL") [INFO] [stdout] 56 | | .desc("This function sets a flag, so the core shell loop will exit \ [INFO] [stdout] 57 | | instead of repeating the next time it would read user input."); [INFO] [stdout] 58 | | } [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/data.rs:1217:1 [INFO] [stdout] | [INFO] [stdout] 1217 | / lazy_static! { [INFO] [stdout] 1218 | | static ref IDENT_INTERN_TBL: RwLock>> [INFO] [stdout] 1219 | | = RwLock::new(HashMap::new()); [INFO] [stdout] 1220 | | } [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::atomic::ATOMIC_BOOL_INIT`: the `new` function is now preferred [INFO] [stdout] --> src/globals.rs:3:57 [INFO] [stdout] | [INFO] [stdout] 3 | static ENABLE_JOB_CONTROL: atomic::AtomicBool = atomic::ATOMIC_BOOL_INIT; [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] help: replace the use of the deprecated constant [INFO] [stdout] | [INFO] [stdout] 3 - static ENABLE_JOB_CONTROL: atomic::AtomicBool = atomic::ATOMIC_BOOL_INIT; [INFO] [stdout] 3 + static ENABLE_JOB_CONTROL: atomic::AtomicBool = atomic::AtomicBool::new(false); [INFO] [stdout] | [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/environment.rs:103:1 [INFO] [stdout] | [INFO] [stdout] 103 | / lazy_static! { [INFO] [stdout] 104 | | static ref ENV: GlobalEnvironment = GlobalEnvironment::new(); [INFO] [stdout] 105 | | static ref EMPTY: Environment = Environment::new(); [INFO] [stdout] 106 | | } [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/environment.rs:103:1 [INFO] [stdout] | [INFO] [stdout] 103 | / lazy_static! { [INFO] [stdout] 104 | | static ref ENV: GlobalEnvironment = GlobalEnvironment::new(); [INFO] [stdout] 105 | | static ref EMPTY: Environment = Environment::new(); [INFO] [stdout] 106 | | } [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/library/core.rs:9:1 [INFO] [stdout] | [INFO] [stdout] 9 | / lazy_static! { [INFO] [stdout] 10 | | static ref DOC_IF: Documentation = Documentation::new() [INFO] [stdout] 11 | | .form(&["test", "then"]) [INFO] [stdout] 12 | | .form(&["test", "then", "else"]) [INFO] [stdout] ... | [INFO] [stdout] 103 | | and display the documentation of the value it refers to."); [INFO] [stdout] 104 | | } [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/library/core.rs:9:1 [INFO] [stdout] | [INFO] [stdout] 9 | / lazy_static! { [INFO] [stdout] 10 | | static ref DOC_IF: Documentation = Documentation::new() [INFO] [stdout] 11 | | .form(&["test", "then"]) [INFO] [stdout] 12 | | .form(&["test", "then", "else"]) [INFO] [stdout] ... | [INFO] [stdout] 103 | | and display the documentation of the value it refers to."); [INFO] [stdout] 104 | | } [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/library/core.rs:9:1 [INFO] [stdout] | [INFO] [stdout] 9 | / lazy_static! { [INFO] [stdout] 10 | | static ref DOC_IF: Documentation = Documentation::new() [INFO] [stdout] 11 | | .form(&["test", "then"]) [INFO] [stdout] 12 | | .form(&["test", "then", "else"]) [INFO] [stdout] ... | [INFO] [stdout] 103 | | and display the documentation of the value it refers to."); [INFO] [stdout] 104 | | } [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/library/core.rs:9:1 [INFO] [stdout] | [INFO] [stdout] 9 | / lazy_static! { [INFO] [stdout] 10 | | static ref DOC_IF: Documentation = Documentation::new() [INFO] [stdout] 11 | | .form(&["test", "then"]) [INFO] [stdout] 12 | | .form(&["test", "then", "else"]) [INFO] [stdout] ... | [INFO] [stdout] 103 | | and display the documentation of the value it refers to."); [INFO] [stdout] 104 | | } [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/library/core.rs:9:1 [INFO] [stdout] | [INFO] [stdout] 9 | / lazy_static! { [INFO] [stdout] 10 | | static ref DOC_IF: Documentation = Documentation::new() [INFO] [stdout] 11 | | .form(&["test", "then"]) [INFO] [stdout] 12 | | .form(&["test", "then", "else"]) [INFO] [stdout] ... | [INFO] [stdout] 103 | | and display the documentation of the value it refers to."); [INFO] [stdout] 104 | | } [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/library/core.rs:9:1 [INFO] [stdout] | [INFO] [stdout] 9 | / lazy_static! { [INFO] [stdout] 10 | | static ref DOC_IF: Documentation = Documentation::new() [INFO] [stdout] 11 | | .form(&["test", "then"]) [INFO] [stdout] 12 | | .form(&["test", "then", "else"]) [INFO] [stdout] ... | [INFO] [stdout] 103 | | and display the documentation of the value it refers to."); [INFO] [stdout] 104 | | } [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/library/core.rs:9:1 [INFO] [stdout] | [INFO] [stdout] 9 | / lazy_static! { [INFO] [stdout] 10 | | static ref DOC_IF: Documentation = Documentation::new() [INFO] [stdout] 11 | | .form(&["test", "then"]) [INFO] [stdout] 12 | | .form(&["test", "then", "else"]) [INFO] [stdout] ... | [INFO] [stdout] 103 | | and display the documentation of the value it refers to."); [INFO] [stdout] 104 | | } [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/library/core.rs:9:1 [INFO] [stdout] | [INFO] [stdout] 9 | / lazy_static! { [INFO] [stdout] 10 | | static ref DOC_IF: Documentation = Documentation::new() [INFO] [stdout] 11 | | .form(&["test", "then"]) [INFO] [stdout] 12 | | .form(&["test", "then", "else"]) [INFO] [stdout] ... | [INFO] [stdout] 103 | | and display the documentation of the value it refers to."); [INFO] [stdout] 104 | | } [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/library/core.rs:9:1 [INFO] [stdout] | [INFO] [stdout] 9 | / lazy_static! { [INFO] [stdout] 10 | | static ref DOC_IF: Documentation = Documentation::new() [INFO] [stdout] 11 | | .form(&["test", "then"]) [INFO] [stdout] 12 | | .form(&["test", "then", "else"]) [INFO] [stdout] ... | [INFO] [stdout] 103 | | and display the documentation of the value it refers to."); [INFO] [stdout] 104 | | } [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/library/core.rs:9:1 [INFO] [stdout] | [INFO] [stdout] 9 | / lazy_static! { [INFO] [stdout] 10 | | static ref DOC_IF: Documentation = Documentation::new() [INFO] [stdout] 11 | | .form(&["test", "then"]) [INFO] [stdout] 12 | | .form(&["test", "then", "else"]) [INFO] [stdout] ... | [INFO] [stdout] 103 | | and display the documentation of the value it refers to."); [INFO] [stdout] 104 | | } [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/library/core.rs:9:1 [INFO] [stdout] | [INFO] [stdout] 9 | / lazy_static! { [INFO] [stdout] 10 | | static ref DOC_IF: Documentation = Documentation::new() [INFO] [stdout] 11 | | .form(&["test", "then"]) [INFO] [stdout] 12 | | .form(&["test", "then", "else"]) [INFO] [stdout] ... | [INFO] [stdout] 103 | | and display the documentation of the value it refers to."); [INFO] [stdout] 104 | | } [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/library/core.rs:9:1 [INFO] [stdout] | [INFO] [stdout] 9 | / lazy_static! { [INFO] [stdout] 10 | | static ref DOC_IF: Documentation = Documentation::new() [INFO] [stdout] 11 | | .form(&["test", "then"]) [INFO] [stdout] 12 | | .form(&["test", "then", "else"]) [INFO] [stdout] ... | [INFO] [stdout] 103 | | and display the documentation of the value it refers to."); [INFO] [stdout] 104 | | } [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/library/core.rs:9:1 [INFO] [stdout] | [INFO] [stdout] 9 | / lazy_static! { [INFO] [stdout] 10 | | static ref DOC_IF: Documentation = Documentation::new() [INFO] [stdout] 11 | | .form(&["test", "then"]) [INFO] [stdout] 12 | | .form(&["test", "then", "else"]) [INFO] [stdout] ... | [INFO] [stdout] 103 | | and display the documentation of the value it refers to."); [INFO] [stdout] 104 | | } [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/library/operators.rs:6:1 [INFO] [stdout] | [INFO] [stdout] 6 | / lazy_static! { [INFO] [stdout] 7 | | static ref DOC_ADD: Documentation = Documentation::new() [INFO] [stdout] 8 | | .origin("ops") [INFO] [stdout] 9 | | .form(&["exprs*"]) [INFO] [stdout] ... | [INFO] [stdout] 118 | | up the key or keys."); [INFO] [stdout] 119 | | } [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/library/operators.rs:6:1 [INFO] [stdout] | [INFO] [stdout] 6 | / lazy_static! { [INFO] [stdout] 7 | | static ref DOC_ADD: Documentation = Documentation::new() [INFO] [stdout] 8 | | .origin("ops") [INFO] [stdout] 9 | | .form(&["exprs*"]) [INFO] [stdout] ... | [INFO] [stdout] 118 | | up the key or keys."); [INFO] [stdout] 119 | | } [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/library/operators.rs:6:1 [INFO] [stdout] | [INFO] [stdout] 6 | / lazy_static! { [INFO] [stdout] 7 | | static ref DOC_ADD: Documentation = Documentation::new() [INFO] [stdout] 8 | | .origin("ops") [INFO] [stdout] 9 | | .form(&["exprs*"]) [INFO] [stdout] ... | [INFO] [stdout] 118 | | up the key or keys."); [INFO] [stdout] 119 | | } [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/library/operators.rs:6:1 [INFO] [stdout] | [INFO] [stdout] 6 | / lazy_static! { [INFO] [stdout] 7 | | static ref DOC_ADD: Documentation = Documentation::new() [INFO] [stdout] 8 | | .origin("ops") [INFO] [stdout] 9 | | .form(&["exprs*"]) [INFO] [stdout] ... | [INFO] [stdout] 118 | | up the key or keys."); [INFO] [stdout] 119 | | } [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/library/operators.rs:6:1 [INFO] [stdout] | [INFO] [stdout] 6 | / lazy_static! { [INFO] [stdout] 7 | | static ref DOC_ADD: Documentation = Documentation::new() [INFO] [stdout] 8 | | .origin("ops") [INFO] [stdout] 9 | | .form(&["exprs*"]) [INFO] [stdout] ... | [INFO] [stdout] 118 | | up the key or keys."); [INFO] [stdout] 119 | | } [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/library/operators.rs:6:1 [INFO] [stdout] | [INFO] [stdout] 6 | / lazy_static! { [INFO] [stdout] 7 | | static ref DOC_ADD: Documentation = Documentation::new() [INFO] [stdout] 8 | | .origin("ops") [INFO] [stdout] 9 | | .form(&["exprs*"]) [INFO] [stdout] ... | [INFO] [stdout] 118 | | up the key or keys."); [INFO] [stdout] 119 | | } [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/library/operators.rs:6:1 [INFO] [stdout] | [INFO] [stdout] 6 | / lazy_static! { [INFO] [stdout] 7 | | static ref DOC_ADD: Documentation = Documentation::new() [INFO] [stdout] 8 | | .origin("ops") [INFO] [stdout] 9 | | .form(&["exprs*"]) [INFO] [stdout] ... | [INFO] [stdout] 118 | | up the key or keys."); [INFO] [stdout] 119 | | } [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/library/operators.rs:6:1 [INFO] [stdout] | [INFO] [stdout] 6 | / lazy_static! { [INFO] [stdout] 7 | | static ref DOC_ADD: Documentation = Documentation::new() [INFO] [stdout] 8 | | .origin("ops") [INFO] [stdout] 9 | | .form(&["exprs*"]) [INFO] [stdout] ... | [INFO] [stdout] 118 | | up the key or keys."); [INFO] [stdout] 119 | | } [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/library/operators.rs:6:1 [INFO] [stdout] | [INFO] [stdout] 6 | / lazy_static! { [INFO] [stdout] 7 | | static ref DOC_ADD: Documentation = Documentation::new() [INFO] [stdout] 8 | | .origin("ops") [INFO] [stdout] 9 | | .form(&["exprs*"]) [INFO] [stdout] ... | [INFO] [stdout] 118 | | up the key or keys."); [INFO] [stdout] 119 | | } [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/library/operators.rs:6:1 [INFO] [stdout] | [INFO] [stdout] 6 | / lazy_static! { [INFO] [stdout] 7 | | static ref DOC_ADD: Documentation = Documentation::new() [INFO] [stdout] 8 | | .origin("ops") [INFO] [stdout] 9 | | .form(&["exprs*"]) [INFO] [stdout] ... | [INFO] [stdout] 118 | | up the key or keys."); [INFO] [stdout] 119 | | } [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/library/operators.rs:6:1 [INFO] [stdout] | [INFO] [stdout] 6 | / lazy_static! { [INFO] [stdout] 7 | | static ref DOC_ADD: Documentation = Documentation::new() [INFO] [stdout] 8 | | .origin("ops") [INFO] [stdout] 9 | | .form(&["exprs*"]) [INFO] [stdout] ... | [INFO] [stdout] 118 | | up the key or keys."); [INFO] [stdout] 119 | | } [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/library/operators.rs:6:1 [INFO] [stdout] | [INFO] [stdout] 6 | / lazy_static! { [INFO] [stdout] 7 | | static ref DOC_ADD: Documentation = Documentation::new() [INFO] [stdout] 8 | | .origin("ops") [INFO] [stdout] 9 | | .form(&["exprs*"]) [INFO] [stdout] ... | [INFO] [stdout] 118 | | up the key or keys."); [INFO] [stdout] 119 | | } [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/library/operators.rs:6:1 [INFO] [stdout] | [INFO] [stdout] 6 | / lazy_static! { [INFO] [stdout] 7 | | static ref DOC_ADD: Documentation = Documentation::new() [INFO] [stdout] 8 | | .origin("ops") [INFO] [stdout] 9 | | .form(&["exprs*"]) [INFO] [stdout] ... | [INFO] [stdout] 118 | | up the key or keys."); [INFO] [stdout] 119 | | } [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/library/operators.rs:6:1 [INFO] [stdout] | [INFO] [stdout] 6 | / lazy_static! { [INFO] [stdout] 7 | | static ref DOC_ADD: Documentation = Documentation::new() [INFO] [stdout] 8 | | .origin("ops") [INFO] [stdout] 9 | | .form(&["exprs*"]) [INFO] [stdout] ... | [INFO] [stdout] 118 | | up the key or keys."); [INFO] [stdout] 119 | | } [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/library/operators.rs:6:1 [INFO] [stdout] | [INFO] [stdout] 6 | / lazy_static! { [INFO] [stdout] 7 | | static ref DOC_ADD: Documentation = Documentation::new() [INFO] [stdout] 8 | | .origin("ops") [INFO] [stdout] 9 | | .form(&["exprs*"]) [INFO] [stdout] ... | [INFO] [stdout] 118 | | up the key or keys."); [INFO] [stdout] 119 | | } [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/library/operators.rs:6:1 [INFO] [stdout] | [INFO] [stdout] 6 | / lazy_static! { [INFO] [stdout] 7 | | static ref DOC_ADD: Documentation = Documentation::new() [INFO] [stdout] 8 | | .origin("ops") [INFO] [stdout] 9 | | .form(&["exprs*"]) [INFO] [stdout] ... | [INFO] [stdout] 118 | | up the key or keys."); [INFO] [stdout] 119 | | } [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/library/sequence.rs:6:1 [INFO] [stdout] | [INFO] [stdout] 6 | / lazy_static! { [INFO] [stdout] 7 | | static ref DOC_MAP: Documentation = Documentation::new() [INFO] [stdout] 8 | | .form(&["fn"]) [INFO] [stdout] 9 | | .form(&["fn", "seq"]) [INFO] [stdout] ... | [INFO] [stdout] 100 | | as needed."); [INFO] [stdout] 101 | | } [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/library/sequence.rs:6:1 [INFO] [stdout] | [INFO] [stdout] 6 | / lazy_static! { [INFO] [stdout] 7 | | static ref DOC_MAP: Documentation = Documentation::new() [INFO] [stdout] 8 | | .form(&["fn"]) [INFO] [stdout] 9 | | .form(&["fn", "seq"]) [INFO] [stdout] ... | [INFO] [stdout] 100 | | as needed."); [INFO] [stdout] 101 | | } [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/library/sequence.rs:6:1 [INFO] [stdout] | [INFO] [stdout] 6 | / lazy_static! { [INFO] [stdout] 7 | | static ref DOC_MAP: Documentation = Documentation::new() [INFO] [stdout] 8 | | .form(&["fn"]) [INFO] [stdout] 9 | | .form(&["fn", "seq"]) [INFO] [stdout] ... | [INFO] [stdout] 100 | | as needed."); [INFO] [stdout] 101 | | } [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/library/sequence.rs:6:1 [INFO] [stdout] | [INFO] [stdout] 6 | / lazy_static! { [INFO] [stdout] 7 | | static ref DOC_MAP: Documentation = Documentation::new() [INFO] [stdout] 8 | | .form(&["fn"]) [INFO] [stdout] 9 | | .form(&["fn", "seq"]) [INFO] [stdout] ... | [INFO] [stdout] 100 | | as needed."); [INFO] [stdout] 101 | | } [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/library/sequence.rs:6:1 [INFO] [stdout] | [INFO] [stdout] 6 | / lazy_static! { [INFO] [stdout] 7 | | static ref DOC_MAP: Documentation = Documentation::new() [INFO] [stdout] 8 | | .form(&["fn"]) [INFO] [stdout] 9 | | .form(&["fn", "seq"]) [INFO] [stdout] ... | [INFO] [stdout] 100 | | as needed."); [INFO] [stdout] 101 | | } [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/library/sequence.rs:6:1 [INFO] [stdout] | [INFO] [stdout] 6 | / lazy_static! { [INFO] [stdout] 7 | | static ref DOC_MAP: Documentation = Documentation::new() [INFO] [stdout] 8 | | .form(&["fn"]) [INFO] [stdout] 9 | | .form(&["fn", "seq"]) [INFO] [stdout] ... | [INFO] [stdout] 100 | | as needed."); [INFO] [stdout] 101 | | } [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/library/sequence.rs:6:1 [INFO] [stdout] | [INFO] [stdout] 6 | / lazy_static! { [INFO] [stdout] 7 | | static ref DOC_MAP: Documentation = Documentation::new() [INFO] [stdout] 8 | | .form(&["fn"]) [INFO] [stdout] 9 | | .form(&["fn", "seq"]) [INFO] [stdout] ... | [INFO] [stdout] 100 | | as needed."); [INFO] [stdout] 101 | | } [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/library/sequence.rs:6:1 [INFO] [stdout] | [INFO] [stdout] 6 | / lazy_static! { [INFO] [stdout] 7 | | static ref DOC_MAP: Documentation = Documentation::new() [INFO] [stdout] 8 | | .form(&["fn"]) [INFO] [stdout] 9 | | .form(&["fn", "seq"]) [INFO] [stdout] ... | [INFO] [stdout] 100 | | as needed."); [INFO] [stdout] 101 | | } [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/library/sequence.rs:6:1 [INFO] [stdout] | [INFO] [stdout] 6 | / lazy_static! { [INFO] [stdout] 7 | | static ref DOC_MAP: Documentation = Documentation::new() [INFO] [stdout] 8 | | .form(&["fn"]) [INFO] [stdout] 9 | | .form(&["fn", "seq"]) [INFO] [stdout] ... | [INFO] [stdout] 100 | | as needed."); [INFO] [stdout] 101 | | } [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/library/sequence.rs:6:1 [INFO] [stdout] | [INFO] [stdout] 6 | / lazy_static! { [INFO] [stdout] 7 | | static ref DOC_MAP: Documentation = Documentation::new() [INFO] [stdout] 8 | | .form(&["fn"]) [INFO] [stdout] 9 | | .form(&["fn", "seq"]) [INFO] [stdout] ... | [INFO] [stdout] 100 | | as needed."); [INFO] [stdout] 101 | | } [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/library/sequence.rs:6:1 [INFO] [stdout] | [INFO] [stdout] 6 | / lazy_static! { [INFO] [stdout] 7 | | static ref DOC_MAP: Documentation = Documentation::new() [INFO] [stdout] 8 | | .form(&["fn"]) [INFO] [stdout] 9 | | .form(&["fn", "seq"]) [INFO] [stdout] ... | [INFO] [stdout] 100 | | as needed."); [INFO] [stdout] 101 | | } [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/library/builtins.rs:5:1 [INFO] [stdout] | [INFO] [stdout] 5 | / lazy_static! { [INFO] [stdout] 6 | | static ref DOC_CD: Documentation = Documentation::new() [INFO] [stdout] 7 | | .form(&["dir"]) [INFO] [stdout] 8 | | .short("Change the current working directory"); [INFO] [stdout] ... | [INFO] [stdout] 13 | | .desc("Ignores any given arguments."); [INFO] [stdout] 14 | | } [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/library/builtins.rs:5:1 [INFO] [stdout] | [INFO] [stdout] 5 | / lazy_static! { [INFO] [stdout] 6 | | static ref DOC_CD: Documentation = Documentation::new() [INFO] [stdout] 7 | | .form(&["dir"]) [INFO] [stdout] 8 | | .short("Change the current working directory"); [INFO] [stdout] ... | [INFO] [stdout] 13 | | .desc("Ignores any given arguments."); [INFO] [stdout] 14 | | } [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/library/io.rs:6:1 [INFO] [stdout] | [INFO] [stdout] 6 | / lazy_static! { [INFO] [stdout] 7 | | static ref DOC_INTO_READ: Documentation = Documentation::new() [INFO] [stdout] 8 | | .form(&["obj"]) [INFO] [stdout] 9 | | .short("Convert an object into a readable stream"); [INFO] [stdout] ... | [INFO] [stdout] 39 | | On EOF, return the accumulated string."); [INFO] [stdout] 40 | | } [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/library/io.rs:6:1 [INFO] [stdout] | [INFO] [stdout] 6 | / lazy_static! { [INFO] [stdout] 7 | | static ref DOC_INTO_READ: Documentation = Documentation::new() [INFO] [stdout] 8 | | .form(&["obj"]) [INFO] [stdout] 9 | | .short("Convert an object into a readable stream"); [INFO] [stdout] ... | [INFO] [stdout] 39 | | On EOF, return the accumulated string."); [INFO] [stdout] 40 | | } [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/library/io.rs:6:1 [INFO] [stdout] | [INFO] [stdout] 6 | / lazy_static! { [INFO] [stdout] 7 | | static ref DOC_INTO_READ: Documentation = Documentation::new() [INFO] [stdout] 8 | | .form(&["obj"]) [INFO] [stdout] 9 | | .short("Convert an object into a readable stream"); [INFO] [stdout] ... | [INFO] [stdout] 39 | | On EOF, return the accumulated string."); [INFO] [stdout] 40 | | } [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/library/io.rs:6:1 [INFO] [stdout] | [INFO] [stdout] 6 | / lazy_static! { [INFO] [stdout] 7 | | static ref DOC_INTO_READ: Documentation = Documentation::new() [INFO] [stdout] 8 | | .form(&["obj"]) [INFO] [stdout] 9 | | .short("Convert an object into a readable stream"); [INFO] [stdout] ... | [INFO] [stdout] 39 | | On EOF, return the accumulated string."); [INFO] [stdout] 40 | | } [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/library/io.rs:6:1 [INFO] [stdout] | [INFO] [stdout] 6 | / lazy_static! { [INFO] [stdout] 7 | | static ref DOC_INTO_READ: Documentation = Documentation::new() [INFO] [stdout] 8 | | .form(&["obj"]) [INFO] [stdout] 9 | | .short("Convert an object into a readable stream"); [INFO] [stdout] ... | [INFO] [stdout] 39 | | On EOF, return the accumulated string."); [INFO] [stdout] 40 | | } [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/library/io.rs:6:1 [INFO] [stdout] | [INFO] [stdout] 6 | / lazy_static! { [INFO] [stdout] 7 | | static ref DOC_INTO_READ: Documentation = Documentation::new() [INFO] [stdout] 8 | | .form(&["obj"]) [INFO] [stdout] 9 | | .short("Convert an object into a readable stream"); [INFO] [stdout] ... | [INFO] [stdout] 39 | | On EOF, return the accumulated string."); [INFO] [stdout] 40 | | } [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/library/io.rs:6:1 [INFO] [stdout] | [INFO] [stdout] 6 | / lazy_static! { [INFO] [stdout] 7 | | static ref DOC_INTO_READ: Documentation = Documentation::new() [INFO] [stdout] 8 | | .form(&["obj"]) [INFO] [stdout] 9 | | .short("Convert an object into a readable stream"); [INFO] [stdout] ... | [INFO] [stdout] 39 | | On EOF, return the accumulated string."); [INFO] [stdout] 40 | | } [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/library/io.rs:6:1 [INFO] [stdout] | [INFO] [stdout] 6 | / lazy_static! { [INFO] [stdout] 7 | | static ref DOC_INTO_READ: Documentation = Documentation::new() [INFO] [stdout] 8 | | .form(&["obj"]) [INFO] [stdout] 9 | | .short("Convert an object into a readable stream"); [INFO] [stdout] ... | [INFO] [stdout] 39 | | On EOF, return the accumulated string."); [INFO] [stdout] 40 | | } [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/reader.rs:14:1 [INFO] [stdout] | [INFO] [stdout] 14 | / lazy_static! { [INFO] [stdout] ... | [INFO] [stdout] 20 | | = RwLock::new(HashMap::new()); [INFO] [stdout] 21 | | } [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/terminal.rs:12:1 [INFO] [stdout] | [INFO] [stdout] 12 | / lazy_static! { [INFO] [stdout] 13 | | static ref TERM: Arc = Arc::new(Terminal { [INFO] [stdout] 14 | | available: Mutex::new(true), [INFO] [stdout] 15 | | avail_cond: Condvar::new(), [INFO] [stdout] 16 | | is_tty: termion::is_tty(&io::stdin()) [INFO] [stdout] 17 | | }); [INFO] [stdout] 18 | | } [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/completion.rs:404:1 [INFO] [stdout] | [INFO] [stdout] 404 | / lazy_static! { [INFO] [stdout] 405 | | // TODO: add long-form docs here when the support is ready [INFO] [stdout] 406 | | static ref DOC_GEN_COMPLETIONS: Documentation = Documentation::new() [INFO] [stdout] 407 | | .form(&["seed", "entry-types"]); [INFO] [stdout] 408 | | } [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/history.rs:290:1 [INFO] [stdout] | [INFO] [stdout] 290 | / lazy_static! { [INFO] [stdout] 291 | | static ref DB: Database = Database::new(); [INFO] [stdout] 292 | | } [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/data.rs:23:33 [INFO] [stdout] | [INFO] [stdout] 23 | pub type ValueIteratorBox = Box+Send+Sync>; [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] 23 | pub type ValueIteratorBox = Box+Send+Sync>; [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stdout] --> src/data.rs:198:21 [INFO] [stdout] | [INFO] [stdout] 198 | Polymorphic(Arc), [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] 198 | Polymorphic(Arc), [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stdout] --> src/environment.rs:88:15 [INFO] [stdout] | [INFO] [stdout] 88 | Proxy(Arc) [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] 88 | Proxy(Arc) [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stdout] --> src/stream/mod.rs:132:21 [INFO] [stdout] | [INFO] [stdout] 132 | R(Arc>>), [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] 132 | R(Arc>>), [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stdout] --> src/stream/mod.rs:133:21 [INFO] [stdout] | [INFO] [stdout] 133 | W(Arc>>), [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] 133 | W(Arc>>), [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stdout] --> src/stream/mod.rs:134:22 [INFO] [stdout] | [INFO] [stdout] 134 | RW(Arc>>) [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] 134 | RW(Arc>>) [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stdout] --> src/span.rs:124:16 [INFO] [stdout] | [INFO] [stdout] 124 | r: 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] help: if this is a dyn-compatible trait, use `dyn` [INFO] [stdout] | [INFO] [stdout] 124 | r: Box, [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stdout] --> src/input/keybind.rs:7:19 [INFO] [stdout] | [INFO] [stdout] 7 | Permanent(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] help: if this is a dyn-compatible trait, use `dyn` [INFO] [stdout] | [INFO] [stdout] 7 | Permanent(Box), [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stdout] --> src/input/keybind.rs:71:29 [INFO] [stdout] | [INFO] [stdout] 71 | struct BindingInfo(Weak>); [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] 71 | struct BindingInfo(Weak>); [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stdout] --> src/input/keybind.rs:85:19 [INFO] [stdout] | [INFO] [stdout] 85 | func: Arc>, [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] 85 | func: Arc>, [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stdout] --> src/input/mod.rs:64:28 [INFO] [stdout] | [INFO] [stdout] 64 | editor: LineEditor>, [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] 64 | editor: LineEditor>, [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stdout] --> src/evaluate.rs:39:16 [INFO] [stdout] | [INFO] [stdout] 39 | Native(Arc Eval + Send + Sync>), [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] 39 | Native(Arc Eval + Send + Sync>), [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stdout] --> src/evaluate.rs:44:34 [INFO] [stdout] | [INFO] [stdout] 44 | Interpreted(Environment, Arc Eval + Send + Sync>), [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] 44 | Interpreted(Environment, Arc Eval + Send + Sync>), [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stdout] --> src/evaluate.rs:98:18 [INFO] [stdout] | [INFO] [stdout] 98 | Indirect(Box Eval>) [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] 98 | Indirect(Box Eval>) [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stdout] --> src/editor/mod.rs:16:36 [INFO] [stdout] | [INFO] [stdout] 16 | impl<'a> EditingDiscipline for 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] help: if this is a dyn-compatible trait, use `dyn` [INFO] [stdout] | [INFO] [stdout] 16 | impl<'a> EditingDiscipline for Box { [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/library/sequence.rs:138:9 [INFO] [stdout] | [INFO] [stdout] 138 | iters: iters [INFO] [stdout] | ^^^^^^^^^^^^ help: replace it with: `iters` [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 import: `data::*` [INFO] [stdout] --> src/library/async.rs:2:5 [INFO] [stdout] | [INFO] [stdout] 2 | use data::*; [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `Arc`, `atomic`, and `mpsc` [INFO] [stdout] --> src/library/filesystem.rs:2:17 [INFO] [stdout] | [INFO] [stdout] 2 | use std::sync::{atomic, mpsc, Arc}; [INFO] [stdout] | ^^^^^^ ^^^^ ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::io` [INFO] [stdout] --> src/library/filesystem.rs:4:5 [INFO] [stdout] | [INFO] [stdout] 4 | use std::io; [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crossbeam::queue::MsQueue` [INFO] [stdout] --> src/library/filesystem.rs:10:5 [INFO] [stdout] | [INFO] [stdout] 10 | use crossbeam::queue::MsQueue; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::thread` [INFO] [stdout] --> src/library/filesystem.rs:49:9 [INFO] [stdout] | [INFO] [stdout] 49 | use std::thread; [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary trailing semicolon [INFO] [stdout] --> src/reader.rs:201:6 [INFO] [stdout] | [INFO] [stdout] 201 | }; [INFO] [stdout] | ^ help: remove this semicolon [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(redundant_semicolons)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `evaluate::*` [INFO] [stdout] --> src/stream/poly.rs:9:5 [INFO] [stdout] | [INFO] [stdout] 9 | use evaluate::*; [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/stream/poly.rs:510:25 [INFO] [stdout] | [INFO] [stdout] 510 | start: start, [INFO] [stdout] | ^^^^^^^^^^^^ help: replace it with: `start` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `ParseOutput` [INFO] [stdout] --> src/completion.rs:260:22 [INFO] [stdout] | [INFO] [stdout] 260 | use reader::{ParseOutput, ParseContext}; [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `data::*` [INFO] [stdout] --> src/planner.rs:706:9 [INFO] [stdout] | [INFO] [stdout] 706 | use data::*; [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::path::PathBuf` [INFO] [stdout] --> src/pipeline.rs:2:5 [INFO] [stdout] | [INFO] [stdout] 2 | use std::path::PathBuf; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::error::Error` [INFO] [stdout] --> src/pipeline.rs:4:5 [INFO] [stdout] | [INFO] [stdout] 4 | use std::error::Error; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `empty` and `run_fn` [INFO] [stdout] --> src/pipeline.rs:11:27 [INFO] [stdout] | [INFO] [stdout] 11 | use environment::{global, empty, run_fn}; [INFO] [stdout] | ^^^^^ ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `terminal` [INFO] [stdout] --> src/pipeline.rs:197:13 [INFO] [stdout] | [INFO] [stdout] 197 | use terminal; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `pipeline::ActivePipeline` [INFO] [stdout] --> src/main.rs:46:5 [INFO] [stdout] | [INFO] [stdout] 46 | use pipeline::ActivePipeline; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated constant `std::sync::atomic::ATOMIC_BOOL_INIT`: the `new` function is now preferred [INFO] [stdout] --> src/main.rs:39:47 [INFO] [stdout] | [INFO] [stdout] 39 | use std::sync::atomic::{AtomicBool, Ordering, ATOMIC_BOOL_INIT}; [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(deprecated)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated constant `std::sync::atomic::ATOMIC_BOOL_INIT`: the `new` function is now preferred [INFO] [stdout] --> src/main.rs:50:32 [INFO] [stdout] | [INFO] [stdout] 50 | static RUN_SHELL: AtomicBool = ATOMIC_BOOL_INIT; [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] help: replace the use of the deprecated constant [INFO] [stdout] | [INFO] [stdout] 50 - static RUN_SHELL: AtomicBool = ATOMIC_BOOL_INIT; [INFO] [stdout] 50 + static RUN_SHELL: AtomicBool = AtomicBool::new(false); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated constant `std::sync::atomic::ATOMIC_BOOL_INIT`: the `new` function is now preferred [INFO] [stdout] --> src/main.rs:51:33 [INFO] [stdout] | [INFO] [stdout] 51 | static PLAN_DEBUG: AtomicBool = ATOMIC_BOOL_INIT; [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] help: replace the use of the deprecated constant [INFO] [stdout] | [INFO] [stdout] 51 - static PLAN_DEBUG: AtomicBool = ATOMIC_BOOL_INIT; [INFO] [stdout] 51 + static PLAN_DEBUG: AtomicBool = AtomicBool::new(false); [INFO] [stdout] | [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/main.rs:53:1 [INFO] [stdout] | [INFO] [stdout] 53 | / lazy_static! { [INFO] [stdout] 54 | | static ref DOC_EXIT: data::Documentation = data::Documentation::new() [INFO] [stdout] 55 | | .short("Exits the shell's core REPL") [INFO] [stdout] 56 | | .desc("This function sets a flag, so the core shell loop will exit \ [INFO] [stdout] 57 | | instead of repeating the next time it would read user input."); [INFO] [stdout] 58 | | } [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/data.rs:1217:1 [INFO] [stdout] | [INFO] [stdout] 1217 | / lazy_static! { [INFO] [stdout] 1218 | | static ref IDENT_INTERN_TBL: RwLock>> [INFO] [stdout] 1219 | | = RwLock::new(HashMap::new()); [INFO] [stdout] 1220 | | } [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::atomic::ATOMIC_BOOL_INIT`: the `new` function is now preferred [INFO] [stdout] --> src/globals.rs:3:57 [INFO] [stdout] | [INFO] [stdout] 3 | static ENABLE_JOB_CONTROL: atomic::AtomicBool = atomic::ATOMIC_BOOL_INIT; [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] help: replace the use of the deprecated constant [INFO] [stdout] | [INFO] [stdout] 3 - static ENABLE_JOB_CONTROL: atomic::AtomicBool = atomic::ATOMIC_BOOL_INIT; [INFO] [stdout] 3 + static ENABLE_JOB_CONTROL: atomic::AtomicBool = atomic::AtomicBool::new(false); [INFO] [stdout] | [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/environment.rs:103:1 [INFO] [stdout] | [INFO] [stdout] 103 | / lazy_static! { [INFO] [stdout] 104 | | static ref ENV: GlobalEnvironment = GlobalEnvironment::new(); [INFO] [stdout] 105 | | static ref EMPTY: Environment = Environment::new(); [INFO] [stdout] 106 | | } [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/environment.rs:103:1 [INFO] [stdout] | [INFO] [stdout] 103 | / lazy_static! { [INFO] [stdout] 104 | | static ref ENV: GlobalEnvironment = GlobalEnvironment::new(); [INFO] [stdout] 105 | | static ref EMPTY: Environment = Environment::new(); [INFO] [stdout] 106 | | } [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/library/core.rs:9:1 [INFO] [stdout] | [INFO] [stdout] 9 | / lazy_static! { [INFO] [stdout] 10 | | static ref DOC_IF: Documentation = Documentation::new() [INFO] [stdout] 11 | | .form(&["test", "then"]) [INFO] [stdout] 12 | | .form(&["test", "then", "else"]) [INFO] [stdout] ... | [INFO] [stdout] 103 | | and display the documentation of the value it refers to."); [INFO] [stdout] 104 | | } [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/library/core.rs:9:1 [INFO] [stdout] | [INFO] [stdout] 9 | / lazy_static! { [INFO] [stdout] 10 | | static ref DOC_IF: Documentation = Documentation::new() [INFO] [stdout] 11 | | .form(&["test", "then"]) [INFO] [stdout] 12 | | .form(&["test", "then", "else"]) [INFO] [stdout] ... | [INFO] [stdout] 103 | | and display the documentation of the value it refers to."); [INFO] [stdout] 104 | | } [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/library/core.rs:9:1 [INFO] [stdout] | [INFO] [stdout] 9 | / lazy_static! { [INFO] [stdout] 10 | | static ref DOC_IF: Documentation = Documentation::new() [INFO] [stdout] 11 | | .form(&["test", "then"]) [INFO] [stdout] 12 | | .form(&["test", "then", "else"]) [INFO] [stdout] ... | [INFO] [stdout] 103 | | and display the documentation of the value it refers to."); [INFO] [stdout] 104 | | } [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/library/core.rs:9:1 [INFO] [stdout] | [INFO] [stdout] 9 | / lazy_static! { [INFO] [stdout] 10 | | static ref DOC_IF: Documentation = Documentation::new() [INFO] [stdout] 11 | | .form(&["test", "then"]) [INFO] [stdout] 12 | | .form(&["test", "then", "else"]) [INFO] [stdout] ... | [INFO] [stdout] 103 | | and display the documentation of the value it refers to."); [INFO] [stdout] 104 | | } [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/library/core.rs:9:1 [INFO] [stdout] | [INFO] [stdout] 9 | / lazy_static! { [INFO] [stdout] 10 | | static ref DOC_IF: Documentation = Documentation::new() [INFO] [stdout] 11 | | .form(&["test", "then"]) [INFO] [stdout] 12 | | .form(&["test", "then", "else"]) [INFO] [stdout] ... | [INFO] [stdout] 103 | | and display the documentation of the value it refers to."); [INFO] [stdout] 104 | | } [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/library/core.rs:9:1 [INFO] [stdout] | [INFO] [stdout] 9 | / lazy_static! { [INFO] [stdout] 10 | | static ref DOC_IF: Documentation = Documentation::new() [INFO] [stdout] 11 | | .form(&["test", "then"]) [INFO] [stdout] 12 | | .form(&["test", "then", "else"]) [INFO] [stdout] ... | [INFO] [stdout] 103 | | and display the documentation of the value it refers to."); [INFO] [stdout] 104 | | } [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/library/core.rs:9:1 [INFO] [stdout] | [INFO] [stdout] 9 | / lazy_static! { [INFO] [stdout] 10 | | static ref DOC_IF: Documentation = Documentation::new() [INFO] [stdout] 11 | | .form(&["test", "then"]) [INFO] [stdout] 12 | | .form(&["test", "then", "else"]) [INFO] [stdout] ... | [INFO] [stdout] 103 | | and display the documentation of the value it refers to."); [INFO] [stdout] 104 | | } [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/library/core.rs:9:1 [INFO] [stdout] | [INFO] [stdout] 9 | / lazy_static! { [INFO] [stdout] 10 | | static ref DOC_IF: Documentation = Documentation::new() [INFO] [stdout] 11 | | .form(&["test", "then"]) [INFO] [stdout] 12 | | .form(&["test", "then", "else"]) [INFO] [stdout] ... | [INFO] [stdout] 103 | | and display the documentation of the value it refers to."); [INFO] [stdout] 104 | | } [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/library/core.rs:9:1 [INFO] [stdout] | [INFO] [stdout] 9 | / lazy_static! { [INFO] [stdout] 10 | | static ref DOC_IF: Documentation = Documentation::new() [INFO] [stdout] 11 | | .form(&["test", "then"]) [INFO] [stdout] 12 | | .form(&["test", "then", "else"]) [INFO] [stdout] ... | [INFO] [stdout] 103 | | and display the documentation of the value it refers to."); [INFO] [stdout] 104 | | } [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/library/core.rs:9:1 [INFO] [stdout] | [INFO] [stdout] 9 | / lazy_static! { [INFO] [stdout] 10 | | static ref DOC_IF: Documentation = Documentation::new() [INFO] [stdout] 11 | | .form(&["test", "then"]) [INFO] [stdout] 12 | | .form(&["test", "then", "else"]) [INFO] [stdout] ... | [INFO] [stdout] 103 | | and display the documentation of the value it refers to."); [INFO] [stdout] 104 | | } [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/library/core.rs:9:1 [INFO] [stdout] | [INFO] [stdout] 9 | / lazy_static! { [INFO] [stdout] 10 | | static ref DOC_IF: Documentation = Documentation::new() [INFO] [stdout] 11 | | .form(&["test", "then"]) [INFO] [stdout] 12 | | .form(&["test", "then", "else"]) [INFO] [stdout] ... | [INFO] [stdout] 103 | | and display the documentation of the value it refers to."); [INFO] [stdout] 104 | | } [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/library/core.rs:9:1 [INFO] [stdout] | [INFO] [stdout] 9 | / lazy_static! { [INFO] [stdout] 10 | | static ref DOC_IF: Documentation = Documentation::new() [INFO] [stdout] 11 | | .form(&["test", "then"]) [INFO] [stdout] 12 | | .form(&["test", "then", "else"]) [INFO] [stdout] ... | [INFO] [stdout] 103 | | and display the documentation of the value it refers to."); [INFO] [stdout] 104 | | } [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/library/core.rs:9:1 [INFO] [stdout] | [INFO] [stdout] 9 | / lazy_static! { [INFO] [stdout] 10 | | static ref DOC_IF: Documentation = Documentation::new() [INFO] [stdout] 11 | | .form(&["test", "then"]) [INFO] [stdout] 12 | | .form(&["test", "then", "else"]) [INFO] [stdout] ... | [INFO] [stdout] 103 | | and display the documentation of the value it refers to."); [INFO] [stdout] 104 | | } [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/library/operators.rs:6:1 [INFO] [stdout] | [INFO] [stdout] 6 | / lazy_static! { [INFO] [stdout] 7 | | static ref DOC_ADD: Documentation = Documentation::new() [INFO] [stdout] 8 | | .origin("ops") [INFO] [stdout] 9 | | .form(&["exprs*"]) [INFO] [stdout] ... | [INFO] [stdout] 118 | | up the key or keys."); [INFO] [stdout] 119 | | } [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/library/operators.rs:6:1 [INFO] [stdout] | [INFO] [stdout] 6 | / lazy_static! { [INFO] [stdout] 7 | | static ref DOC_ADD: Documentation = Documentation::new() [INFO] [stdout] 8 | | .origin("ops") [INFO] [stdout] 9 | | .form(&["exprs*"]) [INFO] [stdout] ... | [INFO] [stdout] 118 | | up the key or keys."); [INFO] [stdout] 119 | | } [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/library/operators.rs:6:1 [INFO] [stdout] | [INFO] [stdout] 6 | / lazy_static! { [INFO] [stdout] 7 | | static ref DOC_ADD: Documentation = Documentation::new() [INFO] [stdout] 8 | | .origin("ops") [INFO] [stdout] 9 | | .form(&["exprs*"]) [INFO] [stdout] ... | [INFO] [stdout] 118 | | up the key or keys."); [INFO] [stdout] 119 | | } [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/library/operators.rs:6:1 [INFO] [stdout] | [INFO] [stdout] 6 | / lazy_static! { [INFO] [stdout] 7 | | static ref DOC_ADD: Documentation = Documentation::new() [INFO] [stdout] 8 | | .origin("ops") [INFO] [stdout] 9 | | .form(&["exprs*"]) [INFO] [stdout] ... | [INFO] [stdout] 118 | | up the key or keys."); [INFO] [stdout] 119 | | } [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/library/operators.rs:6:1 [INFO] [stdout] | [INFO] [stdout] 6 | / lazy_static! { [INFO] [stdout] 7 | | static ref DOC_ADD: Documentation = Documentation::new() [INFO] [stdout] 8 | | .origin("ops") [INFO] [stdout] 9 | | .form(&["exprs*"]) [INFO] [stdout] ... | [INFO] [stdout] 118 | | up the key or keys."); [INFO] [stdout] 119 | | } [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/library/operators.rs:6:1 [INFO] [stdout] | [INFO] [stdout] 6 | / lazy_static! { [INFO] [stdout] 7 | | static ref DOC_ADD: Documentation = Documentation::new() [INFO] [stdout] 8 | | .origin("ops") [INFO] [stdout] 9 | | .form(&["exprs*"]) [INFO] [stdout] ... | [INFO] [stdout] 118 | | up the key or keys."); [INFO] [stdout] 119 | | } [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/library/operators.rs:6:1 [INFO] [stdout] | [INFO] [stdout] 6 | / lazy_static! { [INFO] [stdout] 7 | | static ref DOC_ADD: Documentation = Documentation::new() [INFO] [stdout] 8 | | .origin("ops") [INFO] [stdout] 9 | | .form(&["exprs*"]) [INFO] [stdout] ... | [INFO] [stdout] 118 | | up the key or keys."); [INFO] [stdout] 119 | | } [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/library/operators.rs:6:1 [INFO] [stdout] | [INFO] [stdout] 6 | / lazy_static! { [INFO] [stdout] 7 | | static ref DOC_ADD: Documentation = Documentation::new() [INFO] [stdout] 8 | | .origin("ops") [INFO] [stdout] 9 | | .form(&["exprs*"]) [INFO] [stdout] ... | [INFO] [stdout] 118 | | up the key or keys."); [INFO] [stdout] 119 | | } [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/library/operators.rs:6:1 [INFO] [stdout] | [INFO] [stdout] 6 | / lazy_static! { [INFO] [stdout] 7 | | static ref DOC_ADD: Documentation = Documentation::new() [INFO] [stdout] 8 | | .origin("ops") [INFO] [stdout] 9 | | .form(&["exprs*"]) [INFO] [stdout] ... | [INFO] [stdout] 118 | | up the key or keys."); [INFO] [stdout] 119 | | } [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/library/operators.rs:6:1 [INFO] [stdout] | [INFO] [stdout] 6 | / lazy_static! { [INFO] [stdout] 7 | | static ref DOC_ADD: Documentation = Documentation::new() [INFO] [stdout] 8 | | .origin("ops") [INFO] [stdout] 9 | | .form(&["exprs*"]) [INFO] [stdout] ... | [INFO] [stdout] 118 | | up the key or keys."); [INFO] [stdout] 119 | | } [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/library/operators.rs:6:1 [INFO] [stdout] | [INFO] [stdout] 6 | / lazy_static! { [INFO] [stdout] 7 | | static ref DOC_ADD: Documentation = Documentation::new() [INFO] [stdout] 8 | | .origin("ops") [INFO] [stdout] 9 | | .form(&["exprs*"]) [INFO] [stdout] ... | [INFO] [stdout] 118 | | up the key or keys."); [INFO] [stdout] 119 | | } [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/library/operators.rs:6:1 [INFO] [stdout] | [INFO] [stdout] 6 | / lazy_static! { [INFO] [stdout] 7 | | static ref DOC_ADD: Documentation = Documentation::new() [INFO] [stdout] 8 | | .origin("ops") [INFO] [stdout] 9 | | .form(&["exprs*"]) [INFO] [stdout] ... | [INFO] [stdout] 118 | | up the key or keys."); [INFO] [stdout] 119 | | } [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/library/operators.rs:6:1 [INFO] [stdout] | [INFO] [stdout] 6 | / lazy_static! { [INFO] [stdout] 7 | | static ref DOC_ADD: Documentation = Documentation::new() [INFO] [stdout] 8 | | .origin("ops") [INFO] [stdout] 9 | | .form(&["exprs*"]) [INFO] [stdout] ... | [INFO] [stdout] 118 | | up the key or keys."); [INFO] [stdout] 119 | | } [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/library/operators.rs:6:1 [INFO] [stdout] | [INFO] [stdout] 6 | / lazy_static! { [INFO] [stdout] 7 | | static ref DOC_ADD: Documentation = Documentation::new() [INFO] [stdout] 8 | | .origin("ops") [INFO] [stdout] 9 | | .form(&["exprs*"]) [INFO] [stdout] ... | [INFO] [stdout] 118 | | up the key or keys."); [INFO] [stdout] 119 | | } [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/library/operators.rs:6:1 [INFO] [stdout] | [INFO] [stdout] 6 | / lazy_static! { [INFO] [stdout] 7 | | static ref DOC_ADD: Documentation = Documentation::new() [INFO] [stdout] 8 | | .origin("ops") [INFO] [stdout] 9 | | .form(&["exprs*"]) [INFO] [stdout] ... | [INFO] [stdout] 118 | | up the key or keys."); [INFO] [stdout] 119 | | } [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/library/operators.rs:6:1 [INFO] [stdout] | [INFO] [stdout] 6 | / lazy_static! { [INFO] [stdout] 7 | | static ref DOC_ADD: Documentation = Documentation::new() [INFO] [stdout] 8 | | .origin("ops") [INFO] [stdout] 9 | | .form(&["exprs*"]) [INFO] [stdout] ... | [INFO] [stdout] 118 | | up the key or keys."); [INFO] [stdout] 119 | | } [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/library/sequence.rs:6:1 [INFO] [stdout] | [INFO] [stdout] 6 | / lazy_static! { [INFO] [stdout] 7 | | static ref DOC_MAP: Documentation = Documentation::new() [INFO] [stdout] 8 | | .form(&["fn"]) [INFO] [stdout] 9 | | .form(&["fn", "seq"]) [INFO] [stdout] ... | [INFO] [stdout] 100 | | as needed."); [INFO] [stdout] 101 | | } [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/library/sequence.rs:6:1 [INFO] [stdout] | [INFO] [stdout] 6 | / lazy_static! { [INFO] [stdout] 7 | | static ref DOC_MAP: Documentation = Documentation::new() [INFO] [stdout] 8 | | .form(&["fn"]) [INFO] [stdout] 9 | | .form(&["fn", "seq"]) [INFO] [stdout] ... | [INFO] [stdout] 100 | | as needed."); [INFO] [stdout] 101 | | } [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/library/sequence.rs:6:1 [INFO] [stdout] | [INFO] [stdout] 6 | / lazy_static! { [INFO] [stdout] 7 | | static ref DOC_MAP: Documentation = Documentation::new() [INFO] [stdout] 8 | | .form(&["fn"]) [INFO] [stdout] 9 | | .form(&["fn", "seq"]) [INFO] [stdout] ... | [INFO] [stdout] 100 | | as needed."); [INFO] [stdout] 101 | | } [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/library/sequence.rs:6:1 [INFO] [stdout] | [INFO] [stdout] 6 | / lazy_static! { [INFO] [stdout] 7 | | static ref DOC_MAP: Documentation = Documentation::new() [INFO] [stdout] 8 | | .form(&["fn"]) [INFO] [stdout] 9 | | .form(&["fn", "seq"]) [INFO] [stdout] ... | [INFO] [stdout] 100 | | as needed."); [INFO] [stdout] 101 | | } [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/library/sequence.rs:6:1 [INFO] [stdout] | [INFO] [stdout] 6 | / lazy_static! { [INFO] [stdout] 7 | | static ref DOC_MAP: Documentation = Documentation::new() [INFO] [stdout] 8 | | .form(&["fn"]) [INFO] [stdout] 9 | | .form(&["fn", "seq"]) [INFO] [stdout] ... | [INFO] [stdout] 100 | | as needed."); [INFO] [stdout] 101 | | } [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/library/sequence.rs:6:1 [INFO] [stdout] | [INFO] [stdout] 6 | / lazy_static! { [INFO] [stdout] 7 | | static ref DOC_MAP: Documentation = Documentation::new() [INFO] [stdout] 8 | | .form(&["fn"]) [INFO] [stdout] 9 | | .form(&["fn", "seq"]) [INFO] [stdout] ... | [INFO] [stdout] 100 | | as needed."); [INFO] [stdout] 101 | | } [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/library/sequence.rs:6:1 [INFO] [stdout] | [INFO] [stdout] 6 | / lazy_static! { [INFO] [stdout] 7 | | static ref DOC_MAP: Documentation = Documentation::new() [INFO] [stdout] 8 | | .form(&["fn"]) [INFO] [stdout] 9 | | .form(&["fn", "seq"]) [INFO] [stdout] ... | [INFO] [stdout] 100 | | as needed."); [INFO] [stdout] 101 | | } [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/library/sequence.rs:6:1 [INFO] [stdout] | [INFO] [stdout] 6 | / lazy_static! { [INFO] [stdout] 7 | | static ref DOC_MAP: Documentation = Documentation::new() [INFO] [stdout] 8 | | .form(&["fn"]) [INFO] [stdout] 9 | | .form(&["fn", "seq"]) [INFO] [stdout] ... | [INFO] [stdout] 100 | | as needed."); [INFO] [stdout] 101 | | } [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/library/sequence.rs:6:1 [INFO] [stdout] | [INFO] [stdout] 6 | / lazy_static! { [INFO] [stdout] 7 | | static ref DOC_MAP: Documentation = Documentation::new() [INFO] [stdout] 8 | | .form(&["fn"]) [INFO] [stdout] 9 | | .form(&["fn", "seq"]) [INFO] [stdout] ... | [INFO] [stdout] 100 | | as needed."); [INFO] [stdout] 101 | | } [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/library/sequence.rs:6:1 [INFO] [stdout] | [INFO] [stdout] 6 | / lazy_static! { [INFO] [stdout] 7 | | static ref DOC_MAP: Documentation = Documentation::new() [INFO] [stdout] 8 | | .form(&["fn"]) [INFO] [stdout] 9 | | .form(&["fn", "seq"]) [INFO] [stdout] ... | [INFO] [stdout] 100 | | as needed."); [INFO] [stdout] 101 | | } [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/library/sequence.rs:6:1 [INFO] [stdout] | [INFO] [stdout] 6 | / lazy_static! { [INFO] [stdout] 7 | | static ref DOC_MAP: Documentation = Documentation::new() [INFO] [stdout] 8 | | .form(&["fn"]) [INFO] [stdout] 9 | | .form(&["fn", "seq"]) [INFO] [stdout] ... | [INFO] [stdout] 100 | | as needed."); [INFO] [stdout] 101 | | } [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/library/builtins.rs:5:1 [INFO] [stdout] | [INFO] [stdout] 5 | / lazy_static! { [INFO] [stdout] 6 | | static ref DOC_CD: Documentation = Documentation::new() [INFO] [stdout] 7 | | .form(&["dir"]) [INFO] [stdout] 8 | | .short("Change the current working directory"); [INFO] [stdout] ... | [INFO] [stdout] 13 | | .desc("Ignores any given arguments."); [INFO] [stdout] 14 | | } [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/library/builtins.rs:5:1 [INFO] [stdout] | [INFO] [stdout] 5 | / lazy_static! { [INFO] [stdout] 6 | | static ref DOC_CD: Documentation = Documentation::new() [INFO] [stdout] 7 | | .form(&["dir"]) [INFO] [stdout] 8 | | .short("Change the current working directory"); [INFO] [stdout] ... | [INFO] [stdout] 13 | | .desc("Ignores any given arguments."); [INFO] [stdout] 14 | | } [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/library/io.rs:6:1 [INFO] [stdout] | [INFO] [stdout] 6 | / lazy_static! { [INFO] [stdout] 7 | | static ref DOC_INTO_READ: Documentation = Documentation::new() [INFO] [stdout] 8 | | .form(&["obj"]) [INFO] [stdout] 9 | | .short("Convert an object into a readable stream"); [INFO] [stdout] ... | [INFO] [stdout] 39 | | On EOF, return the accumulated string."); [INFO] [stdout] 40 | | } [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/library/io.rs:6:1 [INFO] [stdout] | [INFO] [stdout] 6 | / lazy_static! { [INFO] [stdout] 7 | | static ref DOC_INTO_READ: Documentation = Documentation::new() [INFO] [stdout] 8 | | .form(&["obj"]) [INFO] [stdout] 9 | | .short("Convert an object into a readable stream"); [INFO] [stdout] ... | [INFO] [stdout] 39 | | On EOF, return the accumulated string."); [INFO] [stdout] 40 | | } [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/library/io.rs:6:1 [INFO] [stdout] | [INFO] [stdout] 6 | / lazy_static! { [INFO] [stdout] 7 | | static ref DOC_INTO_READ: Documentation = Documentation::new() [INFO] [stdout] 8 | | .form(&["obj"]) [INFO] [stdout] 9 | | .short("Convert an object into a readable stream"); [INFO] [stdout] ... | [INFO] [stdout] 39 | | On EOF, return the accumulated string."); [INFO] [stdout] 40 | | } [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/library/io.rs:6:1 [INFO] [stdout] | [INFO] [stdout] 6 | / lazy_static! { [INFO] [stdout] 7 | | static ref DOC_INTO_READ: Documentation = Documentation::new() [INFO] [stdout] 8 | | .form(&["obj"]) [INFO] [stdout] 9 | | .short("Convert an object into a readable stream"); [INFO] [stdout] ... | [INFO] [stdout] 39 | | On EOF, return the accumulated string."); [INFO] [stdout] 40 | | } [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/library/io.rs:6:1 [INFO] [stdout] | [INFO] [stdout] 6 | / lazy_static! { [INFO] [stdout] 7 | | static ref DOC_INTO_READ: Documentation = Documentation::new() [INFO] [stdout] 8 | | .form(&["obj"]) [INFO] [stdout] 9 | | .short("Convert an object into a readable stream"); [INFO] [stdout] ... | [INFO] [stdout] 39 | | On EOF, return the accumulated string."); [INFO] [stdout] 40 | | } [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/library/io.rs:6:1 [INFO] [stdout] | [INFO] [stdout] 6 | / lazy_static! { [INFO] [stdout] 7 | | static ref DOC_INTO_READ: Documentation = Documentation::new() [INFO] [stdout] 8 | | .form(&["obj"]) [INFO] [stdout] 9 | | .short("Convert an object into a readable stream"); [INFO] [stdout] ... | [INFO] [stdout] 39 | | On EOF, return the accumulated string."); [INFO] [stdout] 40 | | } [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/library/io.rs:6:1 [INFO] [stdout] | [INFO] [stdout] 6 | / lazy_static! { [INFO] [stdout] 7 | | static ref DOC_INTO_READ: Documentation = Documentation::new() [INFO] [stdout] 8 | | .form(&["obj"]) [INFO] [stdout] 9 | | .short("Convert an object into a readable stream"); [INFO] [stdout] ... | [INFO] [stdout] 39 | | On EOF, return the accumulated string."); [INFO] [stdout] 40 | | } [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/library/io.rs:6:1 [INFO] [stdout] | [INFO] [stdout] 6 | / lazy_static! { [INFO] [stdout] 7 | | static ref DOC_INTO_READ: Documentation = Documentation::new() [INFO] [stdout] 8 | | .form(&["obj"]) [INFO] [stdout] 9 | | .short("Convert an object into a readable stream"); [INFO] [stdout] ... | [INFO] [stdout] 39 | | On EOF, return the accumulated string."); [INFO] [stdout] 40 | | } [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/reader.rs:14:1 [INFO] [stdout] | [INFO] [stdout] 14 | / lazy_static! { [INFO] [stdout] ... | [INFO] [stdout] 20 | | = RwLock::new(HashMap::new()); [INFO] [stdout] 21 | | } [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/terminal.rs:12:1 [INFO] [stdout] | [INFO] [stdout] 12 | / lazy_static! { [INFO] [stdout] 13 | | static ref TERM: Arc = Arc::new(Terminal { [INFO] [stdout] 14 | | available: Mutex::new(true), [INFO] [stdout] 15 | | avail_cond: Condvar::new(), [INFO] [stdout] 16 | | is_tty: termion::is_tty(&io::stdin()) [INFO] [stdout] 17 | | }); [INFO] [stdout] 18 | | } [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/completion.rs:404:1 [INFO] [stdout] | [INFO] [stdout] 404 | / lazy_static! { [INFO] [stdout] 405 | | // TODO: add long-form docs here when the support is ready [INFO] [stdout] 406 | | static ref DOC_GEN_COMPLETIONS: Documentation = Documentation::new() [INFO] [stdout] 407 | | .form(&["seed", "entry-types"]); [INFO] [stdout] 408 | | } [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/history.rs:290:1 [INFO] [stdout] | [INFO] [stdout] 290 | / lazy_static! { [INFO] [stdout] 291 | | static ref DB: Database = Database::new(); [INFO] [stdout] 292 | | } [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/data.rs:23:33 [INFO] [stdout] | [INFO] [stdout] 23 | pub type ValueIteratorBox = Box+Send+Sync>; [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] 23 | pub type ValueIteratorBox = Box+Send+Sync>; [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stdout] --> src/data.rs:198:21 [INFO] [stdout] | [INFO] [stdout] 198 | Polymorphic(Arc), [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] 198 | Polymorphic(Arc), [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stdout] --> src/environment.rs:88:15 [INFO] [stdout] | [INFO] [stdout] 88 | Proxy(Arc) [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] 88 | Proxy(Arc) [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stdout] --> src/stream/mod.rs:132:21 [INFO] [stdout] | [INFO] [stdout] 132 | R(Arc>>), [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] 132 | R(Arc>>), [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stdout] --> src/stream/mod.rs:133:21 [INFO] [stdout] | [INFO] [stdout] 133 | W(Arc>>), [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] 133 | W(Arc>>), [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stdout] --> src/stream/mod.rs:134:22 [INFO] [stdout] | [INFO] [stdout] 134 | RW(Arc>>) [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] 134 | RW(Arc>>) [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stdout] --> src/span.rs:124:16 [INFO] [stdout] | [INFO] [stdout] 124 | r: 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] help: if this is a dyn-compatible trait, use `dyn` [INFO] [stdout] | [INFO] [stdout] 124 | r: Box, [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stdout] --> src/input/keybind.rs:7:19 [INFO] [stdout] | [INFO] [stdout] 7 | Permanent(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] help: if this is a dyn-compatible trait, use `dyn` [INFO] [stdout] | [INFO] [stdout] 7 | Permanent(Box), [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stdout] --> src/input/keybind.rs:71:29 [INFO] [stdout] | [INFO] [stdout] 71 | struct BindingInfo(Weak>); [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] 71 | struct BindingInfo(Weak>); [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stdout] --> src/input/keybind.rs:85:19 [INFO] [stdout] | [INFO] [stdout] 85 | func: Arc>, [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] 85 | func: Arc>, [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stdout] --> src/input/mod.rs:64:28 [INFO] [stdout] | [INFO] [stdout] 64 | editor: LineEditor>, [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] 64 | editor: LineEditor>, [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stdout] --> src/evaluate.rs:39:16 [INFO] [stdout] | [INFO] [stdout] 39 | Native(Arc Eval + Send + Sync>), [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] 39 | Native(Arc Eval + Send + Sync>), [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stdout] --> src/evaluate.rs:44:34 [INFO] [stdout] | [INFO] [stdout] 44 | Interpreted(Environment, Arc Eval + Send + Sync>), [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] 44 | Interpreted(Environment, Arc Eval + Send + Sync>), [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stdout] --> src/evaluate.rs:98:18 [INFO] [stdout] | [INFO] [stdout] 98 | Indirect(Box Eval>) [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] 98 | Indirect(Box Eval>) [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stdout] --> src/editor/mod.rs:16:36 [INFO] [stdout] | [INFO] [stdout] 16 | impl<'a> EditingDiscipline for 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] help: if this is a dyn-compatible trait, use `dyn` [INFO] [stdout] | [INFO] [stdout] 16 | impl<'a> EditingDiscipline for Box { [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stdout] --> src/editor/mod.rs:19:25 [INFO] [stdout] | [INFO] [stdout] 19 | let mut r: &mut EditingDiscipline = self.deref_mut(); [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] 19 | let mut r: &mut dyn EditingDiscipline = self.deref_mut(); [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated method `core::str::::trim_left_matches`: superseded by `trim_start_matches` [INFO] [stdout] --> src/input/render.rs:116:31 [INFO] [stdout] | [INFO] [stdout] 116 | Some(e) => e.text.trim_left_matches(&s).to_owned() [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] help: replace the use of the deprecated method [INFO] [stdout] | [INFO] [stdout] 116 - Some(e) => e.text.trim_left_matches(&s).to_owned() [INFO] [stdout] 116 + Some(e) => e.text.trim_start_matches(&s).to_owned() [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stdout] --> src/input/keybind.rs:60:24 [INFO] [stdout] | [INFO] [stdout] 60 | let f: Arc> = Arc::new(Box::new(f)); [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] 60 | let f: Arc> = Arc::new(Box::new(f)); [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated method `core::str::::trim_left_matches`: superseded by `trim_start_matches` [INFO] [stdout] --> src/input/mod.rs:201:36 [INFO] [stdout] | [INFO] [stdout] 201 | let to_insert = entry.text.trim_left_matches(&self.editor.buf().as_string()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] help: replace the use of the deprecated method [INFO] [stdout] | [INFO] [stdout] 201 - let to_insert = entry.text.trim_left_matches(&self.editor.buf().as_string()); [INFO] [stdout] 201 + let to_insert = entry.text.trim_start_matches(&self.editor.buf().as_string()); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `futures` [INFO] [stdout] --> src/reader.rs:7:5 [INFO] [stdout] | [INFO] [stdout] 7 | use futures::*; [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `r` [INFO] [stdout] --> src/data.rs:108:31 [INFO] [stdout] | [INFO] [stdout] 108 | fn into_raw_stream(&self, r: bool, w: bool) -> Eval { [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_r` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `w` [INFO] [stdout] --> src/data.rs:108:40 [INFO] [stdout] | [INFO] [stdout] 108 | fn into_raw_stream(&self, r: bool, w: bool) -> Eval { [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_w` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `key` [INFO] [stdout] --> src/data.rs:154:23 [INFO] [stdout] | [INFO] [stdout] 154 | fn get_key(&self, key: &Value) -> Eval> { [INFO] [stdout] | ^^^ help: if this is intentional, prefix it with an underscore: `_key` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `key` [INFO] [stdout] --> src/data.rs:162:23 [INFO] [stdout] | [INFO] [stdout] 162 | fn set_key(&self, key: Value, value: Value) -> Eval { [INFO] [stdout] | ^^^ help: if this is intentional, prefix it with an underscore: `_key` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `value` [INFO] [stdout] --> src/data.rs:162:35 [INFO] [stdout] | [INFO] [stdout] 162 | fn set_key(&self, key: Value, value: Value) -> Eval { [INFO] [stdout] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_value` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `s` [INFO] [stdout] --> src/data.rs:788:35 [INFO] [stdout] | [INFO] [stdout] 788 | &ValueData::RawStream(ref s) => { [INFO] [stdout] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_s` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `lex` [INFO] [stdout] --> src/library/core.rs:207:15 [INFO] [stdout] | [INFO] [stdout] 207 | fn core_undef(lex: &Environment, args: &[Value]) -> Eval { [INFO] [stdout] | ^^^ help: if this is intentional, prefix it with an underscore: `_lex` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `r` is assigned to, but never used [INFO] [stdout] --> src/library/core.rs:230:13 [INFO] [stdout] | [INFO] [stdout] 230 | let mut r = Value::empty(); [INFO] [stdout] | ^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: consider using `_r` instead [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: value assigned to `r` is never read [INFO] [stdout] --> src/library/core.rs:232:13 [INFO] [stdout] | [INFO] [stdout] 232 | r = match i.evaluate(lex).wait() { [INFO] [stdout] | ^ [INFO] [stdout] | [INFO] [stdout] = help: maybe it is overwritten before being read? [INFO] [stdout] = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `v` [INFO] [stdout] --> src/library/operators.rs:361:29 [INFO] [stdout] | [INFO] [stdout] 361 | ValueData::List(ref v) => { [INFO] [stdout] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_v` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `env` [INFO] [stdout] --> src/library/async.rs:5:9 [INFO] [stdout] | [INFO] [stdout] 5 | let env = global(); [INFO] [stdout] | ^^^ help: if this is intentional, prefix it with an underscore: `_env` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `args` [INFO] [stdout] --> src/library/builtins.rs:45:28 [INFO] [stdout] | [INFO] [stdout] 45 | fn fn_pwd(_: &Environment, args: &[Value]) -> EvalResult { [INFO] [stdout] | ^^^^ help: if this is intentional, prefix it with an underscore: `_args` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `c` [INFO] [stdout] --> src/stream/poly.rs:259:20 [INFO] [stdout] | [INFO] [stdout] 259 | fn push(&self, c: char) { [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_c` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `tty_rows` [INFO] [stdout] --> src/input/render.rs:69:24 [INFO] [stdout] | [INFO] [stdout] 69 | let (tty_cols, tty_rows) = terminal_size().unwrap_or((80, 24)); [INFO] [stdout] | ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_tty_rows` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `mark` [INFO] [stdout] --> src/input/render.rs:110:13 [INFO] [stdout] | [INFO] [stdout] 110 | let mark = self.set.marked_idx(); [INFO] [stdout] | ^^^^ help: if this is intentional, prefix it with an underscore: `_mark` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `tty_rows` [INFO] [stdout] --> src/input/render.rs:193:24 [INFO] [stdout] | [INFO] [stdout] 193 | let (tty_cols, tty_rows) = terminal_size().unwrap_or((80, 24)); [INFO] [stdout] | ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_tty_rows` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `f` [INFO] [stdout] --> src/input/keybind.rs:12:19 [INFO] [stdout] | [INFO] [stdout] 12 | fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result { [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_f` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/input/mod.rs:140:25 [INFO] [stdout] | [INFO] [stdout] 140 | let mut output = self.mode.as_mut().unwrap().output(); [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: unused variable: `msg` [INFO] [stdout] --> src/input/mod.rs:181:35 [INFO] [stdout] | [INFO] [stdout] 181 | fn fail_completion(&mut self, msg: &str) -> io::Result<()> { [INFO] [stdout] | ^^^ help: if this is intentional, prefix it with an underscore: `_msg` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `esc` [INFO] [stdout] --> src/input/mod.rs:237:17 [INFO] [stdout] | [INFO] [stdout] 237 | let esc = self.parent.keymap.bind(event::Key::Esc, move || { [INFO] [stdout] | ^^^ help: if this is intentional, prefix it with an underscore: `_esc` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `r` [INFO] [stdout] --> src/planner.rs:140:25 [INFO] [stdout] | [INFO] [stdout] 140 | if let Some(r) = r { [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_r` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `opts` [INFO] [stdout] --> src/pipeline.rs:243:29 [INFO] [stdout] | [INFO] [stdout] 243 | if let Some(opts) = opts { [INFO] [stdout] | ^^^^ help: if this is intentional, prefix it with an underscore: `_opts` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `val` [INFO] [stdout] --> src/history.rs:22:19 [INFO] [stdout] | [INFO] [stdout] 22 | fn set(&self, val: Value) { [INFO] [stdout] | ^^^ help: if this is intentional, prefix it with an underscore: `_val` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `t` [INFO] [stdout] --> src/history.rs:93:26 [INFO] [stdout] | [INFO] [stdout] 93 | fn match_text(&self, t: &str) -> Option { [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_t` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `v` [INFO] [stdout] --> src/history.rs:100:25 [INFO] [stdout] | [INFO] [stdout] 100 | fn match_obj(&self, v: &Value) -> Option { [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_v` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `core_undef` is never used [INFO] [stdout] --> src/library/core.rs:207:4 [INFO] [stdout] | [INFO] [stdout] 207 | fn core_undef(lex: &Environment, args: &[Value]) -> Eval { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `to_eval` is never used [INFO] [stdout] --> src/reader.rs:41:12 [INFO] [stdout] | [INFO] [stdout] 40 | impl ParseError { [INFO] [stdout] | --------------- method in this implementation [INFO] [stdout] 41 | pub fn to_eval(self) -> EvalError { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variant `StringContent` is never constructed [INFO] [stdout] --> src/reader.rs:97:5 [INFO] [stdout] | [INFO] [stdout] 95 | pub enum ParseContext { [INFO] [stdout] | ------------ variant in this enum [INFO] [stdout] 96 | /// String contents, starting with the given partial contents [INFO] [stdout] 97 | StringContent(String), [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `ParseContext` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `read_autoclose` is never used [INFO] [stdout] --> src/reader.rs:888:8 [INFO] [stdout] | [INFO] [stdout] 888 | pub fn read_autoclose(strm: &mut R) -> ParseOutput { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `HistoryRenderer` is never constructed [INFO] [stdout] --> src/input/render.rs:231:12 [INFO] [stdout] | [INFO] [stdout] 231 | pub struct HistoryRenderer { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enum `Renderer` is never used [INFO] [stdout] --> src/input/render.rs:235:10 [INFO] [stdout] | [INFO] [stdout] 235 | pub enum Renderer { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `new`, `to_line`, `to_complete`, `output`, and `render` are never used [INFO] [stdout] --> src/input/render.rs:242:12 [INFO] [stdout] | [INFO] [stdout] 241 | impl Renderer { [INFO] [stdout] | -------------------------- associated items in this implementation [INFO] [stdout] 242 | pub fn new(write: raw::RawTerminal) -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 250 | pub fn to_line(self) -> (Self, io::Result<()>) { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 263 | pub fn to_complete(self, set: &CompletionSet) -> Result { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 271 | pub fn output(&mut self) -> &mut raw::RawTerminal { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 278 | pub fn render(&mut self, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variant `Permanent` is never constructed [INFO] [stdout] --> src/input/keybind.rs:7:5 [INFO] [stdout] | [INFO] [stdout] 6 | enum Binding { [INFO] [stdout] | ------- variant in this enum [INFO] [stdout] 7 | Permanent(Box), [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `bind_permanent` is never used [INFO] [stdout] --> src/input/keybind.rs:51:12 [INFO] [stdout] | [INFO] [stdout] 22 | impl Keymap { [INFO] [stdout] | ----------- method in this implementation [INFO] [stdout] ... [INFO] [stdout] 51 | pub fn bind_permanent(&self, key: event::Key, f: F) [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `func` is never read [INFO] [stdout] --> src/input/keybind.rs:85:5 [INFO] [stdout] | [INFO] [stdout] 84 | pub struct ScopedBinding { [INFO] [stdout] | ------------- field in this struct [INFO] [stdout] 85 | func: Arc>, [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `release`, `stderr`, and `into_owned_channels` are never used [INFO] [stdout] --> src/terminal.rs:57:12 [INFO] [stdout] | [INFO] [stdout] 52 | impl TerminalGuard { [INFO] [stdout] | ------------------ methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 57 | pub fn release(self) {} [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 76 | pub fn stderr(&self) -> StderrGuard { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 88 | pub fn into_owned_channels(self) -> (OwnedStdinGuard, OwnedStdoutGuard, OwnedStderrGuard) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `StderrGuard` is never constructed [INFO] [stdout] --> src/terminal.rs:124:12 [INFO] [stdout] | [INFO] [stdout] 124 | pub struct StderrGuard<'a> { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `OwnedStdoutGuard` is never constructed [INFO] [stdout] --> src/terminal.rs:156:12 [INFO] [stdout] | [INFO] [stdout] 156 | pub struct OwnedStdoutGuard { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `as_raw` is never used [INFO] [stdout] --> src/terminal.rs:172:12 [INFO] [stdout] | [INFO] [stdout] 171 | impl OwnedStdoutGuard { [INFO] [stdout] | --------------------- method in this implementation [INFO] [stdout] 172 | pub fn as_raw(self) -> FdGuard { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `OwnedStdinGuard` is never constructed [INFO] [stdout] --> src/terminal.rs:179:12 [INFO] [stdout] | [INFO] [stdout] 179 | pub struct OwnedStdinGuard { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `as_raw` is never used [INFO] [stdout] --> src/terminal.rs:191:12 [INFO] [stdout] | [INFO] [stdout] 190 | impl OwnedStdinGuard { [INFO] [stdout] | -------------------- method in this implementation [INFO] [stdout] 191 | pub fn as_raw(self) -> FdGuard { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `OwnedStderrGuard` is never constructed [INFO] [stdout] --> src/terminal.rs:198:12 [INFO] [stdout] | [INFO] [stdout] 198 | pub struct OwnedStderrGuard { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `as_raw` is never used [INFO] [stdout] --> src/terminal.rs:214:12 [INFO] [stdout] | [INFO] [stdout] 213 | impl OwnedStderrGuard { [INFO] [stdout] | --------------------- method in this implementation [INFO] [stdout] 214 | pub fn as_raw(self) -> FdGuard { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `FdGuard` is never constructed [INFO] [stdout] --> src/terminal.rs:225:12 [INFO] [stdout] | [INFO] [stdout] 225 | pub struct FdGuard { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `fd` is never used [INFO] [stdout] --> src/terminal.rs:231:12 [INFO] [stdout] | [INFO] [stdout] 230 | impl FdGuard { [INFO] [stdout] | ------------------ method in this implementation [INFO] [stdout] 231 | pub fn fd(&self) -> RawFd { self.fd } [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated function `complete_any` is never used [INFO] [stdout] --> src/completion.rs:297:12 [INFO] [stdout] | [INFO] [stdout] 255 | impl CompletionSet { [INFO] [stdout] | ------------------ associated function in this implementation [INFO] [stdout] ... [INFO] [stdout] 297 | pub fn complete_any(seed: &str) -> Self { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated function `run_cmd` is never used [INFO] [stdout] --> src/planner.rs:661:12 [INFO] [stdout] | [INFO] [stdout] 654 | impl Plan { [INFO] [stdout] | --------- associated function in this implementation [INFO] [stdout] ... [INFO] [stdout] 661 | pub fn run_cmd(name: &str, args: &[&str]) -> Result { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `0` is never read [INFO] [stdout] --> src/pipeline.rs:19:16 [INFO] [stdout] | [INFO] [stdout] 19 | Evaluation(EvalError), [INFO] [stdout] | ---------- ^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | field in this variant [INFO] [stdout] | [INFO] [stdout] = note: `LaunchError` 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] 19 - Evaluation(EvalError), [INFO] [stdout] 19 + Evaluation(()), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `0` is never read [INFO] [stdout] --> src/pipeline.rs:20:15 [INFO] [stdout] | [INFO] [stdout] 20 | JobLaunch(::nix::Error), [INFO] [stdout] | --------- ^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | field in this variant [INFO] [stdout] | [INFO] [stdout] = note: `LaunchError` 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] 20 - JobLaunch(::nix::Error), [INFO] [stdout] 20 + JobLaunch(()), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `0` is never read [INFO] [stdout] --> src/pipeline.rs:21:8 [INFO] [stdout] | [INFO] [stdout] 21 | IO(io::Error), [INFO] [stdout] | -- ^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | field in this variant [INFO] [stdout] | [INFO] [stdout] = note: `LaunchError` 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] 21 - IO(io::Error), [INFO] [stdout] 21 + IO(()), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variant `Unknown` is never constructed [INFO] [stdout] --> src/pipeline.rs:22:5 [INFO] [stdout] | [INFO] [stdout] 18 | pub enum LaunchError { [INFO] [stdout] | ----------- variant in this enum [INFO] [stdout] ... [INFO] [stdout] 22 | Unknown [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `LaunchError` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enum `EvalOutput` is never used [INFO] [stdout] --> src/pipeline.rs:170:6 [INFO] [stdout] | [INFO] [stdout] 170 | enum EvalOutput { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enum `OrderingKey` is never used [INFO] [stdout] --> src/history.rs:27:10 [INFO] [stdout] | [INFO] [stdout] 27 | pub enum OrderingKey { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `Query` is never constructed [INFO] [stdout] --> src/history.rs:45:12 [INFO] [stdout] | [INFO] [stdout] 45 | pub struct Query { [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `new`, `order_by`, `ascending`, and `descending` are never used [INFO] [stdout] --> src/history.rs:53:12 [INFO] [stdout] | [INFO] [stdout] 51 | impl Query { [INFO] [stdout] | ---------------- associated items in this implementation [INFO] [stdout] 52 | /// Generate a new query from the given value [INFO] [stdout] 53 | pub fn new(q: T) -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 62 | pub fn order_by(&mut self, k: OrderingKey) -> &mut Self { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 68 | pub fn ascending(&mut self) -> &mut Self { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 74 | pub fn descending(&mut self) -> &mut Self { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `match_text` and `match_obj` are never used [INFO] [stdout] --> src/history.rs:93:8 [INFO] [stdout] | [INFO] [stdout] 89 | impl Command { [INFO] [stdout] | ------------ methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 93 | fn match_text(&self, t: &str) -> Option { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 100 | fn match_obj(&self, v: &Value) -> Option { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `when` is never read [INFO] [stdout] --> src/history.rs:107:9 [INFO] [stdout] | [INFO] [stdout] 105 | pub struct Entry { [INFO] [stdout] | ----- field in this struct [INFO] [stdout] 106 | pub command: Arc, [INFO] [stdout] 107 | pub when: SystemTime, [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `value_complexity` is never used [INFO] [stdout] --> src/history.rs:116:4 [INFO] [stdout] | [INFO] [stdout] 116 | fn value_complexity(v: &Value) -> u32 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `complexity_metric` is never used [INFO] [stdout] --> src/history.rs:127:4 [INFO] [stdout] | [INFO] [stdout] 127 | fn complexity_metric(v: &Pipeline) -> usize { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `clean_cmds`, `order_query_results`, `query_text`, and `query_structural` are never used [INFO] [stdout] --> src/history.rs:145:8 [INFO] [stdout] | [INFO] [stdout] 136 | impl Database { [INFO] [stdout] | ------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 145 | fn clean_cmds(&self) { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 151 | fn order_query_results(&self, q: &Query, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 199 | pub fn query_text>(&self, query: Query) -> Vec> { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 225 | pub fn query_structural(&self, query: Query) -> Vec> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods called `into_*` usually take `self` by value [INFO] [stdout] --> src/data.rs:15:17 [INFO] [stdout] | [INFO] [stdout] 15 | fn into_obj(&self) -> Value; [INFO] [stdout] | ^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: consider choosing a less ambiguous name [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#wrong_self_convention [INFO] [stdout] = note: `#[warn(clippy::wrong_self_convention)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you don't need to add `&` to all patterns [INFO] [stdout] --> src/data.rs:42:9 [INFO] [stdout] | [INFO] [stdout] 42 | / match self { [INFO] [stdout] 43 | | &EvalError::Unknown => [INFO] [stdout] 44 | | write!(f, "unknown evaluation error"), [INFO] [stdout] 45 | | &EvalError::IO(ref e) => [INFO] [stdout] ... | [INFO] [stdout] 54 | | write!(f, "got {} arguments, expected {}", got, expected), [INFO] [stdout] 55 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stdout] = note: `#[warn(clippy::match_ref_pats)]` on by default [INFO] [stdout] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stdout] | [INFO] [stdout] 42 ~ match *self { [INFO] [stdout] 43 ~ EvalError::Unknown => [INFO] [stdout] 44 | write!(f, "unknown evaluation error"), [INFO] [stdout] 45 ~ EvalError::IO(ref e) => [INFO] [stdout] 46 | write!(f, "I/O error: {}", e), [INFO] [stdout] 47 ~ EvalError::InvalidOperation(ref s) => [INFO] [stdout] 48 | write!(f, "invalid operation: {}", s), [INFO] [stdout] 49 ~ EvalError::TypeError(ref s) => [INFO] [stdout] 50 | write!(f, "type error: {}", s), [INFO] [stdout] 51 ~ EvalError::Runtime(ref s) => [INFO] [stdout] 52 | write!(f, "runtime error: {}", s), [INFO] [stdout] 53 ~ EvalError::Arity {got, expected} => [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: dereferencing a tuple pattern where every element takes a reference [INFO] [stdout] --> src/data.rs:45:13 [INFO] [stdout] | [INFO] [stdout] 45 | &EvalError::IO(ref e) => [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] 45 - &EvalError::IO(ref e) => [INFO] [stdout] 45 + EvalError::IO(e) => [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: dereferencing a tuple pattern where every element takes a reference [INFO] [stdout] --> src/data.rs:47:13 [INFO] [stdout] | [INFO] [stdout] 47 | &EvalError::InvalidOperation(ref s) => [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] 47 - &EvalError::InvalidOperation(ref s) => [INFO] [stdout] 47 + EvalError::InvalidOperation(s) => [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: dereferencing a tuple pattern where every element takes a reference [INFO] [stdout] --> src/data.rs:49:13 [INFO] [stdout] | [INFO] [stdout] 49 | &EvalError::TypeError(ref s) => [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] 49 - &EvalError::TypeError(ref s) => [INFO] [stdout] 49 + EvalError::TypeError(s) => [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: dereferencing a tuple pattern where every element takes a reference [INFO] [stdout] --> src/data.rs:51:13 [INFO] [stdout] | [INFO] [stdout] 51 | &EvalError::Runtime(ref s) => [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] 51 - &EvalError::Runtime(ref s) => [INFO] [stdout] 51 + EvalError::Runtime(s) => [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you don't need to add `&` to all patterns [INFO] [stdout] --> src/data.rs:61:9 [INFO] [stdout] | [INFO] [stdout] 61 | / match self { [INFO] [stdout] 62 | | &EvalError::Unknown => &"unknown evaluation error", [INFO] [stdout] 63 | | &EvalError::IO(_) => &"I/O error", [INFO] [stdout] 64 | | &EvalError::InvalidOperation(_) => &"invalid operation", [INFO] [stdout] ... | [INFO] [stdout] 67 | | &EvalError::Arity{..} => &"arity mismatch", [INFO] [stdout] 68 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stdout] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stdout] | [INFO] [stdout] 61 ~ match *self { [INFO] [stdout] 62 ~ EvalError::Unknown => &"unknown evaluation error", [INFO] [stdout] 63 ~ EvalError::IO(_) => &"I/O error", [INFO] [stdout] 64 ~ EvalError::InvalidOperation(_) => &"invalid operation", [INFO] [stdout] 65 ~ EvalError::TypeError(_) => &"type error", [INFO] [stdout] 66 ~ EvalError::Runtime(_) => &"runtime error", [INFO] [stdout] 67 ~ EvalError::Arity{..} => &"arity mismatch", [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/data.rs:62:36 [INFO] [stdout] | [INFO] [stdout] 62 | &EvalError::Unknown => &"unknown evaluation error", [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `"unknown evaluation error"` [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/data.rs:63:34 [INFO] [stdout] | [INFO] [stdout] 63 | &EvalError::IO(_) => &"I/O error", [INFO] [stdout] | ^^^^^^^^^^^^ help: change this to: `"I/O error"` [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/data.rs:64:48 [INFO] [stdout] | [INFO] [stdout] 64 | &EvalError::InvalidOperation(_) => &"invalid operation", [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: change this to: `"invalid operation"` [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/data.rs:65:41 [INFO] [stdout] | [INFO] [stdout] 65 | &EvalError::TypeError(_) => &"type error", [INFO] [stdout] | ^^^^^^^^^^^^^ help: change this to: `"type error"` [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/data.rs:66:39 [INFO] [stdout] | [INFO] [stdout] 66 | &EvalError::Runtime(_) => &"runtime error", [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: change this to: `"runtime error"` [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/data.rs:67:38 [INFO] [stdout] | [INFO] [stdout] 67 | &EvalError::Arity{..} => &"arity mismatch", [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: change this to: `"arity mismatch"` [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: methods called `into_*` usually take `self` by value [INFO] [stdout] --> src/data.rs:108:24 [INFO] [stdout] | [INFO] [stdout] 108 | fn into_raw_stream(&self, r: bool, w: bool) -> Eval { [INFO] [stdout] | ^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: consider choosing a less ambiguous name [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#wrong_self_convention [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods called `into_*` usually take `self` by value [INFO] [stdout] --> src/data.rs:116:17 [INFO] [stdout] | [INFO] [stdout] 116 | fn into_seq(&self) -> Eval> { [INFO] [stdout] | ^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: consider choosing a less ambiguous name [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#wrong_self_convention [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods called `into_*` usually take `self` by value [INFO] [stdout] --> src/data.rs:124:18 [INFO] [stdout] | [INFO] [stdout] 124 | fn into_iter(&self) -> ValueIteratorBox; [INFO] [stdout] | ^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: consider choosing a less ambiguous name [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#wrong_self_convention [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods called `into_*` usually take `self` by value [INFO] [stdout] --> src/data.rs:127:17 [INFO] [stdout] | [INFO] [stdout] 127 | fn into_str(&self) -> Eval; [INFO] [stdout] | ^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: consider choosing a less ambiguous name [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#wrong_self_convention [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods called `into_*` usually take `self` by value [INFO] [stdout] --> src/data.rs:137:18 [INFO] [stdout] | [INFO] [stdout] 137 | fn into_repr(&self) -> Eval { self.into_str() } [INFO] [stdout] | ^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: consider choosing a less ambiguous name [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#wrong_self_convention [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods called `into_*` usually take `self` by value [INFO] [stdout] --> src/data.rs:140:17 [INFO] [stdout] | [INFO] [stdout] 140 | fn into_num(&self) -> Eval> { Eval::from(Ok(None)) } [INFO] [stdout] | ^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: consider choosing a less ambiguous name [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#wrong_self_convention [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods called `into_*` usually take `self` by value [INFO] [stdout] --> src/data.rs:143:18 [INFO] [stdout] | [INFO] [stdout] 143 | fn into_bool(&self) -> Eval { Eval::from(Ok(true)) } [INFO] [stdout] | ^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: consider choosing a less ambiguous name [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#wrong_self_convention [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods called `into_*` usually take `self` by value [INFO] [stdout] --> src/data.rs:146:18 [INFO] [stdout] | [INFO] [stdout] 146 | fn into_args(&self) -> Eval> { [INFO] [stdout] | ^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: consider choosing a less ambiguous name [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#wrong_self_convention [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref on an immutable reference [INFO] [stdout] --> src/data.rs:233:57 [INFO] [stdout] | [INFO] [stdout] 233 | ConstString::Owned(r) => write!(f, "{:?}", &*r), [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] 233 - ConstString::Owned(r) => write!(f, "{:?}", &*r), [INFO] [stdout] 233 + ConstString::Owned(r) => write!(f, "{:?}", r), [INFO] [stdout] | [INFO] [stdout] help: if you would like to deref, try using `&**` [INFO] [stdout] | [INFO] [stdout] 233 | ConstString::Owned(r) => write!(f, "{:?}", &**r), [INFO] [stdout] | + [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stdout] --> src/editor/mod.rs:19:25 [INFO] [stdout] | [INFO] [stdout] 19 | let mut r: &mut EditingDiscipline = self.deref_mut(); [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] 19 | let mut r: &mut dyn EditingDiscipline = self.deref_mut(); [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> src/data.rs:469:9 [INFO] [stdout] | [INFO] [stdout] 469 | / match self.data { [INFO] [stdout] 470 | | ValueData::List(ref xs) => { [INFO] [stdout] ... | [INFO] [stdout] 518 | | _ => {} [INFO] [stdout] 519 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] = note: `#[warn(clippy::single_match)]` on by default [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 469 ~ if let ValueData::List(ref xs) = self.data { [INFO] [stdout] 470 + // might be a macro call, but could still be a normal function [INFO] [stdout] 471 + // call [INFO] [stdout] 472 + // [INFO] [stdout] 473 + // check whether the first element is a resolvable symbol [INFO] [stdout] 474 + let macro_expr: Option = [INFO] [stdout] 475 + if let Some(f) = xs.first() { [INFO] [stdout] 476 + if f.is_macro() { Some(f.to_owned()) } [INFO] [stdout] 477 + else { [INFO] [stdout] 478 + let r = match f.get_symbol().wait() { [INFO] [stdout] 479 + Ok(x) => x, [INFO] [stdout] 480 + Err(e) => return Eval::from(Err(e)) [INFO] [stdout] 481 + }; [INFO] [stdout] 482 + r.and_then(|sym| [INFO] [stdout] 483 + ::environment::global().get(&*(sym.0))) [INFO] [stdout] 484 + } [INFO] [stdout] 485 + } else { None }; [INFO] [stdout] 486 + [INFO] [stdout] 487 + // if so, check to make sure it's a macro [INFO] [stdout] 488 + let macro_expr = [INFO] [stdout] 489 + if let Some(m) = macro_expr { [INFO] [stdout] 490 + match m.data { [INFO] [stdout] 491 + ValueData::Macro(ref exec) => Some(exec.clone()), [INFO] [stdout] 492 + _ => None [INFO] [stdout] 493 + } [INFO] [stdout] 494 + } else { None }; [INFO] [stdout] 495 + [INFO] [stdout] 496 + // We have an executable macro, so this is a macro form. Go and [INFO] [stdout] 497 + // run the macro. [INFO] [stdout] 498 + if let Some(exec) = macro_expr { [INFO] [stdout] 499 + let body = match self.into_seq().wait() { [INFO] [stdout] 500 + Ok(x) => x, [INFO] [stdout] 501 + Err(e) => return Eval::from(Err(e)) [INFO] [stdout] 502 + }; [INFO] [stdout] 503 + [INFO] [stdout] 504 + // we have to quote the body forms so that when they're [INFO] [stdout] 505 + // evaluated by the macro function it doesn't run them [INFO] [stdout] 506 + let quoted_body = body[1..].iter() [INFO] [stdout] 507 + .map(|form| form.quote()) [INFO] [stdout] 508 + .collect::>(); [INFO] [stdout] 509 + let r = match exec.run(&::environment::empty(), "ed_body) [INFO] [stdout] 510 + .wait() { [INFO] [stdout] 511 + Ok(x) => x, [INFO] [stdout] 512 + Err(e) => return Eval::from(Err(e)) [INFO] [stdout] 513 + }; [INFO] [stdout] 514 + return r.macroexpand(); [INFO] [stdout] 515 + } [INFO] [stdout] 516 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `if let .. else` expression looks like `matches!` macro [INFO] [stdout] --> src/data.rs:525:9 [INFO] [stdout] | [INFO] [stdout] 525 | if let &ValueData::Macro(_) = &self.data { true } else { false } [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_like_matches_macro [INFO] [stdout] = note: `#[warn(clippy::match_like_matches_macro)]` on by default [INFO] [stdout] help: use `matches!` directly [INFO] [stdout] | [INFO] [stdout] 525 - if let &ValueData::Macro(_) = &self.data { true } else { false } [INFO] [stdout] 525 + matches!(&self.data, &ValueData::Macro(_)) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you don't need to add `&` to both the expression and the patterns [INFO] [stdout] --> src/data.rs:533:9 [INFO] [stdout] | [INFO] [stdout] 533 | / match &self.data { [INFO] [stdout] 534 | | &ValueData::Boolean(x) => x.hash(&mut hasher), [INFO] [stdout] 535 | | &ValueData::Number(ref n) => n.hash(&mut hasher), [INFO] [stdout] 536 | | &ValueData::Str(ref x) => x.hash(&mut hasher), [INFO] [stdout] ... | [INFO] [stdout] 558 | | _ => return Eval::from(Ok(None)) [INFO] [stdout] 559 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 533 ~ match self.data { [INFO] [stdout] 534 ~ ValueData::Boolean(x) => x.hash(&mut hasher), [INFO] [stdout] 535 ~ ValueData::Number(ref n) => n.hash(&mut hasher), [INFO] [stdout] 536 ~ ValueData::Str(ref x) => x.hash(&mut hasher), [INFO] [stdout] 537 ~ ValueData::Symbol(ref x) => x.as_ref().hash(&mut hasher), [INFO] [stdout] 538 ~ ValueData::Atom(ref x) => x.hash(&mut hasher), [INFO] [stdout] 539 ~ ValueData::Map(ref x) => { [INFO] [stdout] 540 | for (ref k, ref v) in x { [INFO] [stdout] ... [INFO] [stdout] 548 | }, [INFO] [stdout] 549 ~ ValueData::List(ref x) => { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: dereferencing a tuple pattern where every element takes a reference [INFO] [stdout] --> src/data.rs:535:13 [INFO] [stdout] | [INFO] [stdout] 535 | &ValueData::Number(ref n) => n.hash(&mut hasher), [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] 535 - &ValueData::Number(ref n) => n.hash(&mut hasher), [INFO] [stdout] 535 + ValueData::Number(n) => n.hash(&mut hasher), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: dereferencing a tuple pattern where every element takes a reference [INFO] [stdout] --> src/data.rs:536:13 [INFO] [stdout] | [INFO] [stdout] 536 | &ValueData::Str(ref x) => x.hash(&mut hasher), [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] 536 - &ValueData::Str(ref x) => x.hash(&mut hasher), [INFO] [stdout] 536 + ValueData::Str(x) => x.hash(&mut hasher), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: dereferencing a tuple pattern where every element takes a reference [INFO] [stdout] --> src/data.rs:537:13 [INFO] [stdout] | [INFO] [stdout] 537 | &ValueData::Symbol(ref x) => x.as_ref().hash(&mut hasher), [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] 537 - &ValueData::Symbol(ref x) => x.as_ref().hash(&mut hasher), [INFO] [stdout] 537 + ValueData::Symbol(x) => x.as_ref().hash(&mut hasher), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: dereferencing a tuple pattern where every element takes a reference [INFO] [stdout] --> src/data.rs:538:13 [INFO] [stdout] | [INFO] [stdout] 538 | &ValueData::Atom(ref x) => x.hash(&mut hasher), [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] 538 - &ValueData::Atom(ref x) => x.hash(&mut hasher), [INFO] [stdout] 538 + ValueData::Atom(x) => x.hash(&mut hasher), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: dereferencing a tuple pattern where every element takes a reference [INFO] [stdout] --> src/data.rs:539:13 [INFO] [stdout] | [INFO] [stdout] 539 | &ValueData::Map(ref x) => { [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] 539 - &ValueData::Map(ref x) => { [INFO] [stdout] 539 + ValueData::Map(x) => { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: dereferencing a tuple pattern where every element takes a reference [INFO] [stdout] --> src/data.rs:549:13 [INFO] [stdout] | [INFO] [stdout] 549 | &ValueData::List(ref x) => { [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] 549 - &ValueData::List(ref x) => { [INFO] [stdout] 549 + ValueData::List(x) => { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this pattern creates a reference to a reference [INFO] [stdout] --> src/data.rs:540:29 [INFO] [stdout] | [INFO] [stdout] 540 | for (ref k, ref v) in x { [INFO] [stdout] | ^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 540 - for (ref k, ref v) in x { [INFO] [stdout] 540 + for (ref k, v) in x { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the following explicit lifetimes could be elided: 'a [INFO] [stdout] --> src/data.rs:584:6 [INFO] [stdout] | [INFO] [stdout] 584 | impl<'a> ToValueHash for &'a str { [INFO] [stdout] | ^^ ^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stdout] = note: `#[warn(clippy::needless_lifetimes)]` on by default [INFO] [stdout] help: elide the lifetimes [INFO] [stdout] | [INFO] [stdout] 584 - impl<'a> ToValueHash for &'a str { [INFO] [stdout] 584 + impl ToValueHash for &str { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the following explicit lifetimes could be elided: 'a [INFO] [stdout] --> src/data.rs:590:6 [INFO] [stdout] | [INFO] [stdout] 590 | impl<'a> ToValueHash for &'a String { [INFO] [stdout] | ^^ ^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stdout] help: elide the lifetimes [INFO] [stdout] | [INFO] [stdout] 590 - impl<'a> ToValueHash for &'a String { [INFO] [stdout] 590 + impl ToValueHash for &String { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: dereferencing a tuple pattern where every element takes a reference [INFO] [stdout] --> src/data.rs:669:16 [INFO] [stdout] | [INFO] [stdout] 669 | if let &ValueData::Symbol(ref id) = &self.data { [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] 669 - if let &ValueData::Symbol(ref id) = &self.data { [INFO] [stdout] 669 + if let ValueData::Symbol(id) = &self.data { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression borrows a value the compiler would automatically borrow [INFO] [stdout] --> src/data.rs:670:32 [INFO] [stdout] | [INFO] [stdout] 670 | Eval::from(Ok(Some((&*id.0).to_owned()))) [INFO] [stdout] | ^^^^^^^^ help: change this to: `(*id.0)` [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: dereferencing a tuple pattern where every element takes a reference [INFO] [stdout] --> src/data.rs:671:23 [INFO] [stdout] | [INFO] [stdout] 671 | } else if let &ValueData::Str(ref s) = &self.data { [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] 671 - } else if let &ValueData::Str(ref s) = &self.data { [INFO] [stdout] 671 + } else if let ValueData::Str(s) = &self.data { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: dereferencing a tuple pattern where every element takes a reference [INFO] [stdout] --> src/data.rs:673:23 [INFO] [stdout] | [INFO] [stdout] 673 | } else if let &ValueData::Polymorphic(ref p) = &self.data { [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] 673 - } else if let &ValueData::Polymorphic(ref p) = &self.data { [INFO] [stdout] 673 + } else if let ValueData::Polymorphic(p) = &self.data { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you don't need to add `&` to both the expression and the patterns [INFO] [stdout] --> src/data.rs:685:21 [INFO] [stdout] | [INFO] [stdout] 685 | let fname = match &self.data { [INFO] [stdout] | _____________________^ [INFO] [stdout] 686 | | &ValueData::RawStream(ref s) => { [INFO] [stdout] 687 | | // make sure the permissions are compatible [INFO] [stdout] 688 | | if (r & s.is_readable() != r) || (w & s.is_writable() != w) { [INFO] [stdout] ... | [INFO] [stdout] 699 | | "cannot convert type to raw stream")))) [INFO] [stdout] 700 | | }; [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 685 ~ let fname = match self.data { [INFO] [stdout] 686 ~ ValueData::RawStream(ref s) => { [INFO] [stdout] 687 | // make sure the permissions are compatible [INFO] [stdout] ... [INFO] [stdout] 694 | }, [INFO] [stdout] 695 ~ ValueData::Str(ref s) => s.to_owned(), [INFO] [stdout] 696 ~ ValueData::Symbol(ref id) => id.as_ref().to_owned(), [INFO] [stdout] 697 ~ ValueData::Atom(ref id) => id.as_ref().to_owned(), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: dereferencing a tuple pattern where every element takes a reference [INFO] [stdout] --> src/data.rs:686:13 [INFO] [stdout] | [INFO] [stdout] 686 | &ValueData::RawStream(ref s) => { [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] 686 - &ValueData::RawStream(ref s) => { [INFO] [stdout] 686 + ValueData::RawStream(s) => { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: dereferencing a tuple pattern where every element takes a reference [INFO] [stdout] --> src/data.rs:695:13 [INFO] [stdout] | [INFO] [stdout] 695 | &ValueData::Str(ref s) => s.to_owned(), [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] 695 - &ValueData::Str(ref s) => s.to_owned(), [INFO] [stdout] 695 + ValueData::Str(s) => s.to_owned(), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: dereferencing a tuple pattern where every element takes a reference [INFO] [stdout] --> src/data.rs:696:13 [INFO] [stdout] | [INFO] [stdout] 696 | &ValueData::Symbol(ref id) => id.as_ref().to_owned(), [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] 696 - &ValueData::Symbol(ref id) => id.as_ref().to_owned(), [INFO] [stdout] 696 + ValueData::Symbol(id) => id.as_ref().to_owned(), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: dereferencing a tuple pattern where every element takes a reference [INFO] [stdout] --> src/data.rs:697:13 [INFO] [stdout] | [INFO] [stdout] 697 | &ValueData::Atom(ref id) => id.as_ref().to_owned(), [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] 697 - &ValueData::Atom(ref id) => id.as_ref().to_owned(), [INFO] [stdout] 697 + ValueData::Atom(id) => id.as_ref().to_owned(), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: dereferencing a tuple pattern where every element takes a reference [INFO] [stdout] --> src/data.rs:717:16 [INFO] [stdout] | [INFO] [stdout] 717 | if let &ValueData::List(ref l) = &self.data { [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] 717 - if let &ValueData::List(ref l) = &self.data { [INFO] [stdout] 717 + if let ValueData::List(l) = &self.data { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: dereferencing a tuple pattern where every element takes a reference [INFO] [stdout] --> src/data.rs:719:23 [INFO] [stdout] | [INFO] [stdout] 719 | } else if let &ValueData::Polymorphic(ref p) = &self.data { [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] 719 - } else if let &ValueData::Polymorphic(ref p) = &self.data { [INFO] [stdout] 719 + } else if let ValueData::Polymorphic(p) = &self.data { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: dereferencing a tuple pattern where every element takes a reference [INFO] [stdout] --> src/data.rs:727:16 [INFO] [stdout] | [INFO] [stdout] 727 | if let &ValueData::List(ref l) = &self.data { [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] 727 - if let &ValueData::List(ref l) = &self.data { [INFO] [stdout] 727 + if let ValueData::List(l) = &self.data { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary use of `to_owned` [INFO] [stdout] --> src/data.rs:728:22 [INFO] [stdout] | [INFO] [stdout] 728 | Box::new(l.to_owned().into_iter().map(Ok)) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: use: `l.iter().cloned()` [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/data.rs:729:23 [INFO] [stdout] | [INFO] [stdout] 729 | } else if let &ValueData::Polymorphic(ref p) = &self.data { [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] 729 - } else if let &ValueData::Polymorphic(ref p) = &self.data { [INFO] [stdout] 729 + } else if let ValueData::Polymorphic(p) = &self.data { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you don't need to add `&` to both the expression and the patterns [INFO] [stdout] --> src/data.rs:738:9 [INFO] [stdout] | [INFO] [stdout] 738 | / match &self.data { [INFO] [stdout] 739 | | &ValueData::Boolean(true) => Eval::from(Ok(String::from("true"))), [INFO] [stdout] 740 | | &ValueData::Boolean(false) => Eval::from(Ok(String::from("false"))), [INFO] [stdout] 741 | | &ValueData::Number(ref n) => Eval::from(Ok(format!("{}", n))), [INFO] [stdout] ... | [INFO] [stdout] 793 | | &ValueData::Polymorphic(ref v) => v.into_str() [INFO] [stdout] 794 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 738 ~ match self.data { [INFO] [stdout] 739 ~ ValueData::Boolean(true) => Eval::from(Ok(String::from("true"))), [INFO] [stdout] 740 ~ ValueData::Boolean(false) => Eval::from(Ok(String::from("false"))), [INFO] [stdout] 741 ~ ValueData::Number(ref n) => Eval::from(Ok(format!("{}", n))), [INFO] [stdout] 742 ~ ValueData::Str(ref s) => Eval::from(Ok(s.to_owned())), [INFO] [stdout] 743 ~ ValueData::Symbol(ref id) => Eval::from(Ok((*(id.0)).to_owned())), [INFO] [stdout] 744 ~ ValueData::Atom(ref a) => Eval::from(Ok(format!(":{}", a))), [INFO] [stdout] 745 ~ ValueData::Map(ref m) => { [INFO] [stdout] 746 | let mut items = Vec::new(); [INFO] [stdout] ... [INFO] [stdout] 767 | }, [INFO] [stdout] 768 ~ ValueData::List(ref l) => { [INFO] [stdout] 769 | let mut s = String::with_capacity(128); [INFO] [stdout] ... [INFO] [stdout] 782 | }, [INFO] [stdout] 783 ~ ValueData::Function(_) => Eval::from(Ok(match &self.name { [INFO] [stdout] 784 | &None => String::from(""), [INFO] [stdout] 785 | &Some(ref s) => format!("", s.as_ref()), [INFO] [stdout] 786 | })), [INFO] [stdout] 787 ~ ValueData::Macro(_) => Eval::from(Ok(String::from(""))), [INFO] [stdout] 788 ~ ValueData::RawStream(ref s) => { [INFO] [stdout] 789 | // TODO: use a more meaningful representation. maybe add to the [INFO] [stdout] ... [INFO] [stdout] 792 | } [INFO] [stdout] 793 ~ ValueData::Polymorphic(ref v) => v.into_str() [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: dereferencing a tuple pattern where every element takes a reference [INFO] [stdout] --> src/data.rs:741:13 [INFO] [stdout] | [INFO] [stdout] 741 | &ValueData::Number(ref n) => Eval::from(Ok(format!("{}", n))), [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] 741 - &ValueData::Number(ref n) => Eval::from(Ok(format!("{}", n))), [INFO] [stdout] 741 + ValueData::Number(n) => Eval::from(Ok(format!("{}", n))), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: dereferencing a tuple pattern where every element takes a reference [INFO] [stdout] --> src/data.rs:742:13 [INFO] [stdout] | [INFO] [stdout] 742 | &ValueData::Str(ref s) => Eval::from(Ok(s.to_owned())), [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] 742 - &ValueData::Str(ref s) => Eval::from(Ok(s.to_owned())), [INFO] [stdout] 742 + ValueData::Str(s) => Eval::from(Ok(s.to_owned())), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: dereferencing a tuple pattern where every element takes a reference [INFO] [stdout] --> src/data.rs:743:13 [INFO] [stdout] | [INFO] [stdout] 743 | &ValueData::Symbol(ref id) => Eval::from(Ok((*(id.0)).to_owned())), [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] 743 - &ValueData::Symbol(ref id) => Eval::from(Ok((*(id.0)).to_owned())), [INFO] [stdout] 743 + ValueData::Symbol(id) => Eval::from(Ok((*(id.0)).to_owned())), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: dereferencing a tuple pattern where every element takes a reference [INFO] [stdout] --> src/data.rs:744:13 [INFO] [stdout] | [INFO] [stdout] 744 | &ValueData::Atom(ref a) => Eval::from(Ok(format!(":{}", a))), [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] 744 - &ValueData::Atom(ref a) => Eval::from(Ok(format!(":{}", a))), [INFO] [stdout] 744 + ValueData::Atom(a) => Eval::from(Ok(format!(":{}", a))), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: dereferencing a tuple pattern where every element takes a reference [INFO] [stdout] --> src/data.rs:745:13 [INFO] [stdout] | [INFO] [stdout] 745 | &ValueData::Map(ref m) => { [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] 745 - &ValueData::Map(ref m) => { [INFO] [stdout] 745 + ValueData::Map(m) => { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: dereferencing a tuple pattern where every element takes a reference [INFO] [stdout] --> src/data.rs:768:13 [INFO] [stdout] | [INFO] [stdout] 768 | &ValueData::List(ref l) => { [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] 768 - &ValueData::List(ref l) => { [INFO] [stdout] 768 + ValueData::List(l) => { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `.into_iter()` call is equivalent to `.iter()` and will not consume the `Vec` [INFO] [stdout] --> src/data.rs:771:28 [INFO] [stdout] | [INFO] [stdout] 771 | let xs = l.into_iter() [INFO] [stdout] | ^^^^^^^^^ help: call directly: `iter` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#into_iter_on_ref [INFO] [stdout] = note: `#[warn(clippy::into_iter_on_ref)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you don't need to add `&` to both the expression and the patterns [INFO] [stdout] --> src/data.rs:783:62 [INFO] [stdout] | [INFO] [stdout] 783 | &ValueData::Function(_) => Eval::from(Ok(match &self.name { [INFO] [stdout] | ______________________________________________________________^ [INFO] [stdout] 784 | | &None => String::from(""), [INFO] [stdout] 785 | | &Some(ref s) => format!("", s.as_ref()), [INFO] [stdout] 786 | | })), [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 783 ~ &ValueData::Function(_) => Eval::from(Ok(match self.name { [INFO] [stdout] 784 ~ None => String::from(""), [INFO] [stdout] 785 ~ Some(ref s) => format!("", s.as_ref()), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: dereferencing a tuple pattern where every element takes a reference [INFO] [stdout] --> src/data.rs:785:17 [INFO] [stdout] | [INFO] [stdout] 785 | &Some(ref s) => format!("", s.as_ref()), [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] 785 - &Some(ref s) => format!("", s.as_ref()), [INFO] [stdout] 785 + Some(s) => format!("", s.as_ref()), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: dereferencing a tuple pattern where every element takes a reference [INFO] [stdout] --> src/data.rs:788:13 [INFO] [stdout] | [INFO] [stdout] 788 | &ValueData::RawStream(ref s) => { [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] 788 - &ValueData::RawStream(ref s) => { [INFO] [stdout] 788 + ValueData::RawStream(s) => { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: dereferencing a tuple pattern where every element takes a reference [INFO] [stdout] --> src/data.rs:793:13 [INFO] [stdout] | [INFO] [stdout] 793 | &ValueData::Polymorphic(ref v) => v.into_str() [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] 793 - &ValueData::Polymorphic(ref v) => v.into_str() [INFO] [stdout] 793 + ValueData::Polymorphic(v) => v.into_str() [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you don't need to add `&` to both the expression and the patterns [INFO] [stdout] --> src/data.rs:798:9 [INFO] [stdout] | [INFO] [stdout] 798 | / match &self.data { [INFO] [stdout] 799 | | &ValueData::Str(ref s) => Eval::from(Ok(format!("\"{}\"", s))), [INFO] [stdout] 800 | | &ValueData::List(ref l) => { [INFO] [stdout] 801 | | let mut s = String::with_capacity(128); [INFO] [stdout] ... | [INFO] [stdout] 815 | | _ => self.into_str() [INFO] [stdout] 816 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 798 ~ match self.data { [INFO] [stdout] 799 ~ ValueData::Str(ref s) => Eval::from(Ok(format!("\"{}\"", s))), [INFO] [stdout] 800 ~ ValueData::List(ref l) => { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: dereferencing a tuple pattern where every element takes a reference [INFO] [stdout] --> src/data.rs:799:13 [INFO] [stdout] | [INFO] [stdout] 799 | &ValueData::Str(ref s) => Eval::from(Ok(format!("\"{}\"", s))), [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] 799 - &ValueData::Str(ref s) => Eval::from(Ok(format!("\"{}\"", s))), [INFO] [stdout] 799 + ValueData::Str(s) => Eval::from(Ok(format!("\"{}\"", s))), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: dereferencing a tuple pattern where every element takes a reference [INFO] [stdout] --> src/data.rs:800:13 [INFO] [stdout] | [INFO] [stdout] 800 | &ValueData::List(ref l) => { [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] 800 - &ValueData::List(ref l) => { [INFO] [stdout] 800 + ValueData::List(l) => { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `.into_iter()` call is equivalent to `.iter()` and will not consume the `Vec` [INFO] [stdout] --> src/data.rs:803:28 [INFO] [stdout] | [INFO] [stdout] 803 | let xs = l.into_iter() [INFO] [stdout] | ^^^^^^^^^ help: call directly: `iter` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#into_iter_on_ref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: dereferencing a tuple pattern where every element takes a reference [INFO] [stdout] --> src/data.rs:820:16 [INFO] [stdout] | [INFO] [stdout] 820 | if let &ValueData::Number(ref n) = &self.data { [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] 820 - if let &ValueData::Number(ref n) = &self.data { [INFO] [stdout] 820 + if let ValueData::Number(n) = &self.data { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: dereferencing a tuple pattern where every element takes a reference [INFO] [stdout] --> src/data.rs:822:23 [INFO] [stdout] | [INFO] [stdout] 822 | } else if let &ValueData::Polymorphic(ref p) = &self.data { [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] 822 - } else if let &ValueData::Polymorphic(ref p) = &self.data { [INFO] [stdout] 822 + } else if let ValueData::Polymorphic(p) = &self.data { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you don't need to add `&` to both the expression and the patterns [INFO] [stdout] --> src/data.rs:830:9 [INFO] [stdout] | [INFO] [stdout] 830 | / match &self.data { [INFO] [stdout] 831 | | &ValueData::Boolean(b) => Eval::from(Ok(b)), [INFO] [stdout] 832 | | &ValueData::Number(ref n) => Eval::from(Ok(n.round() != 0)), [INFO] [stdout] 833 | | &ValueData::Str(ref s) => Eval::from(Ok(!s.is_empty())), [INFO] [stdout] ... | [INFO] [stdout] 846 | | &ValueData::Polymorphic(ref v) => v.into_bool() [INFO] [stdout] 847 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 830 ~ match self.data { [INFO] [stdout] 831 ~ ValueData::Boolean(b) => Eval::from(Ok(b)), [INFO] [stdout] 832 ~ ValueData::Number(ref n) => Eval::from(Ok(n.round() != 0)), [INFO] [stdout] 833 ~ ValueData::Str(ref s) => Eval::from(Ok(!s.is_empty())), [INFO] [stdout] 834 ~ ValueData::Symbol(_) => Eval::from(Ok(true)), [INFO] [stdout] 835 ~ ValueData::Atom(_) => Eval::from(Ok(true)), [INFO] [stdout] 836 ~ ValueData::Map(ref m) => Eval::from(Ok(!m.is_empty())), [INFO] [stdout] 837 ~ ValueData::List(ref l) => [INFO] [stdout] 838 | if l.is_empty() { Eval::from(Ok(false)) } else { [INFO] [stdout] ... [INFO] [stdout] 842 | }, [INFO] [stdout] 843 ~ ValueData::Function(_) => Eval::from(Ok(true)), [INFO] [stdout] 844 ~ ValueData::Macro(_) => Eval::from(Ok(true)), [INFO] [stdout] 845 ~ ValueData::RawStream(_) => Eval::from(Ok(true)), [INFO] [stdout] 846 ~ ValueData::Polymorphic(ref v) => v.into_bool() [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: dereferencing a tuple pattern where every element takes a reference [INFO] [stdout] --> src/data.rs:832:13 [INFO] [stdout] | [INFO] [stdout] 832 | &ValueData::Number(ref n) => Eval::from(Ok(n.round() != 0)), [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] 832 - &ValueData::Number(ref n) => Eval::from(Ok(n.round() != 0)), [INFO] [stdout] 832 + ValueData::Number(n) => Eval::from(Ok(n.round() != 0)), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: dereferencing a tuple pattern where every element takes a reference [INFO] [stdout] --> src/data.rs:833:13 [INFO] [stdout] | [INFO] [stdout] 833 | &ValueData::Str(ref s) => Eval::from(Ok(!s.is_empty())), [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] 833 - &ValueData::Str(ref s) => Eval::from(Ok(!s.is_empty())), [INFO] [stdout] 833 + ValueData::Str(s) => Eval::from(Ok(!s.is_empty())), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: dereferencing a tuple pattern where every element takes a reference [INFO] [stdout] --> src/data.rs:836:13 [INFO] [stdout] | [INFO] [stdout] 836 | &ValueData::Map(ref m) => Eval::from(Ok(!m.is_empty())), [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] 836 - &ValueData::Map(ref m) => Eval::from(Ok(!m.is_empty())), [INFO] [stdout] 836 + ValueData::Map(m) => Eval::from(Ok(!m.is_empty())), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: dereferencing a tuple pattern where every element takes a reference [INFO] [stdout] --> src/data.rs:837:13 [INFO] [stdout] | [INFO] [stdout] 837 | &ValueData::List(ref l) => [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] 837 - &ValueData::List(ref l) => [INFO] [stdout] 837 + ValueData::List(l) => [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: dereferencing a tuple pattern where every element takes a reference [INFO] [stdout] --> src/data.rs:846:13 [INFO] [stdout] | [INFO] [stdout] 846 | &ValueData::Polymorphic(ref v) => v.into_bool() [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] 846 - &ValueData::Polymorphic(ref v) => v.into_bool() [INFO] [stdout] 846 + ValueData::Polymorphic(v) => v.into_bool() [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: dereferencing a tuple pattern where every element takes a reference [INFO] [stdout] --> src/data.rs:852:13 [INFO] [stdout] | [INFO] [stdout] 852 | &ValueData::List(ref l) => [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] 852 - &ValueData::List(ref l) => [INFO] [stdout] 852 + ValueData::List(l) => [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `.into_iter()` call is equivalent to `.iter()` and will not consume the `Vec` [INFO] [stdout] --> src/data.rs:853:30 [INFO] [stdout] | [INFO] [stdout] 853 | Eval::from(l.into_iter() [INFO] [stdout] | ^^^^^^^^^ help: call directly: `iter` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#into_iter_on_ref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of `flat_map` with an identity function [INFO] [stdout] --> src/data.rs:857:40 [INFO] [stdout] | [INFO] [stdout] 857 | ... .flat_map(|x| x) [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: try: `flatten()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#flat_map_identity [INFO] [stdout] = note: `#[warn(clippy::flat_map_identity)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated method `core::str::::trim_left_matches`: superseded by `trim_start_matches` [INFO] [stdout] --> src/input/render.rs:116:31 [INFO] [stdout] | [INFO] [stdout] 116 | Some(e) => e.text.trim_left_matches(&s).to_owned() [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] help: replace the use of the deprecated method [INFO] [stdout] | [INFO] [stdout] 116 - Some(e) => e.text.trim_left_matches(&s).to_owned() [INFO] [stdout] 116 + Some(e) => e.text.trim_start_matches(&s).to_owned() [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: mutable key type [INFO] [stdout] --> src/data.rs:945:25 [INFO] [stdout] | [INFO] [stdout] 945 | let mut n = m.to_owned(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: ... because it contains `ValueHash`, which has interior mutability [INFO] [stdout] = note: ... because it contains `Value`, which has interior mutability [INFO] [stdout] = note: ... because it contains `ValueData`, which has interior mutability [INFO] [stdout] = note: ... because it contains `StreamWrapper`, which has interior mutability [INFO] [stdout] = note: ... because it contains `StreamWrap`, which has interior mutability [INFO] [stdout] = note: ... because it contains `Arc>>`, which has interior mutability [INFO] [stdout] = note: ... because it contains `Mutex>`, which has interior mutability [INFO] [stdout] = note: ... because it contains `Mutex`, which has interior mutability [INFO] [stdout] = note: ... because it contains `Atomic`, which has interior mutability [INFO] [stdout] = note: ... because it contains `UnsafeCell<::Storage>`, which has interior mutability [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#mutable_key_type [INFO] [stdout] = note: `#[warn(clippy::mutable_key_type)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you don't need to add `&` to both the expression and the patterns [INFO] [stdout] --> src/data.rs:969:9 [INFO] [stdout] | [INFO] [stdout] 969 | / match &self.data { [INFO] [stdout] 970 | | &ValueData::Symbol(ref s) => { [INFO] [stdout] 971 | | // try looking it up [INFO] [stdout] 972 | | Eval::from(if let Some(v) = env.get(&*(s.0)) { [INFO] [stdout] ... | [INFO] [stdout] 1001 | | _ => Eval::from(Ok(self.to_owned())) [INFO] [stdout] 1002 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 969 ~ match self.data { [INFO] [stdout] 970 ~ ValueData::Symbol(ref s) => { [INFO] [stdout] 971 | // try looking it up [INFO] [stdout] ... [INFO] [stdout] 977 | }, [INFO] [stdout] 978 ~ ValueData::List(ref xs) => { [INFO] [stdout] 979 | // evaluate () as () [INFO] [stdout] ... [INFO] [stdout] 999 | }, [INFO] [stdout] 1000 ~ ValueData::Polymorphic(ref p) => p.evaluate(env), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: dereferencing a tuple pattern where every element takes a reference [INFO] [stdout] --> src/data.rs:970:13 [INFO] [stdout] | [INFO] [stdout] 970 | &ValueData::Symbol(ref s) => { [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] 970 - &ValueData::Symbol(ref s) => { [INFO] [stdout] 970 + ValueData::Symbol(s) => { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: dereferencing a tuple pattern where every element takes a reference [INFO] [stdout] --> src/data.rs:978:13 [INFO] [stdout] | [INFO] [stdout] 978 | &ValueData::List(ref xs) => { [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] 978 - &ValueData::List(ref xs) => { [INFO] [stdout] 978 + ValueData::List(xs) => { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `.into_iter()` call is equivalent to `.iter()` and will not consume the `Vec` [INFO] [stdout] --> src/data.rs:990:33 [INFO] [stdout] | [INFO] [stdout] 990 | let xs = xs.into_iter() [INFO] [stdout] | ^^^^^^^^^ help: call directly: `iter` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#into_iter_on_ref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: dereferencing a tuple pattern where every element takes a reference [INFO] [stdout] --> src/data.rs:1000:13 [INFO] [stdout] | [INFO] [stdout] 1000 | &ValueData::Polymorphic(ref p) => p.evaluate(env), [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] 1000 - &ValueData::Polymorphic(ref p) => p.evaluate(env), [INFO] [stdout] 1000 + ValueData::Polymorphic(p) => p.evaluate(env), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you don't need to add `&` to both the expression and the patterns [INFO] [stdout] --> src/data.rs:1006:9 [INFO] [stdout] | [INFO] [stdout] 1006 | / match &self.data { [INFO] [stdout] 1007 | | &ValueData::Function(_) => true, [INFO] [stdout] 1008 | | &ValueData::Polymorphic(ref v) => v.is_executable(), [INFO] [stdout] 1009 | | _ => false [INFO] [stdout] 1010 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 1006 ~ match self.data { [INFO] [stdout] 1007 ~ ValueData::Function(_) => true, [INFO] [stdout] 1008 ~ ValueData::Polymorphic(ref v) => v.is_executable(), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: dereferencing a tuple pattern where every element takes a reference [INFO] [stdout] --> src/data.rs:1008:13 [INFO] [stdout] | [INFO] [stdout] 1008 | &ValueData::Polymorphic(ref v) => v.is_executable(), [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] 1008 - &ValueData::Polymorphic(ref v) => v.is_executable(), [INFO] [stdout] 1008 + ValueData::Polymorphic(v) => v.is_executable(), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: dereferencing a tuple pattern where every element takes a reference [INFO] [stdout] --> src/data.rs:1017:13 [INFO] [stdout] | [INFO] [stdout] 1017 | &ValueData::Function(ref f) => f.run(env, args), [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] 1017 - &ValueData::Function(ref f) => f.run(env, args), [INFO] [stdout] 1017 + ValueData::Function(f) => f.run(env, args), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: dereferencing a tuple pattern where every element takes a reference [INFO] [stdout] --> src/data.rs:1019:13 [INFO] [stdout] | [INFO] [stdout] 1019 | &ValueData::Polymorphic(ref v) => v.execute(env, args), [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] 1019 - &ValueData::Polymorphic(ref v) => v.execute(env, args), [INFO] [stdout] 1019 + ValueData::Polymorphic(v) => v.execute(env, args), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you don't need to add `&` to both the expression and the patterns [INFO] [stdout] --> src/data.rs:1026:9 [INFO] [stdout] | [INFO] [stdout] 1026 | / match &self.data { [INFO] [stdout] 1027 | | &ValueData::List(ref v) => Eval::from(Ok(v.first().map(|x| x.clone()))), [INFO] [stdout] 1028 | | &ValueData::Polymorphic(ref v) => v.first(), [INFO] [stdout] 1029 | | _ => Eval::from(Ok(Some(self.clone()))) [INFO] [stdout] 1030 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 1026 ~ match self.data { [INFO] [stdout] 1027 ~ ValueData::List(ref v) => Eval::from(Ok(v.first().map(|x| x.clone()))), [INFO] [stdout] 1028 ~ ValueData::Polymorphic(ref v) => v.first(), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: dereferencing a tuple pattern where every element takes a reference [INFO] [stdout] --> src/data.rs:1027:13 [INFO] [stdout] | [INFO] [stdout] 1027 | &ValueData::List(ref v) => Eval::from(Ok(v.first().map(|x| x.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] 1027 - &ValueData::List(ref v) => Eval::from(Ok(v.first().map(|x| x.clone()))), [INFO] [stdout] 1027 + ValueData::List(v) => Eval::from(Ok(v.first().map(|x| x.clone()))), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you are using an explicit closure for cloning elements [INFO] [stdout] --> src/data.rs:1027:61 [INFO] [stdout] | [INFO] [stdout] 1027 | &ValueData::List(ref v) => Eval::from(Ok(v.first().map(|x| x.clone()))), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider calling the dedicated `cloned` method: `v.first().cloned()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stdout] = note: `#[warn(clippy::map_clone)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: dereferencing a tuple pattern where every element takes a reference [INFO] [stdout] --> src/data.rs:1028:13 [INFO] [stdout] | [INFO] [stdout] 1028 | &ValueData::Polymorphic(ref v) => v.first(), [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] 1028 - &ValueData::Polymorphic(ref v) => v.first(), [INFO] [stdout] 1028 + ValueData::Polymorphic(v) => v.first(), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: dereferencing a tuple pattern where every element takes a reference [INFO] [stdout] --> src/data.rs:1038:14 [INFO] [stdout] | [INFO] [stdout] 1038 | (&ValueData::Number(ref x), &ValueData::Number(ref y)) => x == y, [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] 1038 - (&ValueData::Number(ref x), &ValueData::Number(ref y)) => x == y, [INFO] [stdout] 1038 + (ValueData::Number(x), &ValueData::Number(ref y)) => x == y, [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: dereferencing a tuple pattern where every element takes a reference [INFO] [stdout] --> src/data.rs:1038:42 [INFO] [stdout] | [INFO] [stdout] 1038 | (&ValueData::Number(ref x), &ValueData::Number(ref y)) => x == y, [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] 1038 - (&ValueData::Number(ref x), &ValueData::Number(ref y)) => x == y, [INFO] [stdout] 1038 + (&ValueData::Number(ref x), ValueData::Number(y)) => x == y, [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: dereferencing a tuple pattern where every element takes a reference [INFO] [stdout] --> src/data.rs:1039:14 [INFO] [stdout] | [INFO] [stdout] 1039 | (&ValueData::Str(ref x), &ValueData::Str(ref y)) => x == y, [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] 1039 - (&ValueData::Str(ref x), &ValueData::Str(ref y)) => x == y, [INFO] [stdout] 1039 + (ValueData::Str(x), &ValueData::Str(ref y)) => x == y, [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: dereferencing a tuple pattern where every element takes a reference [INFO] [stdout] --> src/data.rs:1039:42 [INFO] [stdout] | [INFO] [stdout] 1039 | (&ValueData::Str(ref x), &ValueData::Str(ref y)) => x == y, [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] 1039 - (&ValueData::Str(ref x), &ValueData::Str(ref y)) => x == y, [INFO] [stdout] 1039 + (&ValueData::Str(ref x), ValueData::Str(y)) => x == y, [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: dereferencing a tuple pattern where every element takes a reference [INFO] [stdout] --> src/data.rs:1040:14 [INFO] [stdout] | [INFO] [stdout] 1040 | (&ValueData::Symbol(ref x), &ValueData::Symbol(ref y)) => x == y, [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] 1040 - (&ValueData::Symbol(ref x), &ValueData::Symbol(ref y)) => x == y, [INFO] [stdout] 1040 + (ValueData::Symbol(x), &ValueData::Symbol(ref y)) => x == y, [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: dereferencing a tuple pattern where every element takes a reference [INFO] [stdout] --> src/data.rs:1040:42 [INFO] [stdout] | [INFO] [stdout] 1040 | (&ValueData::Symbol(ref x), &ValueData::Symbol(ref y)) => x == y, [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] 1040 - (&ValueData::Symbol(ref x), &ValueData::Symbol(ref y)) => x == y, [INFO] [stdout] 1040 + (&ValueData::Symbol(ref x), ValueData::Symbol(y)) => x == y, [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: dereferencing a tuple pattern where every element takes a reference [INFO] [stdout] --> src/data.rs:1041:14 [INFO] [stdout] | [INFO] [stdout] 1041 | (&ValueData::Atom(ref x), &ValueData::Atom(ref y)) => x == y, [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] 1041 - (&ValueData::Atom(ref x), &ValueData::Atom(ref y)) => x == y, [INFO] [stdout] 1041 + (ValueData::Atom(x), &ValueData::Atom(ref y)) => x == y, [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: dereferencing a tuple pattern where every element takes a reference [INFO] [stdout] --> src/data.rs:1041:42 [INFO] [stdout] | [INFO] [stdout] 1041 | (&ValueData::Atom(ref x), &ValueData::Atom(ref y)) => x == y, [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] 1041 - (&ValueData::Atom(ref x), &ValueData::Atom(ref y)) => x == y, [INFO] [stdout] 1041 + (&ValueData::Atom(ref x), ValueData::Atom(y)) => x == y, [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: dereferencing a tuple pattern where every element takes a reference [INFO] [stdout] --> src/data.rs:1042:14 [INFO] [stdout] | [INFO] [stdout] 1042 | (&ValueData::Map(ref m), &ValueData::Map(ref n)) => m == n, [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] 1042 - (&ValueData::Map(ref m), &ValueData::Map(ref n)) => m == n, [INFO] [stdout] 1042 + (ValueData::Map(m), &ValueData::Map(ref n)) => m == n, [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: dereferencing a tuple pattern where every element takes a reference [INFO] [stdout] --> src/data.rs:1042:42 [INFO] [stdout] | [INFO] [stdout] 1042 | (&ValueData::Map(ref m), &ValueData::Map(ref n)) => m == n, [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] 1042 - (&ValueData::Map(ref m), &ValueData::Map(ref n)) => m == n, [INFO] [stdout] 1042 + (&ValueData::Map(ref m), ValueData::Map(n)) => m == n, [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: dereferencing a tuple pattern where every element takes a reference [INFO] [stdout] --> src/data.rs:1043:14 [INFO] [stdout] | [INFO] [stdout] 1043 | (&ValueData::List(ref x), &ValueData::List(ref y)) => x == y, [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] 1043 - (&ValueData::List(ref x), &ValueData::List(ref y)) => x == y, [INFO] [stdout] 1043 + (ValueData::List(x), &ValueData::List(ref y)) => x == y, [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: dereferencing a tuple pattern where every element takes a reference [INFO] [stdout] --> src/data.rs:1043:42 [INFO] [stdout] | [INFO] [stdout] 1043 | (&ValueData::List(ref x), &ValueData::List(ref y)) => x == y, [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] 1043 - (&ValueData::List(ref x), &ValueData::List(ref y)) => x == y, [INFO] [stdout] 1043 + (&ValueData::List(ref x), ValueData::List(y)) => x == y, [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: dereferencing a tuple pattern where every element takes a reference [INFO] [stdout] --> src/data.rs:1046:14 [INFO] [stdout] | [INFO] [stdout] 1046 | (&ValueData::Function(ref a),&ValueData::Function(ref b))=> a == b, [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] 1046 - (&ValueData::Function(ref a),&ValueData::Function(ref b))=> a == b, [INFO] [stdout] 1046 + (ValueData::Function(a),&ValueData::Function(ref b))=> a == b, [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: dereferencing a tuple pattern where every element takes a reference [INFO] [stdout] --> src/data.rs:1046:42 [INFO] [stdout] | [INFO] [stdout] 1046 | (&ValueData::Function(ref a),&ValueData::Function(ref b))=> a == b, [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] 1046 - (&ValueData::Function(ref a),&ValueData::Function(ref b))=> a == b, [INFO] [stdout] 1046 + (&ValueData::Function(ref a),ValueData::Function(b))=> a == b, [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/data.rs:1167:25 [INFO] [stdout] | [INFO] [stdout] 1167 | None => return Eval::from(Ok(None)), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] = note: `#[warn(clippy::needless_return)]` on by default [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 1167 - None => return Eval::from(Ok(None)), [INFO] [stdout] 1167 + None => Eval::from(Ok(None)), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/data.rs:1174:21 [INFO] [stdout] | [INFO] [stdout] 1174 | return Eval::from(Ok(itms.first().map(|x| x.clone()))) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 1174 - return Eval::from(Ok(itms.first().map(|x| x.clone()))) [INFO] [stdout] 1174 + Eval::from(Ok(itms.first().map(|x| x.clone()))) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you are using an explicit closure for cloning elements [INFO] [stdout] --> src/data.rs:1174:42 [INFO] [stdout] | [INFO] [stdout] 1174 | return Eval::from(Ok(itms.first().map(|x| x.clone()))) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider calling the dedicated `cloned` method: `itms.first().cloned()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you are using an explicit closure for cloning elements [INFO] [stdout] --> src/data.rs:1178:27 [INFO] [stdout] | [INFO] [stdout] 1178 | Eval::from(Ok(itms.first().map(|x| x.clone()))) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider calling the dedicated `cloned` method: `itms.first().cloned()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you don't need to add `&` to all patterns [INFO] [stdout] --> src/data.rs:1185:9 [INFO] [stdout] | [INFO] [stdout] 1185 | / match self { [INFO] [stdout] 1186 | | &ValueData::Boolean(b) => write!(f, "", b), [INFO] [stdout] 1187 | | &ValueData::Number(ref n) => write!(f, "", n), [INFO] [stdout] 1188 | | &ValueData::Str(ref s) => write!(f, "", s), [INFO] [stdout] ... | [INFO] [stdout] 1196 | | &ValueData::Polymorphic(_) => write!(f, ""), [INFO] [stdout] 1197 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stdout] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stdout] | [INFO] [stdout] 1185 ~ match *self { [INFO] [stdout] 1186 ~ ValueData::Boolean(b) => write!(f, "", b), [INFO] [stdout] 1187 ~ ValueData::Number(ref n) => write!(f, "", n), [INFO] [stdout] 1188 ~ ValueData::Str(ref s) => write!(f, "", s), [INFO] [stdout] 1189 ~ ValueData::Symbol(ref s) => write!(f, "", s.0), [INFO] [stdout] 1190 ~ ValueData::Atom(ref s) => write!(f, "", s), [INFO] [stdout] 1191 ~ ValueData::Map(_) => write!(f, ""), [INFO] [stdout] 1192 ~ ValueData::List(ref v) => write!(f, "{:?}", v), [INFO] [stdout] 1193 ~ ValueData::Function(_) => write!(f, ""), [INFO] [stdout] 1194 ~ ValueData::Macro(_) => write!(f, ""), [INFO] [stdout] 1195 ~ ValueData::RawStream(_) => write!(f, ""), [INFO] [stdout] 1196 ~ ValueData::Polymorphic(_) => write!(f, ""), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: dereferencing a tuple pattern where every element takes a reference [INFO] [stdout] --> src/data.rs:1187:13 [INFO] [stdout] | [INFO] [stdout] 1187 | &ValueData::Number(ref n) => write!(f, "", n), [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] 1187 - &ValueData::Number(ref n) => write!(f, "", n), [INFO] [stdout] 1187 + ValueData::Number(n) => write!(f, "", n), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: dereferencing a tuple pattern where every element takes a reference [INFO] [stdout] --> src/data.rs:1188:13 [INFO] [stdout] | [INFO] [stdout] 1188 | &ValueData::Str(ref s) => write!(f, "", s), [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] 1188 - &ValueData::Str(ref s) => write!(f, "", s), [INFO] [stdout] 1188 + ValueData::Str(s) => write!(f, "", s), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: dereferencing a tuple pattern where every element takes a reference [INFO] [stdout] --> src/data.rs:1189:13 [INFO] [stdout] | [INFO] [stdout] 1189 | &ValueData::Symbol(ref s) => write!(f, "", s.0), [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] 1189 - &ValueData::Symbol(ref s) => write!(f, "", s.0), [INFO] [stdout] 1189 + ValueData::Symbol(s) => write!(f, "", s.0), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: dereferencing a tuple pattern where every element takes a reference [INFO] [stdout] --> src/data.rs:1190:13 [INFO] [stdout] | [INFO] [stdout] 1190 | &ValueData::Atom(ref s) => write!(f, "", s), [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] 1190 - &ValueData::Atom(ref s) => write!(f, "", s), [INFO] [stdout] 1190 + ValueData::Atom(s) => write!(f, "", s), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: dereferencing a tuple pattern where every element takes a reference [INFO] [stdout] --> src/data.rs:1192:13 [INFO] [stdout] | [INFO] [stdout] 1192 | &ValueData::List(ref v) => write!(f, "{:?}", v), [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] 1192 - &ValueData::List(ref v) => write!(f, "{:?}", v), [INFO] [stdout] 1192 + ValueData::List(v) => write!(f, "{:?}", v), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stdout] --> src/input/keybind.rs:60:24 [INFO] [stdout] | [INFO] [stdout] 60 | let f: Arc> = Arc::new(Box::new(f)); [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] 60 | let f: Arc> = Arc::new(Box::new(f)); [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods called `into_*` usually take `self` by value [INFO] [stdout] --> src/data.rs:1293:22 [INFO] [stdout] | [INFO] [stdout] 1293 | pub fn into_repr(&self) -> String { [INFO] [stdout] | ^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: consider choosing a less ambiguous name [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#wrong_self_convention [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods called `into_*` usually take `self` by value [INFO] [stdout] --> src/data.rs:1319:22 [INFO] [stdout] | [INFO] [stdout] 1319 | pub fn into_repr(&self) -> String { [INFO] [stdout] | ^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: consider choosing a less ambiguous name [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#wrong_self_convention [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you don't need to add `&` to all patterns [INFO] [stdout] --> src/data.rs:1325:13 [INFO] [stdout] | [INFO] [stdout] 1325 | / match t { [INFO] [stdout] 1326 | | &TerminalMode::ReplaceFile(ref s) => [INFO] [stdout] 1327 | | r.push_str(&format!(" > {}", s)), [INFO] [stdout] 1328 | | &TerminalMode::AppendFile(ref s) => [INFO] [stdout] ... | [INFO] [stdout] 1337 | | r.push_str(&format!(" <= {}", id.as_ref())), [INFO] [stdout] 1338 | | } [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stdout] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stdout] | [INFO] [stdout] 1325 ~ match *t { [INFO] [stdout] 1326 ~ TerminalMode::ReplaceFile(ref s) => [INFO] [stdout] 1327 | r.push_str(&format!(" > {}", s)), [INFO] [stdout] 1328 ~ TerminalMode::AppendFile(ref s) => [INFO] [stdout] 1329 | r.push_str(&format!(" >> {}", s)), [INFO] [stdout] 1330 ~ TerminalMode::SetVariable(ref id) => [INFO] [stdout] 1331 | r.push_str(&format!(" >= {}", id.as_ref())), [INFO] [stdout] 1332 ~ TerminalMode::AppendVariable(ref id) => [INFO] [stdout] 1333 | r.push_str(&format!(" >>= {}", id.as_ref())), [INFO] [stdout] 1334 ~ TerminalMode::InputFile(ref s) => [INFO] [stdout] 1335 | r.push_str(&format!(" < {}", s)), [INFO] [stdout] 1336 ~ TerminalMode::InputVar(ref id) => [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: dereferencing a tuple pattern where every element takes a reference [INFO] [stdout] --> src/data.rs:1326:17 [INFO] [stdout] | [INFO] [stdout] 1326 | &TerminalMode::ReplaceFile(ref s) => [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] 1326 - &TerminalMode::ReplaceFile(ref s) => [INFO] [stdout] 1326 + TerminalMode::ReplaceFile(s) => [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: dereferencing a tuple pattern where every element takes a reference [INFO] [stdout] --> src/data.rs:1328:17 [INFO] [stdout] | [INFO] [stdout] 1328 | &TerminalMode::AppendFile(ref s) => [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] 1328 - &TerminalMode::AppendFile(ref s) => [INFO] [stdout] 1328 + TerminalMode::AppendFile(s) => [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: dereferencing a tuple pattern where every element takes a reference [INFO] [stdout] --> src/data.rs:1330:17 [INFO] [stdout] | [INFO] [stdout] 1330 | &TerminalMode::SetVariable(ref id) => [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] 1330 - &TerminalMode::SetVariable(ref id) => [INFO] [stdout] 1330 + TerminalMode::SetVariable(id) => [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated method `core::str::::trim_left_matches`: superseded by `trim_start_matches` [INFO] [stdout] --> src/input/mod.rs:201:36 [INFO] [stdout] | [INFO] [stdout] 201 | let to_insert = entry.text.trim_left_matches(&self.editor.buf().as_string()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] help: replace the use of the deprecated method [INFO] [stdout] | [INFO] [stdout] 201 - let to_insert = entry.text.trim_left_matches(&self.editor.buf().as_string()); [INFO] [stdout] 201 + let to_insert = entry.text.trim_start_matches(&self.editor.buf().as_string()); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: dereferencing a tuple pattern where every element takes a reference [INFO] [stdout] --> src/data.rs:1332:17 [INFO] [stdout] | [INFO] [stdout] 1332 | &TerminalMode::AppendVariable(ref id) => [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] 1332 - &TerminalMode::AppendVariable(ref id) => [INFO] [stdout] 1332 + TerminalMode::AppendVariable(id) => [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: dereferencing a tuple pattern where every element takes a reference [INFO] [stdout] --> src/data.rs:1334:17 [INFO] [stdout] | [INFO] [stdout] 1334 | &TerminalMode::InputFile(ref s) => [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] 1334 - &TerminalMode::InputFile(ref s) => [INFO] [stdout] 1334 + TerminalMode::InputFile(s) => [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: dereferencing a tuple pattern where every element takes a reference [INFO] [stdout] --> src/data.rs:1336:17 [INFO] [stdout] | [INFO] [stdout] 1336 | &TerminalMode::InputVar(ref id) => [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] 1336 - &TerminalMode::InputVar(ref id) => [INFO] [stdout] 1336 + TerminalMode::InputVar(id) => [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods called `into_*` usually take `self` by value [INFO] [stdout] --> src/data.rs:1344:21 [INFO] [stdout] | [INFO] [stdout] 1344 | pub fn into_obj(&self) -> Value { [INFO] [stdout] | ^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: consider choosing a less ambiguous name [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#wrong_self_convention [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you don't need to add `&` to all patterns [INFO] [stdout] --> src/data.rs:1359:20 [INFO] [stdout] | [INFO] [stdout] 1359 | v.push(match t { [INFO] [stdout] | ____________________^ [INFO] [stdout] 1360 | | &TerminalMode::ReplaceFile(ref s) => [INFO] [stdout] 1361 | | Value::list(vec![Value::atom("replace-file"), [INFO] [stdout] 1362 | | Value::str(s.as_ref())]), [INFO] [stdout] ... | [INFO] [stdout] 1377 | | Value::from(id.clone())]), [INFO] [stdout] 1378 | | }); [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stdout] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stdout] | [INFO] [stdout] 1359 ~ v.push(match *t { [INFO] [stdout] 1360 ~ TerminalMode::ReplaceFile(ref s) => [INFO] [stdout] 1361 | Value::list(vec![Value::atom("replace-file"), [INFO] [stdout] 1362 | Value::str(s.as_ref())]), [INFO] [stdout] 1363 ~ TerminalMode::AppendFile(ref s) => [INFO] [stdout] 1364 | Value::list(vec![Value::atom("into-file"), [INFO] [stdout] 1365 | Value::str(s.as_ref())]), [INFO] [stdout] 1366 ~ TerminalMode::SetVariable(ref id) => [INFO] [stdout] 1367 | Value::list(vec![Value::atom("replace-var"), [INFO] [stdout] 1368 | Value::from(id.clone())]), [INFO] [stdout] 1369 ~ TerminalMode::AppendVariable(ref id) => [INFO] [stdout] 1370 | Value::list(vec![Value::atom("into-var"), [INFO] [stdout] 1371 | Value::from(id.clone())]), [INFO] [stdout] 1372 ~ TerminalMode::InputFile(ref s) => [INFO] [stdout] 1373 | Value::list(vec![Value::atom("input-file"), [INFO] [stdout] 1374 | Value::str(s.as_ref())]), [INFO] [stdout] 1375 ~ TerminalMode::InputVar(ref id) => [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: dereferencing a tuple pattern where every element takes a reference [INFO] [stdout] --> src/data.rs:1360:17 [INFO] [stdout] | [INFO] [stdout] 1360 | &TerminalMode::ReplaceFile(ref s) => [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] 1360 - &TerminalMode::ReplaceFile(ref s) => [INFO] [stdout] 1360 + TerminalMode::ReplaceFile(s) => [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: dereferencing a tuple pattern where every element takes a reference [INFO] [stdout] --> src/data.rs:1363:17 [INFO] [stdout] | [INFO] [stdout] 1363 | &TerminalMode::AppendFile(ref s) => [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] 1363 - &TerminalMode::AppendFile(ref s) => [INFO] [stdout] 1363 + TerminalMode::AppendFile(s) => [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: dereferencing a tuple pattern where every element takes a reference [INFO] [stdout] --> src/data.rs:1366:17 [INFO] [stdout] | [INFO] [stdout] 1366 | &TerminalMode::SetVariable(ref id) => [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] 1366 - &TerminalMode::SetVariable(ref id) => [INFO] [stdout] 1366 + TerminalMode::SetVariable(id) => [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: dereferencing a tuple pattern where every element takes a reference [INFO] [stdout] --> src/data.rs:1369:17 [INFO] [stdout] | [INFO] [stdout] 1369 | &TerminalMode::AppendVariable(ref id) => [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] 1369 - &TerminalMode::AppendVariable(ref id) => [INFO] [stdout] 1369 + TerminalMode::AppendVariable(id) => [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: dereferencing a tuple pattern where every element takes a reference [INFO] [stdout] --> src/data.rs:1372:17 [INFO] [stdout] | [INFO] [stdout] 1372 | &TerminalMode::InputFile(ref s) => [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] 1372 - &TerminalMode::InputFile(ref s) => [INFO] [stdout] 1372 + TerminalMode::InputFile(s) => [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: dereferencing a tuple pattern where every element takes a reference [INFO] [stdout] --> src/data.rs:1375:17 [INFO] [stdout] | [INFO] [stdout] 1375 | &TerminalMode::InputVar(ref id) => [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] 1375 - &TerminalMode::InputVar(ref id) => [INFO] [stdout] 1375 + TerminalMode::InputVar(id) => [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you don't need to add `&` to all patterns [INFO] [stdout] --> src/numeric.rs:22:9 [INFO] [stdout] | [INFO] [stdout] 22 | / match self { [INFO] [stdout] 23 | | &Number::Integer(i) => state.write_i64(i), [INFO] [stdout] 24 | | &Number::Rational {num, denom} => { [INFO] [stdout] 25 | | state.write_i64(num); [INFO] [stdout] ... | [INFO] [stdout] 33 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stdout] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stdout] | [INFO] [stdout] 22 ~ match *self { [INFO] [stdout] 23 ~ Number::Integer(i) => state.write_i64(i), [INFO] [stdout] 24 ~ Number::Rational {num, denom} => { [INFO] [stdout] 25 | state.write_i64(num); [INFO] [stdout] 26 | state.write_i64(denom); [INFO] [stdout] 27 | }, [INFO] [stdout] 28 ~ Number::Real(f) => state.write_i64(f.round() as i64), [INFO] [stdout] 29 ~ Number::Complex {a,b} => { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: match expression looks like `matches!` macro [INFO] [stdout] --> src/numeric.rs:60:9 [INFO] [stdout] | [INFO] [stdout] 60 | / match self { [INFO] [stdout] 61 | | &Number::Integer(_) => true, [INFO] [stdout] 62 | | _ => false [INFO] [stdout] 63 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_like_matches_macro [INFO] [stdout] help: use `matches!` directly [INFO] [stdout] | [INFO] [stdout] 60 - match self { [INFO] [stdout] 61 - &Number::Integer(_) => true, [INFO] [stdout] 62 - _ => false [INFO] [stdout] 63 - } [INFO] [stdout] 60 + matches!(self, &Number::Integer(_)) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: match expression looks like `matches!` macro [INFO] [stdout] --> src/numeric.rs:68:9 [INFO] [stdout] | [INFO] [stdout] 68 | / match self { [INFO] [stdout] 69 | | &Number::Rational {..} => true, [INFO] [stdout] 70 | | _ => false [INFO] [stdout] 71 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_like_matches_macro [INFO] [stdout] help: use `matches!` directly [INFO] [stdout] | [INFO] [stdout] 68 - match self { [INFO] [stdout] 69 - &Number::Rational {..} => true, [INFO] [stdout] 70 - _ => false [INFO] [stdout] 71 - } [INFO] [stdout] 68 + matches!(self, &Number::Rational {..}) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: match expression looks like `matches!` macro [INFO] [stdout] --> src/numeric.rs:76:9 [INFO] [stdout] | [INFO] [stdout] 76 | / match self { [INFO] [stdout] 77 | | &Number::Real(_) => true, [INFO] [stdout] 78 | | _ => false [INFO] [stdout] 79 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_like_matches_macro [INFO] [stdout] help: use `matches!` directly [INFO] [stdout] | [INFO] [stdout] 76 - match self { [INFO] [stdout] 77 - &Number::Real(_) => true, [INFO] [stdout] 78 - _ => false [INFO] [stdout] 79 - } [INFO] [stdout] 76 + matches!(self, &Number::Real(_)) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: match expression looks like `matches!` macro [INFO] [stdout] --> src/numeric.rs:84:9 [INFO] [stdout] | [INFO] [stdout] 84 | / match self { [INFO] [stdout] 85 | | &Number::Complex {..} => true, [INFO] [stdout] 86 | | _ => false [INFO] [stdout] 87 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_like_matches_macro [INFO] [stdout] help: use `matches!` directly [INFO] [stdout] | [INFO] [stdout] 84 - match self { [INFO] [stdout] 85 - &Number::Complex {..} => true, [INFO] [stdout] 86 - _ => false [INFO] [stdout] 87 - } [INFO] [stdout] 84 + matches!(self, &Number::Complex {..}) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you don't need to add `&` to all patterns [INFO] [stdout] --> src/numeric.rs:126:9 [INFO] [stdout] | [INFO] [stdout] 126 | / match self { [INFO] [stdout] 127 | | &Number::Integer(i) => i, [INFO] [stdout] 128 | | &Number::Rational{num,denom} => num/denom, [INFO] [stdout] 129 | | &Number::Real(f) => f.round() as i64, [INFO] [stdout] 130 | | &Number::Complex{a,..} => a.round() as i64 [INFO] [stdout] 131 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stdout] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stdout] | [INFO] [stdout] 126 ~ match *self { [INFO] [stdout] 127 ~ Number::Integer(i) => i, [INFO] [stdout] 128 ~ Number::Rational{num,denom} => num/denom, [INFO] [stdout] 129 ~ Number::Real(f) => f.round() as i64, [INFO] [stdout] 130 ~ Number::Complex{a,..} => a.round() as i64 [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` can be collapsed into the outer `match` [INFO] [stdout] --> src/numeric.rs:173:17 [INFO] [stdout] | [INFO] [stdout] 173 | / if f.fract() == 0. { [INFO] [stdout] 174 | | *self = Number::Integer(f.trunc() as i64) [INFO] [stdout] 175 | | }, [INFO] [stdout] | |_________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_match [INFO] [stdout] = note: `#[warn(clippy::collapsible_match)]` on by default [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 172 ~ &mut Number::Real(f)f f.fract() == 0. => { [INFO] [stdout] 173 ~ *self = Number::Integer(f.trunc() as i64), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` can be collapsed into the outer `match` [INFO] [stdout] --> src/numeric.rs:177:17 [INFO] [stdout] | [INFO] [stdout] 177 | if b == 0. { *self = Number::Real(a).simplify() }, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_match [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 176 - &mut Number::Complex{a, b} => [INFO] [stdout] 177 - if b == 0. { *self = Number::Real(a).simplify() }, [INFO] [stdout] 176 + &mut Number::Complex{a, b}f b == 0. => { *self = Number::Real(a).simplify(), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you don't need to add `&` to all patterns [INFO] [stdout] --> src/numeric.rs:162:9 [INFO] [stdout] | [INFO] [stdout] 162 | / match self { [INFO] [stdout] 163 | | &mut Number::Rational{ref mut num, ref mut denom} [INFO] [stdout] 164 | | if *num % *denom != 0 => { [INFO] [stdout] 165 | | let g = gcd(*num,*denom); [INFO] [stdout] ... | [INFO] [stdout] 178 | | _ => {} [INFO] [stdout] 179 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stdout] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stdout] | [INFO] [stdout] 162 ~ match *self { [INFO] [stdout] 163 ~ Number::Rational{ref mut num, ref mut denom} [INFO] [stdout] 164 | if *num % *denom != 0 => { [INFO] [stdout] ... [INFO] [stdout] 168 | }, [INFO] [stdout] 169 ~ Number::Rational{num, denom} => { [INFO] [stdout] 170 | *self = Number::Integer(num / denom); [INFO] [stdout] 171 | }, [INFO] [stdout] 172 ~ Number::Real(f) => [INFO] [stdout] 173 | if f.fract() == 0. { [INFO] [stdout] 174 | *self = Number::Integer(f.trunc() as i64) [INFO] [stdout] 175 | }, [INFO] [stdout] 176 ~ Number::Complex{a, b} => [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you don't need to add `&` to all patterns [INFO] [stdout] --> src/numeric.rs:185:9 [INFO] [stdout] | [INFO] [stdout] 185 | / match self { [INFO] [stdout] 186 | | &Number::Integer(n) => write!(f, "{}", n), [INFO] [stdout] 187 | | &Number::Rational{num, denom} => write!(f, "{}/{}", num, denom), [INFO] [stdout] 188 | | &Number::Real(x) => write!(f, "{}", x), [INFO] [stdout] 189 | | &Number::Complex{a,b} => write!(f, "{} + {}i", a, b), [INFO] [stdout] 190 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stdout] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stdout] | [INFO] [stdout] 185 ~ match *self { [INFO] [stdout] 186 ~ Number::Integer(n) => write!(f, "{}", n), [INFO] [stdout] 187 ~ Number::Rational{num, denom} => write!(f, "{}/{}", num, denom), [INFO] [stdout] 188 ~ Number::Real(x) => write!(f, "{}", x), [INFO] [stdout] 189 ~ Number::Complex{a,b} => write!(f, "{} + {}i", a, b), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you don't need to add `&` to all patterns [INFO] [stdout] --> src/numeric.rs:196:9 [INFO] [stdout] | [INFO] [stdout] 196 | / match self { [INFO] [stdout] 197 | | &Number::Integer(n) => write!(f, "{}", n), [INFO] [stdout] 198 | | &Number::Rational{num, denom} => write!(f, "{}/{}", num, denom), [INFO] [stdout] 199 | | &Number::Real(x) => write!(f, "{}", x), [INFO] [stdout] 200 | | &Number::Complex{a,b} => write!(f, "{} + {}i", a, b), [INFO] [stdout] 201 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stdout] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stdout] | [INFO] [stdout] 196 ~ match *self { [INFO] [stdout] 197 ~ Number::Integer(n) => write!(f, "{}", n), [INFO] [stdout] 198 ~ Number::Rational{num, denom} => write!(f, "{}/{}", num, denom), [INFO] [stdout] 199 ~ Number::Real(x) => write!(f, "{}", x), [INFO] [stdout] 200 ~ Number::Complex{a,b} => write!(f, "{} + {}i", a, b), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/numeric.rs:259:37 [INFO] [stdout] | [INFO] [stdout] 259 | let rhs = rhs.cast_to_match(&self); [INFO] [stdout] | ^^^^^ help: change this to: `self` [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/numeric.rs:300:37 [INFO] [stdout] | [INFO] [stdout] 300 | let rhs = rhs.cast_to_match(&self); [INFO] [stdout] | ^^^^^ help: change this to: `self` [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/numeric.rs:344:37 [INFO] [stdout] | [INFO] [stdout] 344 | let rhs = rhs.cast_to_match(&self); [INFO] [stdout] | ^^^^^ help: change this to: `self` [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: you are using an explicit closure for cloning elements [INFO] [stdout] --> src/environment.rs:61:9 [INFO] [stdout] | [INFO] [stdout] 61 | / self.mappings.get(key.as_ref()) [INFO] [stdout] 62 | | .map(|x| x.clone()) [INFO] [stdout] | |_______________________________^ help: consider calling the dedicated `cloned` method: `self.mappings.get(key.as_ref()).cloned()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `.into_iter()` call is equivalent to `.iter()` and will not consume the `HashMap` [INFO] [stdout] --> src/environment.rs:115:15 [INFO] [stdout] | [INFO] [stdout] 115 | (&*l).into_iter() [INFO] [stdout] | ^^^^^^^^^ help: call directly: `iter` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#into_iter_on_ref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: empty string literal in `writeln!` [INFO] [stdout] --> src/docs.rs:134:9 [INFO] [stdout] | [INFO] [stdout] 134 | writeln!(out, "")?; [INFO] [stdout] | ^^^^^^^^^^^^----^ [INFO] [stdout] | | [INFO] [stdout] | help: remove the empty string [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#writeln_empty_string [INFO] [stdout] = note: `#[warn(clippy::writeln_empty_string)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `format!` [INFO] [stdout] --> src/library/core.rs:153:17 [INFO] [stdout] | [INFO] [stdout] 153 | format!("argument to def cannot be converted to a symbol"))); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `.to_string()`: `"argument to def cannot be converted to a symbol".to_string()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stdout] = note: `#[warn(clippy::useless_format)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant closure [INFO] [stdout] --> src/library/core.rs:175:55 [INFO] [stdout] | [INFO] [stdout] 175 | Ok(global().get(ident).unwrap_or_else(|| Value::empty())) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: replace the closure with the associated function itself: `Value::empty` [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: useless use of `format!` [INFO] [stdout] --> src/library/core.rs:178:25 [INFO] [stdout] | [INFO] [stdout] 178 | format!("argument to def cannot be converted to a symbol"))) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `.to_string()`: `"argument to def cannot be converted to a symbol".to_string()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to one [INFO] [stdout] --> src/library/core.rs:229:8 [INFO] [stdout] | [INFO] [stdout] 229 | if args.len() >= 1 { [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!args.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stdout] = note: `#[warn(clippy::len_zero)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `.into_iter()` call is equivalent to `.iter()` and will not consume the `slice` [INFO] [stdout] --> src/library/core.rs:231:39 [INFO] [stdout] | [INFO] [stdout] 231 | for i in args[..args.len()-1].into_iter() { [INFO] [stdout] | ^^^^^^^^^ help: call directly: `iter` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#into_iter_on_ref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/library/core.rs:255:8 [INFO] [stdout] | [INFO] [stdout] 255 | if args.len() == 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `args.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `format!` [INFO] [stdout] --> src/library/core.rs:278:50 [INFO] [stdout] | [INFO] [stdout] 278 | let sym = sym.ok_or(EvalError::TypeError(format!( [INFO] [stdout] | __________________________________________________^ [INFO] [stdout] 279 | | "first argument in let binding cannot be converted to symbol"))); [INFO] [stdout] | |__________________________________________________________________________________^ help: consider using `.to_string()`: `"first argument in let binding cannot be converted to symbol".to_string()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `format!` [INFO] [stdout] --> src/library/core.rs:347:30 [INFO] [stdout] | [INFO] [stdout] 347 | ... format!("pattern element cannot be converted to symbol")))?; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `.to_string()`: `"pattern element cannot be converted to symbol".to_string()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you don't need to add `&` to all patterns [INFO] [stdout] --> src/library/core.rs:384:13 [INFO] [stdout] | [INFO] [stdout] 384 | / match p { [INFO] [stdout] 385 | | &PatternPiece::Required(ref i) => { [INFO] [stdout] 386 | | if idx < arg_len { [INFO] [stdout] 387 | | res.push((i.to_owned(), args[idx].clone())); [INFO] [stdout] ... | [INFO] [stdout] 404 | | }, [INFO] [stdout] 405 | | } [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stdout] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stdout] | [INFO] [stdout] 384 ~ match *p { [INFO] [stdout] 385 ~ PatternPiece::Required(ref i) => { [INFO] [stdout] 386 | if idx < arg_len { [INFO] [stdout] ... [INFO] [stdout] 392 | }, [INFO] [stdout] 393 ~ PatternPiece::Optional(ref i) => { [INFO] [stdout] 394 | res.push((i.to_owned(), [INFO] [stdout] ... [INFO] [stdout] 397 | }, [INFO] [stdout] 398 ~ PatternPiece::Rest(ref i) => { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: dereferencing a tuple pattern where every element takes a reference [INFO] [stdout] --> src/library/core.rs:385:17 [INFO] [stdout] | [INFO] [stdout] 385 | &PatternPiece::Required(ref i) => { [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] 385 - &PatternPiece::Required(ref i) => { [INFO] [stdout] 385 + PatternPiece::Required(i) => { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: dereferencing a tuple pattern where every element takes a reference [INFO] [stdout] --> src/library/core.rs:393:17 [INFO] [stdout] | [INFO] [stdout] 393 | &PatternPiece::Optional(ref i) => { [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] 393 - &PatternPiece::Optional(ref i) => { [INFO] [stdout] 393 + PatternPiece::Optional(i) => { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: dereferencing a tuple pattern where every element takes a reference [INFO] [stdout] --> src/library/core.rs:398:17 [INFO] [stdout] | [INFO] [stdout] 398 | &PatternPiece::Rest(ref i) => { [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] 398 - &PatternPiece::Rest(ref i) => { [INFO] [stdout] 398 + PatternPiece::Rest(i) => { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `if let .. else` expression looks like `matches!` macro [INFO] [stdout] --> src/library/core.rs:435:9 [INFO] [stdout] | [INFO] [stdout] 435 | / if let &ValueData::List(_) = &x.data { false } [INFO] [stdout] 436 | | else { true } [INFO] [stdout] | |_____________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_like_matches_macro [INFO] [stdout] help: use `matches!` directly [INFO] [stdout] | [INFO] [stdout] 435 - if let &ValueData::List(_) = &x.data { false } [INFO] [stdout] 436 - else { true } [INFO] [stdout] 435 + !matches!(&x.data, &ValueData::List(_)) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `iter().cloned().collect()` on a slice to create a `Vec`. Calling `to_vec()` is both faster and more readable [INFO] [stdout] --> src/library/core.rs:446:49 [INFO] [stdout] | [INFO] [stdout] 446 | let vals: Vec<_> = args[cur_arg_idx+1..].iter().cloned().collect(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `.to_vec()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#iter_cloned_collect [INFO] [stdout] = note: `#[warn(clippy::iter_cloned_collect)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: dereferencing a tuple pattern where every element takes a reference [INFO] [stdout] --> src/library/core.rs:475:17 [INFO] [stdout] | [INFO] [stdout] 475 | for &(ref pat, ref body) in variants.iter() { [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] 475 - for &(ref pat, ref body) in variants.iter() { [INFO] [stdout] 475 + for (pat, body) in variants.iter() { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to one [INFO] [stdout] --> src/library/core.rs:512:8 [INFO] [stdout] | [INFO] [stdout] 512 | if args.len() < 1 { [INFO] [stdout] | ^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `args.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `format!` [INFO] [stdout] --> src/library/core.rs:530:13 [INFO] [stdout] | [INFO] [stdout] 530 | format!("argument to def cannot be converted to a symbol"))); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `.to_string()`: `"argument to def cannot be converted to a symbol".to_string()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to one [INFO] [stdout] --> src/library/core.rs:567:8 [INFO] [stdout] | [INFO] [stdout] 567 | if args.len() < 1 { [INFO] [stdout] | ^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `args.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: taken reference of right operand [INFO] [stdout] --> src/library/operators.rs:206:32 [INFO] [stdout] | [INFO] [stdout] 206 | Some(n) => rs.push(n + &one), [INFO] [stdout] | ^^^^---- [INFO] [stdout] | | [INFO] [stdout] | help: use the right value directly: `one` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#op_ref [INFO] [stdout] = note: `#[warn(clippy::op_ref)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/library/operators.rs:295:5 [INFO] [stdout] | [INFO] [stdout] 295 | return Ok(Value::from(true)) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 295 - return Ok(Value::from(true)) [INFO] [stdout] 295 + Ok(Value::from(true)) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `.into_iter()` call is equivalent to `.iter()` and will not consume the `slice` [INFO] [stdout] --> src/library/operators.rs:285:19 [INFO] [stdout] | [INFO] [stdout] 285 | for i in args.into_iter() { [INFO] [stdout] | ^^^^^^^^^ help: call directly: `iter` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#into_iter_on_ref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: dereferencing a tuple pattern where every element takes a reference [INFO] [stdout] --> src/library/operators.rs:289:16 [INFO] [stdout] | [INFO] [stdout] 289 | if let &Some(ref l) = &last { [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] 289 - if let &Some(ref l) = &last { [INFO] [stdout] 289 + if let Some(l) = &last { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` has identical blocks [INFO] [stdout] --> src/library/operators.rs:324:23 [INFO] [stdout] | [INFO] [stdout] 324 | if args.len() < 3 { [INFO] [stdout] | _______________________^ [INFO] [stdout] 325 | | Err(EvalError::Arity { [INFO] [stdout] 326 | | got: args.len(), [INFO] [stdout] 327 | | expected: 3 [INFO] [stdout] 328 | | }) [INFO] [stdout] 329 | | } else if (args.len() - 1) % 2 != 0{ [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] note: same as this [INFO] [stdout] --> src/library/operators.rs:329:40 [INFO] [stdout] | [INFO] [stdout] 329 | } else if (args.len() - 1) % 2 != 0{ [INFO] [stdout] | ________________________________________^ [INFO] [stdout] 330 | | Err(EvalError::Arity { [INFO] [stdout] 331 | | got: args.len(), [INFO] [stdout] 332 | | expected: 3 [INFO] [stdout] 333 | | }) [INFO] [stdout] 334 | | } else { [INFO] [stdout] | |_____^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#if_same_then_else [INFO] [stdout] = note: `#[warn(clippy::if_same_then_else)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of `.is_multiple_of()` [INFO] [stdout] --> src/library/operators.rs:329:15 [INFO] [stdout] | [INFO] [stdout] 329 | } else if (args.len() - 1) % 2 != 0{ [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace with: `!(args.len() - 1).is_multiple_of(2)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_is_multiple_of [INFO] [stdout] = note: `#[warn(clippy::manual_is_multiple_of)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this operation has no effect [INFO] [stdout] --> src/library/operators.rs:337:56 [INFO] [stdout] | [INFO] [stdout] 337 | let mut arg_pairs = Vec::with_capacity(args.len()-1 / 2); [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: consider reducing it to: `args.len()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_op [INFO] [stdout] = note: `#[warn(clippy::identity_op)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: mutable key type [INFO] [stdout] --> src/library/operators.rs:355:17 [INFO] [stdout] | [INFO] [stdout] 355 | let mut r = m.to_owned(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: ... because it contains `ValueHash`, which has interior mutability [INFO] [stdout] = note: ... because it contains `Value`, which has interior mutability [INFO] [stdout] = note: ... because it contains `ValueData`, which has interior mutability [INFO] [stdout] = note: ... because it contains `StreamWrapper`, which has interior mutability [INFO] [stdout] = note: ... because it contains `StreamWrap`, which has interior mutability [INFO] [stdout] = note: ... because it contains `Arc>>`, which has interior mutability [INFO] [stdout] = note: ... because it contains `Mutex>`, which has interior mutability [INFO] [stdout] = note: ... because it contains `Mutex`, which has interior mutability [INFO] [stdout] = note: ... because it contains `Atomic`, which has interior mutability [INFO] [stdout] = note: ... because it contains `UnsafeCell<::Storage>`, which has interior mutability [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#mutable_key_type [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/library/operators.rs:372:8 [INFO] [stdout] | [INFO] [stdout] 372 | if args.len() == 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `args.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> src/library/operators.rs:379:9 [INFO] [stdout] | [INFO] [stdout] 379 | / match &args[0].data { [INFO] [stdout] 380 | | ValueData::List(xs) => { [INFO] [stdout] 381 | | let keys = xs.clone(); [INFO] [stdout] 382 | | return Ok(Value::from(Executable::native(move |_, args| { [INFO] [stdout] ... | [INFO] [stdout] 403 | | _ => {} [INFO] [stdout] 404 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 379 ~ if let ValueData::List(xs) = &args[0].data { [INFO] [stdout] 380 + let keys = xs.clone(); [INFO] [stdout] 381 + return Ok(Value::from(Executable::native(move |_, args| { [INFO] [stdout] 382 + let mut res = Vec::with_capacity(args.len()); [INFO] [stdout] 383 + for structure in args { [INFO] [stdout] 384 + let mut elem = Vec::with_capacity(keys.len()); [INFO] [stdout] 385 + for key in keys.iter() { [INFO] [stdout] 386 + match structure.get_key(&key).wait() { [INFO] [stdout] 387 + Ok(v) => { elem.push(v.unwrap_or_else(|| Value::empty())); } [INFO] [stdout] 388 + Err(e) => { [INFO] [stdout] 389 + return Err(e); [INFO] [stdout] 390 + } [INFO] [stdout] 391 + } [INFO] [stdout] 392 + } [INFO] [stdout] 393 + [INFO] [stdout] 394 + if elem.len() == 1 { res.push(elem.into_iter().next().unwrap()); } [INFO] [stdout] 395 + else { res.push(Value::list(elem)); } [INFO] [stdout] 396 + } [INFO] [stdout] 397 + [INFO] [stdout] 398 + if res.len() == 1 { Ok(res.into_iter().next().unwrap()) } [INFO] [stdout] 399 + else { Ok(Value::list(res)) } [INFO] [stdout] 400 + }))); [INFO] [stdout] 401 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/library/operators.rs:387:53 [INFO] [stdout] | [INFO] [stdout] 387 | ... match structure.get_key(&key).wait() { [INFO] [stdout] | ^^^^ help: change this to: `key` [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/library/operators.rs:388:71 [INFO] [stdout] | [INFO] [stdout] 388 | ... Ok(v) => { elem.push(v.unwrap_or_else(|| Value::empty())); } [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: replace the closure with the associated function itself: `Value::empty` [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/library/operators.rs:412:58 [INFO] [stdout] | [INFO] [stdout] 412 | Ok(v) => { res.push(v.unwrap_or_else(|| Value::empty())); } [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: replace the closure with the associated function itself: `Value::empty` [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/library/operators.rs:428:37 [INFO] [stdout] | [INFO] [stdout] 428 | match structure.get_key(&key).wait() { [INFO] [stdout] | ^^^^ help: change this to: `key` [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/library/operators.rs:429:54 [INFO] [stdout] | [INFO] [stdout] 429 | Ok(v) => { res.push(v.unwrap_or_else(|| Value::empty())); } [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: replace the closure with the associated function itself: `Value::empty` [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: unneeded cloning of iterator items [INFO] [stdout] --> src/library/sequence.rs:133:25 [INFO] [stdout] | [INFO] [stdout] 133 | let iters: Vec<_> = args.iter().cloned().map(|x| x.into_iter()).collect(); [INFO] [stdout] | ^^^^^^^^^^^-------------------------------- [INFO] [stdout] | | [INFO] [stdout] | help: try: `.map(|x| x.into_iter())` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_iter_cloned [INFO] [stdout] = note: `#[warn(clippy::redundant_iter_cloned)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/library/sequence.rs:157:9 [INFO] [stdout] | [INFO] [stdout] 157 | / return Ok(Value::from( [INFO] [stdout] 158 | | Executable::native(move |_, args| { [INFO] [stdout] 159 | | map_impl(&env, &func, args) [INFO] [stdout] 160 | | }))); [INFO] [stdout] | |____________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 157 ~ Ok(Value::from( [INFO] [stdout] 158 + Executable::native(move |_, args| { [INFO] [stdout] 159 + map_impl(&env, &func, args) [INFO] [stdout] 160 ~ }))) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this call to `clone` can be replaced with `std::slice::from_ref` [INFO] [stdout] --> src/library/sequence.rs:187:61 [INFO] [stdout] | [INFO] [stdout] 187 | let cond = self.func.execute(&self.env, &[r.clone()]).wait() [INFO] [stdout] | ^^^^^^^^^^^^ help: try: `std::slice::from_ref(&r)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cloned_ref_to_slice_refs [INFO] [stdout] = note: `#[warn(clippy::cloned_ref_to_slice_refs)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/library/sequence.rs:219:9 [INFO] [stdout] | [INFO] [stdout] 219 | / return Ok(Value::from(Executable::native(move |_, args| { [INFO] [stdout] 220 | | filter_impl(&env, &func, args) }))); [INFO] [stdout] | |_______________________________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 219 ~ Ok(Value::from(Executable::native(move |_, args| { [INFO] [stdout] 220 ~ filter_impl(&env, &func, args) }))) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded cloning of iterator items [INFO] [stdout] --> src/library/sequence.rs:234:29 [INFO] [stdout] | [INFO] [stdout] 234 | let mut iters: Vec<_> = args.iter().cloned().map(|x| x.into_iter()).collect(); [INFO] [stdout] | ^^^^^^^^^^^-------------------------------- [INFO] [stdout] | | [INFO] [stdout] | help: try: `.map(|x| x.into_iter())` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_iter_cloned [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `iter().cloned().collect()` on a slice to create a `Vec`. Calling `to_vec()` is both faster and more readable [INFO] [stdout] --> src/library/sequence.rs:435:29 [INFO] [stdout] | [INFO] [stdout] 435 | items: args[1..].iter().cloned().collect() [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `.to_vec()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#iter_cloned_collect [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `iter().cloned().collect()` on a slice to create a `Vec`. Calling `to_vec()` is both faster and more readable [INFO] [stdout] --> src/library/sequence.rs:469:29 [INFO] [stdout] | [INFO] [stdout] 469 | items: args[1..].iter().cloned().collect() [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `.to_vec()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#iter_cloned_collect [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this loop could be written as a `for` loop [INFO] [stdout] --> src/library/filesystem.rs:29:9 [INFO] [stdout] | [INFO] [stdout] 29 | while let Some(x) = self.walker.next() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `for x in self.walker.by_ref()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#while_let_on_iterator [INFO] [stdout] = note: `#[warn(clippy::while_let_on_iterator)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant closure [INFO] [stdout] --> src/library/builtins.rs:48:14 [INFO] [stdout] | [INFO] [stdout] 48 | .map(|s| Value::str(s)) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: replace the closure with the associated function itself: `Value::str` [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: the method `evaluate` doesn't need a mutable reference [INFO] [stdout] --> src/library/mod.rs:25:20 [INFO] [stdout] | [INFO] [stdout] 25 | m.evaluate(&mut env).wait() [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_mut_passed [INFO] [stdout] = note: `#[warn(clippy::unnecessary_mut_passed)]` on by default [INFO] [stdout] help: remove this `mut` [INFO] [stdout] | [INFO] [stdout] 25 - m.evaluate(&mut env).wait() [INFO] [stdout] 25 + m.evaluate(&env).wait() [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: large size difference between variants [INFO] [stdout] --> src/reader.rs:25:1 [INFO] [stdout] | [INFO] [stdout] 25 | / enum ParseStackElement { [INFO] [stdout] 26 | | List(Vec), [INFO] [stdout] | | ---------------- the second-largest variant contains at least 24 bytes [INFO] [stdout] 27 | | Map(HashMap, Option), [INFO] [stdout] | | ------------------------------------------------- the largest variant contains at least 256 bytes [INFO] [stdout] 28 | | Quote, [INFO] [stdout] 29 | | Lambda, [INFO] [stdout] 30 | | } [INFO] [stdout] | |_^ the entire enum is at least 256 bytes [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#large_enum_variant [INFO] [stdout] = note: `#[warn(clippy::large_enum_variant)]` on by default [INFO] [stdout] help: consider boxing the large fields or introducing indirection in some other way to reduce the total size of the enum [INFO] [stdout] | [INFO] [stdout] 27 - Map(HashMap, Option), [INFO] [stdout] 27 + Map(HashMap, Box>), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods with the following characteristics: (`to_*` and `self` type is not `Copy`) usually take `self` by reference [INFO] [stdout] --> src/reader.rs:41:20 [INFO] [stdout] | [INFO] [stdout] 41 | pub fn to_eval(self) -> EvalError { [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = help: consider choosing a less ambiguous name [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#wrong_self_convention [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you don't need to add `&` to all patterns [INFO] [stdout] --> src/reader.rs:54:9 [INFO] [stdout] | [INFO] [stdout] 54 | / match self { [INFO] [stdout] 55 | | &ParseError::Evaluation(ref e) => write!(f, "Evaluation error: {}", e), [INFO] [stdout] 56 | | &ParseError::UnexpectedEOF => write!(f, "Unexpected end of file"), [INFO] [stdout] 57 | | &ParseError::Syntax(ref e) => write!(f, "Syntax error: {}", e), [INFO] [stdout] 58 | | &ParseError::Stream(ref e) => write!(f, "Stream error: {}", e), [INFO] [stdout] 59 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stdout] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stdout] | [INFO] [stdout] 54 ~ match *self { [INFO] [stdout] 55 ~ ParseError::Evaluation(ref e) => write!(f, "Evaluation error: {}", e), [INFO] [stdout] 56 ~ ParseError::UnexpectedEOF => write!(f, "Unexpected end of file"), [INFO] [stdout] 57 ~ ParseError::Syntax(ref e) => write!(f, "Syntax error: {}", e), [INFO] [stdout] 58 ~ ParseError::Stream(ref e) => write!(f, "Stream error: {}", e), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: dereferencing a tuple pattern where every element takes a reference [INFO] [stdout] --> src/reader.rs:55:13 [INFO] [stdout] | [INFO] [stdout] 55 | &ParseError::Evaluation(ref e) => write!(f, "Evaluation error: {}", e), [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] 55 - &ParseError::Evaluation(ref e) => write!(f, "Evaluation error: {}", e), [INFO] [stdout] 55 + ParseError::Evaluation(e) => write!(f, "Evaluation error: {}", e), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: dereferencing a tuple pattern where every element takes a reference [INFO] [stdout] --> src/reader.rs:57:13 [INFO] [stdout] | [INFO] [stdout] 57 | &ParseError::Syntax(ref e) => write!(f, "Syntax error: {}", e), [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] 57 - &ParseError::Syntax(ref e) => write!(f, "Syntax error: {}", e), [INFO] [stdout] 57 + ParseError::Syntax(e) => write!(f, "Syntax error: {}", e), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: dereferencing a tuple pattern where every element takes a reference [INFO] [stdout] --> src/reader.rs:58:13 [INFO] [stdout] | [INFO] [stdout] 58 | &ParseError::Stream(ref e) => write!(f, "Stream error: {}", e), [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] 58 - &ParseError::Stream(ref e) => write!(f, "Stream error: {}", e), [INFO] [stdout] 58 + ParseError::Stream(e) => write!(f, "Stream error: {}", e), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you don't need to add `&` to all patterns [INFO] [stdout] --> src/reader.rs:65:9 [INFO] [stdout] | [INFO] [stdout] 65 | / match self { [INFO] [stdout] 66 | | &ParseError::Evaluation(_) => "evaluation error", [INFO] [stdout] 67 | | &ParseError::UnexpectedEOF => "unexpected end of file", [INFO] [stdout] 68 | | &ParseError::Syntax(_) => "syntax error", [INFO] [stdout] 69 | | &ParseError::Stream(_) => "stream operation failed", [INFO] [stdout] 70 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stdout] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stdout] | [INFO] [stdout] 65 ~ match *self { [INFO] [stdout] 66 ~ ParseError::Evaluation(_) => "evaluation error", [INFO] [stdout] 67 ~ ParseError::UnexpectedEOF => "unexpected end of file", [INFO] [stdout] 68 ~ ParseError::Syntax(_) => "syntax error", [INFO] [stdout] 69 ~ ParseError::Stream(_) => "stream operation failed", [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/reader.rs:406:9 [INFO] [stdout] | [INFO] [stdout] 406 | return Err(ParseError::Syntax("cannot read number")); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 406 - return Err(ParseError::Syntax("cannot read number")); [INFO] [stdout] 406 + Err(ParseError::Syntax("cannot read number")) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: name `IPM` contains a capitalized acronym [INFO] [stdout] --> src/reader.rs:181:9 [INFO] [stdout] | [INFO] [stdout] 181 | IPM, // initial +/- [INFO] [stdout] | ^^^ help: consider making the acronym lowercase, except the initial letter: `Ipm` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#upper_case_acronyms [INFO] [stdout] = note: `#[warn(clippy::upper_case_acronyms)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: name `EXP` contains a capitalized acronym [INFO] [stdout] --> src/reader.rs:186:9 [INFO] [stdout] | [INFO] [stdout] 186 | EXP, // exponent (e|E) [INFO] [stdout] | ^^^ help: consider making the acronym lowercase, except the initial letter: `Exp` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#upper_case_acronyms [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: name `EPM` contains a capitalized acronym [INFO] [stdout] --> src/reader.rs:187:9 [INFO] [stdout] | [INFO] [stdout] 187 | EPM, // exponent +/- [INFO] [stdout] | ^^^ help: consider making the acronym lowercase, except the initial letter: `Epm` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#upper_case_acronyms [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: name `EDIG` contains a capitalized acronym [INFO] [stdout] --> src/reader.rs:188:9 [INFO] [stdout] | [INFO] [stdout] 188 | EDIG, // exponent digits [INFO] [stdout] | ^^^^ help: consider making the acronym lowercase, except the initial letter: `Edig` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#upper_case_acronyms [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: name `RAT` contains a capitalized acronym [INFO] [stdout] --> src/reader.rs:189:9 [INFO] [stdout] | [INFO] [stdout] 189 | RAT, // rational division [INFO] [stdout] | ^^^ help: consider making the acronym lowercase, except the initial letter: `Rat` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#upper_case_acronyms [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: name `CPM` contains a capitalized acronym [INFO] [stdout] --> src/reader.rs:191:9 [INFO] [stdout] | [INFO] [stdout] 191 | CPM, // +/- of a complex number [INFO] [stdout] | ^^^ help: consider making the acronym lowercase, except the initial letter: `Cpm` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#upper_case_acronyms [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: name `CDOT` contains a capitalized acronym [INFO] [stdout] --> src/reader.rs:193:9 [INFO] [stdout] | [INFO] [stdout] 193 | CDOT, // second dot of a complex number [INFO] [stdout] | ^^^^ help: consider making the acronym lowercase, except the initial letter: `Cdot` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#upper_case_acronyms [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: name `CEPM` contains a capitalized acronym [INFO] [stdout] --> src/reader.rs:196:9 [INFO] [stdout] | [INFO] [stdout] 196 | CEPM, // second exp +/- of a complex number [INFO] [stdout] | ^^^^ help: consider making the acronym lowercase, except the initial letter: `Cepm` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#upper_case_acronyms [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: name `CEDIG` contains a capitalized acronym [INFO] [stdout] --> src/reader.rs:197:9 [INFO] [stdout] | [INFO] [stdout] 197 | CEDIG, // second exp digits of a complex number [INFO] [stdout] | ^^^^^ help: consider making the acronym lowercase, except the initial letter: `Cedig` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#upper_case_acronyms [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: name `CPX` contains a capitalized acronym [INFO] [stdout] --> src/reader.rs:198:9 [INFO] [stdout] | [INFO] [stdout] 198 | CPX, // complex end [INFO] [stdout] | ^^^ help: consider making the acronym lowercase, except the initial letter: `Cpx` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#upper_case_acronyms [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: name `HEX` contains a capitalized acronym [INFO] [stdout] --> src/reader.rs:200:9 [INFO] [stdout] | [INFO] [stdout] 200 | HEX,BIN, // hex/binary data [INFO] [stdout] | ^^^ help: consider making the acronym lowercase, except the initial letter: `Hex` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#upper_case_acronyms [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: name `BIN` contains a capitalized acronym [INFO] [stdout] --> src/reader.rs:200:13 [INFO] [stdout] | [INFO] [stdout] 200 | HEX,BIN, // hex/binary data [INFO] [stdout] | ^^^ help: consider making the acronym lowercase, except the initial letter: `Bin` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#upper_case_acronyms [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of `char::is_digit` with literal radix of 10 [INFO] [stdout] --> src/reader.rs:216:25 [INFO] [stdout] | [INFO] [stdout] 216 | else if c.is_digit(10) { s = St::NUM0; } [INFO] [stdout] | ^^^^^^^^^^^^^^ help: try: `c.is_ascii_digit()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#is_digit_ascii_radix [INFO] [stdout] = note: `#[warn(clippy::is_digit_ascii_radix)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of `char::is_digit` with literal radix of 10 [INFO] [stdout] --> src/reader.rs:223:25 [INFO] [stdout] | [INFO] [stdout] 223 | else if c.is_digit(10) { s = St::NUM0; } [INFO] [stdout] | ^^^^^^^^^^^^^^ help: try: `c.is_ascii_digit()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#is_digit_ascii_radix [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of `char::is_digit` with literal radix of 10 [INFO] [stdout] --> src/reader.rs:236:27 [INFO] [stdout] | [INFO] [stdout] 236 | } else if c.is_digit(10) { s = St::NUM0; } [INFO] [stdout] | ^^^^^^^^^^^^^^ help: try: `c.is_ascii_digit()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#is_digit_ascii_radix [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of `char::is_digit` with literal radix of 10 [INFO] [stdout] --> src/reader.rs:243:25 [INFO] [stdout] | [INFO] [stdout] 243 | else if c.is_digit(10) {} // continue [INFO] [stdout] | ^^^^^^^^^^^^^^ help: try: `c.is_ascii_digit()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#is_digit_ascii_radix [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of `char::is_digit` with literal radix of 10 [INFO] [stdout] --> src/reader.rs:252:20 [INFO] [stdout] | [INFO] [stdout] 252 | if c.is_digit(10) { s = St::NUM1; } [INFO] [stdout] | ^^^^^^^^^^^^^^ help: try: `c.is_ascii_digit()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#is_digit_ascii_radix [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of `char::is_digit` with literal radix of 10 [INFO] [stdout] --> src/reader.rs:257:20 [INFO] [stdout] | [INFO] [stdout] 257 | if c.is_digit(10) {} // continue [INFO] [stdout] | ^^^^^^^^^^^^^^ help: try: `c.is_ascii_digit()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#is_digit_ascii_radix [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of `char::is_digit` with literal radix of 10 [INFO] [stdout] --> src/reader.rs:266:20 [INFO] [stdout] | [INFO] [stdout] 266 | if c.is_digit(10) { s = St::EDIG; } [INFO] [stdout] | ^^^^^^^^^^^^^^ help: try: `c.is_ascii_digit()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#is_digit_ascii_radix [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of `char::is_digit` with literal radix of 10 [INFO] [stdout] --> src/reader.rs:272:20 [INFO] [stdout] | [INFO] [stdout] 272 | if c.is_digit(10) { s = St::EDIG; } [INFO] [stdout] | ^^^^^^^^^^^^^^ help: try: `c.is_ascii_digit()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#is_digit_ascii_radix [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of `char::is_digit` with literal radix of 10 [INFO] [stdout] --> src/reader.rs:277:20 [INFO] [stdout] | [INFO] [stdout] 277 | if c.is_digit(10) {} // continue [INFO] [stdout] | ^^^^^^^^^^^^^^ help: try: `c.is_ascii_digit()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#is_digit_ascii_radix [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of `char::is_digit` with literal radix of 10 [INFO] [stdout] --> src/reader.rs:285:20 [INFO] [stdout] | [INFO] [stdout] 285 | if c.is_digit(10) { s = St::RNUM1; } [INFO] [stdout] | ^^^^^^^^^^^^^^ help: try: `c.is_ascii_digit()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#is_digit_ascii_radix [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of `char::is_digit` with literal radix of 10 [INFO] [stdout] --> src/reader.rs:290:20 [INFO] [stdout] | [INFO] [stdout] 290 | if c.is_digit(10) {} // continue [INFO] [stdout] | ^^^^^^^^^^^^^^ help: try: `c.is_ascii_digit()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#is_digit_ascii_radix [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of `char::is_digit` with literal radix of 10 [INFO] [stdout] --> src/reader.rs:295:20 [INFO] [stdout] | [INFO] [stdout] 295 | if c.is_digit(10) { s = St::CNUM1; } [INFO] [stdout] | ^^^^^^^^^^^^^^ help: try: `c.is_ascii_digit()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#is_digit_ascii_radix [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of `char::is_digit` with literal radix of 10 [INFO] [stdout] --> src/reader.rs:301:20 [INFO] [stdout] | [INFO] [stdout] 301 | if c.is_digit(10) {} [INFO] [stdout] | ^^^^^^^^^^^^^^ help: try: `c.is_ascii_digit()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#is_digit_ascii_radix [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of `char::is_digit` with literal radix of 10 [INFO] [stdout] --> src/reader.rs:309:20 [INFO] [stdout] | [INFO] [stdout] 309 | if c.is_digit(10) { s = St::CNUM2; } [INFO] [stdout] | ^^^^^^^^^^^^^^ help: try: `c.is_ascii_digit()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#is_digit_ascii_radix [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of `char::is_digit` with literal radix of 10 [INFO] [stdout] --> src/reader.rs:314:20 [INFO] [stdout] | [INFO] [stdout] 314 | if c.is_digit(10) {} [INFO] [stdout] | ^^^^^^^^^^^^^^ help: try: `c.is_ascii_digit()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#is_digit_ascii_radix [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of `char::is_digit` with literal radix of 10 [INFO] [stdout] --> src/reader.rs:321:20 [INFO] [stdout] | [INFO] [stdout] 321 | if c.is_digit(10) { s = St::CEDIG; } [INFO] [stdout] | ^^^^^^^^^^^^^^ help: try: `c.is_ascii_digit()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#is_digit_ascii_radix [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of `char::is_digit` with literal radix of 10 [INFO] [stdout] --> src/reader.rs:327:20 [INFO] [stdout] | [INFO] [stdout] 327 | if c.is_digit(10) { s = St::CEDIG; } [INFO] [stdout] | ^^^^^^^^^^^^^^ help: try: `c.is_ascii_digit()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#is_digit_ascii_radix [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of `char::is_digit` with literal radix of 10 [INFO] [stdout] --> src/reader.rs:332:20 [INFO] [stdout] | [INFO] [stdout] 332 | if c.is_digit(10) {} // continue [INFO] [stdout] | ^^^^^^^^^^^^^^ help: try: `c.is_ascii_digit()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#is_digit_ascii_radix [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of `char::is_digit` with literal radix of 16 [INFO] [stdout] --> src/reader.rs:346:20 [INFO] [stdout] | [INFO] [stdout] 346 | if c.is_digit(16) { s = St::HEX; } [INFO] [stdout] | ^^^^^^^^^^^^^^ help: try: `c.is_ascii_hexdigit()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#is_digit_ascii_radix [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of `char::is_digit` with literal radix of 16 [INFO] [stdout] --> src/reader.rs:351:20 [INFO] [stdout] | [INFO] [stdout] 351 | if c.is_digit(16) {} // continue [INFO] [stdout] | ^^^^^^^^^^^^^^ help: try: `c.is_ascii_hexdigit()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#is_digit_ascii_radix [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this call to `from_str_radix` can be replaced with a call to `str::parse` [INFO] [stdout] --> src/reader.rs:369:32 [INFO] [stdout] | [INFO] [stdout] 369 | Ok(Number::int(i64::from_str_radix(&data, 10).unwrap())), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `data.parse::()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#from_str_radix_10 [INFO] [stdout] = note: `#[warn(clippy::from_str_radix_10)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this call to `from_str_radix` can be replaced with a call to `str::parse` [INFO] [stdout] --> src/reader.rs:392:25 [INFO] [stdout] | [INFO] [stdout] 392 | let a = i64::from_str_radix(&data[..split_idx], 10).unwrap(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `data[..split_idx].parse::()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#from_str_radix_10 [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this call to `from_str_radix` can be replaced with a call to `str::parse` [INFO] [stdout] --> src/reader.rs:393:25 [INFO] [stdout] | [INFO] [stdout] 393 | let b = i64::from_str_radix(&data[split_idx+1..], 10).unwrap(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `data[split_idx+1..].parse::()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#from_str_radix_10 [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the function `read_number` doesn't need a mutable reference [INFO] [stdout] --> src/reader.rs:413:23 [INFO] [stdout] | [INFO] [stdout] 413 | match read_number(&mut ReadWrapper::new(&mut Cursor::new(x))) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_mut_passed [INFO] [stdout] help: remove this `mut` [INFO] [stdout] | [INFO] [stdout] 413 - match read_number(&mut ReadWrapper::new(&mut Cursor::new(x))) { [INFO] [stdout] 413 + match read_number(&ReadWrapper::new(&mut Cursor::new(x))) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/reader.rs:510:27 [INFO] [stdout] | [INFO] [stdout] 510 | if !c.map(|x| x.is_whitespace() && [INFO] [stdout] | ___________________________^ [INFO] [stdout] 511 | | !(x == '\n' && !conf.newlines)) [INFO] [stdout] | |________________________________________________________^ help: try: `(conf.newlines || x != '\n') && x.is_whitespace()` [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: this boolean expression can be simplified [INFO] [stdout] --> src/reader.rs:511:27 [INFO] [stdout] | [INFO] [stdout] 511 | !(x == '\n' && !conf.newlines)) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `x != '\n' || conf.newlines` [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: mutable key type [INFO] [stdout] --> src/reader.rs:569:17 [INFO] [stdout] | [INFO] [stdout] 569 | / let h = [INFO] [stdout] 570 | | if let Some(ParseStackElement::Map(h, None)) = stack.pop() {h} [INFO] [stdout] 571 | | else { return ParseOutput::err( [INFO] [stdout] 572 | | ParseContext::Other, [INFO] [stdout] 573 | | ParseError::Syntax("unexpected '}'")) }; [INFO] [stdout] | |____________________________________________________________________^ [INFO] [stdout] | [INFO] [stdout] = note: ... because it contains `ValueHash`, which has interior mutability [INFO] [stdout] = note: ... because it contains `Value`, which has interior mutability [INFO] [stdout] = note: ... because it contains `ValueData`, which has interior mutability [INFO] [stdout] = note: ... because it contains `StreamWrapper`, which has interior mutability [INFO] [stdout] = note: ... because it contains `StreamWrap`, which has interior mutability [INFO] [stdout] = note: ... because it contains `Arc>>`, which has interior mutability [INFO] [stdout] = note: ... because it contains `Mutex>`, which has interior mutability [INFO] [stdout] = note: ... because it contains `Mutex`, which has interior mutability [INFO] [stdout] = note: ... because it contains `Atomic`, which has interior mutability [INFO] [stdout] = note: ... because it contains `UnsafeCell<::Storage>`, which has interior mutability [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#mutable_key_type [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you should use the `starts_with` method [INFO] [stdout] --> src/reader.rs:673:27 [INFO] [stdout] | [INFO] [stdout] 673 | id.as_ref().chars().next() == Some('$') { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: like this: `id.as_ref().starts_with('$')` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#chars_next_cmp [INFO] [stdout] = note: `#[warn(clippy::chars_next_cmp)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `skip(..).next()` on an iterator [INFO] [stdout] --> src/reader.rs:674:48 [INFO] [stdout] | [INFO] [stdout] 674 | let c = id.as_ref().chars().skip(1).next().unwrap(); [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: use `nth` instead: `.nth(1)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#iter_skip_next [INFO] [stdout] = note: `#[warn(clippy::iter_skip_next)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of `char::is_digit` with literal radix of 10 [INFO] [stdout] --> src/reader.rs:675:24 [INFO] [stdout] | [INFO] [stdout] 675 | if c.is_digit(10) && in_lambda { [INFO] [stdout] | ^^^^^^^^^^^^^^ help: try: `c.is_ascii_digit()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#is_digit_ascii_radix [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual `RangeInclusive::contains` implementation [INFO] [stdout] --> src/reader.rs:689:47 [INFO] [stdout] | [INFO] [stdout] 689 | } else if c == '+' || c == '-' || (c >= '0' && c <= '9') || c == '.' { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ help: use: `('0'..='9').contains(&c)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_range_contains [INFO] [stdout] = note: `#[warn(clippy::manual_range_contains)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `format!` [INFO] [stdout] --> src/reader.rs:716:50 [INFO] [stdout] | [INFO] [stdout] 716 | Value::from(Identifier::from(format!("|>"))) [INFO] [stdout] | ^^^^^^^^^^^^^ help: consider using `.to_string()`: `"|>".to_string()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `format!` [INFO] [stdout] --> src/reader.rs:732:54 [INFO] [stdout] | [INFO] [stdout] 732 | Value::from(Identifier::from(format!("|"))) [INFO] [stdout] | ^^^^^^^^^^^^ help: consider using `.to_string()`: `"|".to_string()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless conversion to the same type: `std::ops::Range` [INFO] [stdout] --> src/reader.rs:804:29 [INFO] [stdout] | [INFO] [stdout] 804 | ... (0..lambda_args).into_iter() [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `.into_iter()`: `(0..lambda_args)` [INFO] [stdout] | [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] [INFO] [stdout] [INFO] [stdout] warning: useless conversion to the same type: `std::ops::Range` [INFO] [stdout] --> src/reader.rs:856:33 [INFO] [stdout] | [INFO] [stdout] 856 | ... (0..lambda_args).into_iter() [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `.into_iter()`: `(0..lambda_args)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_conversion [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: name `PRS` contains a capitalized acronym [INFO] [stdout] --> src/reader.rs:920:10 [INFO] [stdout] | [INFO] [stdout] 920 | enum PRS { [INFO] [stdout] | ^^^ help: consider making the acronym lowercase, except the initial letter: `Prs` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#upper_case_acronyms [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to move all elements into a new `Vec` [INFO] [stdout] --> src/reader.rs:974:44 [INFO] [stdout] | [INFO] [stdout] 974 | xform: Transformer(cur_component.drain(..).collect()), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `mem::take`: `std::mem::take(&mut cur_component)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#drain_collect [INFO] [stdout] = note: `#[warn(clippy::drain_collect)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to move all elements into a new `Vec` [INFO] [stdout] --> src/reader.rs:1004:48 [INFO] [stdout] | [INFO] [stdout] 1004 | ... xform: Transformer(cur_component.drain(..).collect()), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `mem::take`: `std::mem::take(&mut cur_component)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#drain_collect [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/stream/poly.rs:107:57 [INFO] [stdout] | [INFO] [stdout] 107 | let line = PolyLine::new_from(new_span, &self, self.opts.clone()); [INFO] [stdout] | ^^^^^ help: change this to: `self` [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: using `clone` on type `StreamOptions` which implements the `Copy` trait [INFO] [stdout] --> src/stream/poly.rs:107:64 [INFO] [stdout] | [INFO] [stdout] 107 | let line = PolyLine::new_from(new_span, &self, self.opts.clone()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `self.opts` [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: unneeded `return` statement [INFO] [stdout] --> src/stream/poly.rs:210:55 [INFO] [stdout] | [INFO] [stdout] 210 | if modified_alt.len() != final_fields.len() { return; } // fail on dupes [INFO] [stdout] | ^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 210 - if modified_alt.len() != final_fields.len() { return; } // fail on dupes [INFO] [stdout] 210 + if modified_alt.len() != final_fields.len() {} // fail on dupes [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: used consecutive `str::replace` call [INFO] [stdout] --> src/stream/poly.rs:191:20 [INFO] [stdout] | [INFO] [stdout] 191 | *f = f.replace('_', "-").replace(' ', "-"); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace with: `replace(['_', ' '], "-")` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_str_replace [INFO] [stdout] = note: `#[warn(clippy::collapsible_str_replace)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `filter(..).next()` on an `Iterator`. This is more succinctly expressed by calling `.find(..)` instead [INFO] [stdout] --> src/stream/poly.rs:573:27 [INFO] [stdout] | [INFO] [stdout] 573 | let idx = r.iter() [INFO] [stdout] | ___________________________^ [INFO] [stdout] 574 | | .enumerate() [INFO] [stdout] 575 | | .filter(|(_,x)| *x == s.as_ref()) [INFO] [stdout] 576 | | .next() [INFO] [stdout] | |________________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#filter_next [INFO] [stdout] = note: `#[warn(clippy::filter_next)]` on by default [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 573 ~ let idx = r.iter() [INFO] [stdout] 574 + .enumerate().find(|(_,x)| *x == s.as_ref()) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you don't need to add `&` to all patterns [INFO] [stdout] --> src/stream/mod.rs:139:9 [INFO] [stdout] | [INFO] [stdout] 139 | / match self { [INFO] [stdout] 140 | | &StreamWrap::R(_) => (true,false), [INFO] [stdout] 141 | | &StreamWrap::W(_) => (false,true), [INFO] [stdout] 142 | | &StreamWrap::RW(_) => (true,true), [INFO] [stdout] 143 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stdout] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stdout] | [INFO] [stdout] 139 ~ match *self { [INFO] [stdout] 140 ~ StreamWrap::R(_) => (true,false), [INFO] [stdout] 141 ~ StreamWrap::W(_) => (false,true), [INFO] [stdout] 142 ~ StreamWrap::RW(_) => (true,true), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you don't need to add `&` to all patterns [INFO] [stdout] --> src/stream/mod.rs:158:9 [INFO] [stdout] | [INFO] [stdout] 158 | / match self { [INFO] [stdout] 159 | | &StreamError::IO(ref e) => write!(f, "I/O error: {}", e), [INFO] [stdout] 160 | | &StreamError::ModeDenied => [INFO] [stdout] 161 | | write!(f, "Stream does not support requested operation"), [INFO] [stdout] 162 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stdout] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stdout] | [INFO] [stdout] 158 ~ match *self { [INFO] [stdout] 159 ~ StreamError::IO(ref e) => write!(f, "I/O error: {}", e), [INFO] [stdout] 160 ~ StreamError::ModeDenied => [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: dereferencing a tuple pattern where every element takes a reference [INFO] [stdout] --> src/stream/mod.rs:159:13 [INFO] [stdout] | [INFO] [stdout] 159 | &StreamError::IO(ref e) => write!(f, "I/O error: {}", e), [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] 159 - &StreamError::IO(ref e) => write!(f, "I/O error: {}", e), [INFO] [stdout] 159 + StreamError::IO(e) => write!(f, "I/O error: {}", e), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you don't need to add `&` to all patterns [INFO] [stdout] --> src/stream/mod.rs:168:9 [INFO] [stdout] | [INFO] [stdout] 168 | / match self { [INFO] [stdout] 169 | | &StreamError::IO(_) => "I/O error", [INFO] [stdout] 170 | | &StreamError::ModeDenied => "unsupported stream operation", [INFO] [stdout] 171 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stdout] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stdout] | [INFO] [stdout] 168 ~ match *self { [INFO] [stdout] 169 ~ StreamError::IO(_) => "I/O error", [INFO] [stdout] 170 ~ StreamError::ModeDenied => "unsupported stream operation", [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: dereferencing a tuple pattern where every element takes a reference [INFO] [stdout] --> src/stream/mod.rs:184:16 [INFO] [stdout] | [INFO] [stdout] 184 | if let &StreamError::IO(ref e) = self { [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] 184 - if let &StreamError::IO(ref e) = self { [INFO] [stdout] 184 + if let StreamError::IO(e) = self { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: all variants have the same prefix: `From` [INFO] [stdout] --> src/span.rs:114:1 [INFO] [stdout] | [INFO] [stdout] 114 | / pub enum ReadSource { [INFO] [stdout] 115 | | FromFile { [INFO] [stdout] 116 | | f: File, [INFO] [stdout] 117 | | offs: usize [INFO] [stdout] ... | [INFO] [stdout] 127 | | } [INFO] [stdout] | |_^ [INFO] [stdout] | [INFO] [stdout] = help: remove the prefixes and use full paths to the variants instead of glob imports [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#enum_variant_names [INFO] [stdout] = note: `#[warn(clippy::enum_variant_names)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you don't need to add `&` to all patterns [INFO] [stdout] --> src/span.rs:150:9 [INFO] [stdout] | [INFO] [stdout] 150 | / match self { [INFO] [stdout] 151 | | &mut ReadSource::FromFile {ref mut f, ref mut offs} => [INFO] [stdout] 152 | | StreamChunk::new_from_read(f, offs), [INFO] [stdout] 153 | | &mut ReadSource::FromChannel {ref mut f, ref mut offs} => [INFO] [stdout] ... | [INFO] [stdout] 156 | | StreamChunk::new_from_read(r, offs) [INFO] [stdout] 157 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stdout] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stdout] | [INFO] [stdout] 150 ~ match *self { [INFO] [stdout] 151 ~ ReadSource::FromFile {ref mut f, ref mut offs} => [INFO] [stdout] 152 | StreamChunk::new_from_read(f, offs), [INFO] [stdout] 153 ~ ReadSource::FromChannel {ref mut f, ref mut offs} => [INFO] [stdout] 154 | StreamChunk::new_from_read(f, offs), [INFO] [stdout] 155 ~ ReadSource::FromReadBox {ref mut r, ref mut offs} => [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you don't need to add `&` to all patterns [INFO] [stdout] --> src/span.rs:162:9 [INFO] [stdout] | [INFO] [stdout] 162 | / match self { [INFO] [stdout] 163 | | &mut ReadSource::FromFile {ref mut f, ref mut offs} => [INFO] [stdout] 164 | | Chunk::new_from_read(f, offs), [INFO] [stdout] 165 | | &mut ReadSource::FromChannel {ref mut f, ref mut offs} => [INFO] [stdout] ... | [INFO] [stdout] 168 | | Chunk::new_from_read(r, offs) [INFO] [stdout] 169 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stdout] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stdout] | [INFO] [stdout] 162 ~ match *self { [INFO] [stdout] 163 ~ ReadSource::FromFile {ref mut f, ref mut offs} => [INFO] [stdout] 164 | Chunk::new_from_read(f, offs), [INFO] [stdout] 165 ~ ReadSource::FromChannel {ref mut f, ref mut offs} => [INFO] [stdout] 166 | Chunk::new_from_read(f, offs), [INFO] [stdout] 167 ~ ReadSource::FromReadBox {ref mut r, ref mut offs} => [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: match expression looks like `matches!` macro [INFO] [stdout] --> src/span.rs:413:9 [INFO] [stdout] | [INFO] [stdout] 413 | / match (self.start, self.end) { [INFO] [stdout] 414 | | (StreamPoint::Past(a),StreamPoint::Past(b)) if a == b => true, [INFO] [stdout] 415 | | _ => false [INFO] [stdout] 416 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_like_matches_macro [INFO] [stdout] help: use `matches!` directly [INFO] [stdout] | [INFO] [stdout] 413 - match (self.start, self.end) { [INFO] [stdout] 414 - (StreamPoint::Past(a),StreamPoint::Past(b)) if a == b => true, [INFO] [stdout] 415 - _ => false [INFO] [stdout] 416 - } [INFO] [stdout] 413 + matches!((self.start, self.end), (StreamPoint::Past(a),StreamPoint::Past(b)) if a == b) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you don't need to add `&` to both the expression and the patterns [INFO] [stdout] --> src/span.rs:464:9 [INFO] [stdout] | [INFO] [stdout] 464 | / match &self.end { [INFO] [stdout] 465 | | &StreamPoint::Future => false, [INFO] [stdout] 466 | | &StreamPoint::Past(_) => true, [INFO] [stdout] 467 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 464 ~ match self.end { [INFO] [stdout] 465 ~ StreamPoint::Future => false, [INFO] [stdout] 466 ~ StreamPoint::Past(_) => true, [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: dereferencing a tuple pattern where every element takes a reference [INFO] [stdout] --> src/span.rs:699:16 [INFO] [stdout] | [INFO] [stdout] 699 | if let &Some(ref c) = &*c { [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] 699 - if let &Some(ref c) = &*c { [INFO] [stdout] 699 + if let Some(c) = &*c { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/span.rs:723:12 [INFO] [stdout] | [INFO] [stdout] 723 | if chunk.data.len() == 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `chunk.data.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref which would be done by auto-deref [INFO] [stdout] --> src/span.rs:753:43 [INFO] [stdout] | [INFO] [stdout] 753 | self.head = self.head.advance(&mut *source)?; [INFO] [stdout] | ^^^^^^^^^^^^ help: try: `&mut source` [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: you don't need to add `&` to all patterns [INFO] [stdout] --> src/editor/basic.rs:20:9 [INFO] [stdout] | [INFO] [stdout] 20 | / match key { [INFO] [stdout] 21 | | &Key::Left => { [INFO] [stdout] 22 | | buf.move_cursor(-1); [INFO] [stdout] 23 | | true [INFO] [stdout] ... | [INFO] [stdout] 79 | | _ => false [INFO] [stdout] 80 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stdout] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stdout] | [INFO] [stdout] 20 ~ match *key { [INFO] [stdout] 21 ~ Key::Left => { [INFO] [stdout] 22 | buf.move_cursor(-1); [INFO] [stdout] 23 | true [INFO] [stdout] 24 | }, [INFO] [stdout] 25 ~ Key::Right => { [INFO] [stdout] 26 | buf.move_cursor(1); [INFO] [stdout] 27 | true [INFO] [stdout] 28 | }, [INFO] [stdout] 29 ~ Key::Up => { [INFO] [stdout] 30 | let h_len = history::db().len(); [INFO] [stdout] ... [INFO] [stdout] 41 | }, [INFO] [stdout] 42 ~ Key::Down => { [INFO] [stdout] 43 | if let Some(i) = self.history_idx { [INFO] [stdout] ... [INFO] [stdout] 57 | }, [INFO] [stdout] 58 ~ Key::Home => { [INFO] [stdout] 59 | buf.set_cursor(0); [INFO] [stdout] 60 | true [INFO] [stdout] 61 | }, [INFO] [stdout] 62 ~ Key::End => { [INFO] [stdout] 63 | let end = buf.view().len(); [INFO] [stdout] ... [INFO] [stdout] 66 | }, [INFO] [stdout] 67 ~ Key::Delete => { [INFO] [stdout] 68 | buf.delete_forward(1); [INFO] [stdout] 69 | true [INFO] [stdout] 70 | }, [INFO] [stdout] 71 ~ Key::Backspace => { [INFO] [stdout] 72 | buf.delete(1); [INFO] [stdout] 73 | true [INFO] [stdout] 74 | }, [INFO] [stdout] 75 ~ Key::Char(c) => { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this lifetime isn't used in the impl [INFO] [stdout] --> src/editor/mod.rs:16:6 [INFO] [stdout] | [INFO] [stdout] 16 | impl<'a> EditingDiscipline for Box { [INFO] [stdout] | ^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#extra_unused_lifetimes [INFO] [stdout] = note: `#[warn(clippy::extra_unused_lifetimes)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: returning the result of a `let` binding from a block [INFO] [stdout] --> src/editor/mod.rs:262:9 [INFO] [stdout] | [INFO] [stdout] 260 | let res = String::from_iter(drain_iter); [INFO] [stdout] | ---------------------------------------- unnecessary `let` binding [INFO] [stdout] 261 | [INFO] [stdout] 262 | res [INFO] [stdout] | ^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_and_return [INFO] [stdout] = note: `#[warn(clippy::let_and_return)]` on by default [INFO] [stdout] help: return the expression directly [INFO] [stdout] | [INFO] [stdout] 260 ~ [INFO] [stdout] 261 | [INFO] [stdout] 262 ~ String::from_iter(drain_iter) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `.into_iter()` call is equivalent to `.iter()` and will not consume the `slice` [INFO] [stdout] --> src/input/render.rs:152:42 [INFO] [stdout] | [INFO] [stdout] 152 | let to_show = self.set.entries().into_iter() [INFO] [stdout] | ^^^^^^^^^ help: call directly: `iter` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#into_iter_on_ref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods with the following characteristics: (`to_*` and `self` type is not `Copy`) usually take `self` by reference [INFO] [stdout] --> src/input/render.rs:250:20 [INFO] [stdout] | [INFO] [stdout] 250 | pub fn to_line(self) -> (Self, io::Result<()>) { [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = help: consider choosing a less ambiguous name [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#wrong_self_convention [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods with the following characteristics: (`to_*` and `self` type is not `Copy`) usually take `self` by reference [INFO] [stdout] --> src/input/render.rs:263:24 [INFO] [stdout] | [INFO] [stdout] 263 | pub fn to_complete(self, set: &CompletionSet) -> Result { [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = help: consider choosing a less ambiguous name [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#wrong_self_convention [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the `Err`-variant returned from this function is very large [INFO] [stdout] --> src/input/render.rs:263:54 [INFO] [stdout] | [INFO] [stdout] 263 | pub fn to_complete(self, set: &CompletionSet) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the `Err`-variant is at least 172 bytes [INFO] [stdout] | [INFO] [stdout] = help: try reducing the size of `(input::render::Renderer, std::io::Error)`, for example by boxing large elements or replacing it with `Box<(input::render::Renderer, std::io::Error)>` [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#result_large_err [INFO] [stdout] = note: `#[warn(clippy::result_large_err)]` 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/input/keybind.rs:33:32 [INFO] [stdout] | [INFO] [stdout] 33 | if let Some(f) = w.get(&k) { [INFO] [stdout] | ^^ help: change this to: `k` [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/input/keybind.rs:46:18 [INFO] [stdout] | [INFO] [stdout] 46 | w.remove(&k); [INFO] [stdout] | ^^ help: change this to: `k` [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: the following explicit lifetimes could be elided: 'a [INFO] [stdout] --> src/input/keybind.rs:58:17 [INFO] [stdout] | [INFO] [stdout] 58 | pub fn bind<'a, F>(&'a self, key: event::Key, f: F) -> ScopedBinding [INFO] [stdout] | ^^ ^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stdout] help: elide the lifetimes [INFO] [stdout] | [INFO] [stdout] 58 - pub fn bind<'a, F>(&'a self, key: event::Key, f: F) -> ScopedBinding [INFO] [stdout] 58 + pub fn bind(&self, key: event::Key, f: F) -> ScopedBinding [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: large size difference between variants [INFO] [stdout] --> src/input/mod.rs:37:1 [INFO] [stdout] | [INFO] [stdout] 37 | / enum EditorState { [INFO] [stdout] 38 | | / Completion { [INFO] [stdout] 39 | | | set: CompletionSet, [INFO] [stdout] 40 | | | render: render::CompleteRenderer [INFO] [stdout] 41 | | | }, [INFO] [stdout] | | |_____- the largest variant contains at least 268 bytes [INFO] [stdout] 42 | | / Editing { [INFO] [stdout] 43 | | | render: render::LineRenderer [INFO] [stdout] 44 | | | }, [INFO] [stdout] | | |_____- the second-largest variant contains at least 60 bytes [INFO] [stdout] 45 | | } [INFO] [stdout] | |___^ the entire enum is at least 268 bytes [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#large_enum_variant [INFO] [stdout] help: consider boxing the large fields or introducing indirection in some other way to reduce the total size of the enum [INFO] [stdout] | [INFO] [stdout] 40 - render: render::CompleteRenderer [INFO] [stdout] 40 + render: Box> [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/input/mod.rs:203:38 [INFO] [stdout] | [INFO] [stdout] 203 | self.editor.buf_mut().insert(&to_insert); [INFO] [stdout] | ^^^^^^^^^^ help: change this to: `to_insert` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args [INFO] [stdout] = note: `#[warn(clippy::needless_borrows_for_generic_args)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you don't need to add `&` to all patterns [INFO] [stdout] --> src/input/mod.rs:245:9 [INFO] [stdout] | [INFO] [stdout] 245 | / match self.mode.as_mut().unwrap() { [INFO] [stdout] 246 | | &mut EditorState::Editing {ref mut render} => [INFO] [stdout] 247 | | render.render(&self.editor), [INFO] [stdout] 248 | | &mut EditorState::Completion {ref mut render, ref mut set} => { [INFO] [stdout] ... | [INFO] [stdout] 252 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stdout] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stdout] | [INFO] [stdout] 245 ~ match *self.mode.as_mut().unwrap() { [INFO] [stdout] 246 ~ EditorState::Editing {ref mut render} => [INFO] [stdout] 247 | render.render(&self.editor), [INFO] [stdout] 248 ~ EditorState::Completion {ref mut render, ref mut set} => { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/input/mod.rs:249:31 [INFO] [stdout] | [INFO] [stdout] 249 | render.update(&set); [INFO] [stdout] | ^^^^ help: change this to: `set` [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 `if` can be collapsed into the outer `match` [INFO] [stdout] --> src/input/mod.rs:285:21 [INFO] [stdout] | [INFO] [stdout] 285 | / if self.editor.buf().at_end() { [INFO] [stdout] 286 | | // finish the completion [INFO] [stdout] 287 | | action = Some(if let Some(marked) = set.marked() { [INFO] [stdout] 288 | | consume = true; [INFO] [stdout] ... | [INFO] [stdout] 293 | | }); [INFO] [stdout] 294 | | } [INFO] [stdout] | |_____________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_match [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 284 ~ event::Key::Right [INFO] [stdout] 285 ~ if self.editor.buf().at_end() => { [INFO] [stdout] 286 | // finish the completion [INFO] [stdout] ... [INFO] [stdout] 293 | }); [INFO] [stdout] 294 ~ }, [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you don't need to add `&` to all patterns [INFO] [stdout] --> src/input/mod.rs:418:9 [INFO] [stdout] | [INFO] [stdout] 418 | / match &mut self.term { [INFO] [stdout] 419 | | &mut InternalTerminal::Basic(ref mut t) => t.read(), [INFO] [stdout] 420 | | &mut InternalTerminal::Interactive(ref mut t) => t.read(), [INFO] [stdout] 421 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stdout] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stdout] | [INFO] [stdout] 418 ~ match *&mut self.term { [INFO] [stdout] 419 ~ InternalTerminal::Basic(ref mut t) => t.read(), [INFO] [stdout] 420 ~ InternalTerminal::Interactive(ref mut t) => t.read(), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods called `as_*` usually take `self` by reference or `self` by mutable reference [INFO] [stdout] --> src/terminal.rs:172:19 [INFO] [stdout] | [INFO] [stdout] 172 | pub fn as_raw(self) -> FdGuard { [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = help: consider choosing a less ambiguous name [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#wrong_self_convention [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods called `as_*` usually take `self` by reference or `self` by mutable reference [INFO] [stdout] --> src/terminal.rs:191:19 [INFO] [stdout] | [INFO] [stdout] 191 | pub fn as_raw(self) -> FdGuard { [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = help: consider choosing a less ambiguous name [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#wrong_self_convention [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods called `as_*` usually take `self` by reference or `self` by mutable reference [INFO] [stdout] --> src/terminal.rs:214:19 [INFO] [stdout] | [INFO] [stdout] 214 | pub fn as_raw(self) -> FdGuard { [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = help: consider choosing a less ambiguous name [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#wrong_self_convention [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you don't need to add `&` to all patterns [INFO] [stdout] --> src/completion.rs:23:9 [INFO] [stdout] | [INFO] [stdout] 23 | / match self { [INFO] [stdout] 24 | | &EntryType::SystemCommand => Value::atom("command"), [INFO] [stdout] 25 | | &EntryType::FunctionBinding => Value::atom("function"), [INFO] [stdout] 26 | | &EntryType::VariableBinding => Value::atom("variable"), [INFO] [stdout] 27 | | &EntryType::OtherForm => Value::atom("other"), [INFO] [stdout] 28 | | &EntryType::File => Value::atom("file"), [INFO] [stdout] 29 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stdout] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stdout] | [INFO] [stdout] 23 ~ match *self { [INFO] [stdout] 24 ~ EntryType::SystemCommand => Value::atom("command"), [INFO] [stdout] 25 ~ EntryType::FunctionBinding => Value::atom("function"), [INFO] [stdout] 26 ~ EntryType::VariableBinding => Value::atom("variable"), [INFO] [stdout] 27 ~ EntryType::OtherForm => Value::atom("other"), [INFO] [stdout] 28 ~ EntryType::File => Value::atom("file"), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `format!` [INFO] [stdout] --> src/completion.rs:81:45 [INFO] [stdout] | [INFO] [stdout] 81 | .ok_or(EvalError::TypeError(format!( [INFO] [stdout] | _____________________________________________^ [INFO] [stdout] 82 | | "missing required key :type")))?; [INFO] [stdout] | |_________________________________________________________^ help: consider using `.to_string()`: `"missing required key :type".to_string()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `format!` [INFO] [stdout] --> src/completion.rs:84:45 [INFO] [stdout] | [INFO] [stdout] 84 | .ok_or(EvalError::TypeError(format!( [INFO] [stdout] | _____________________________________________^ [INFO] [stdout] 85 | | "missing required key :text")))?; [INFO] [stdout] | |_________________________________________________________^ help: consider using `.to_string()`: `"missing required key :text".to_string()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `format!` [INFO] [stdout] --> src/completion.rs:87:45 [INFO] [stdout] | [INFO] [stdout] 87 | .ok_or(EvalError::TypeError(format!( [INFO] [stdout] | _____________________________________________^ [INFO] [stdout] 88 | | "missing required key :docs")))?; [INFO] [stdout] | |_________________________________________________________^ help: consider using `.to_string()`: `"missing required key :docs".to_string()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `format!` [INFO] [stdout] --> src/completion.rs:90:45 [INFO] [stdout] | [INFO] [stdout] 90 | .ok_or(EvalError::TypeError(format!( [INFO] [stdout] | _____________________________________________^ [INFO] [stdout] 91 | | "missing required key :weight")))?; [INFO] [stdout] | |___________________________________________________________^ help: consider using `.to_string()`: `"missing required key :weight".to_string()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `format!` [INFO] [stdout] --> src/completion.rs:110:38 [INFO] [stdout] | [INFO] [stdout] 110 | Err(EvalError::TypeError(format!( [INFO] [stdout] | ______________________________________^ [INFO] [stdout] 111 | | "cannot read non-map value as entry"))) [INFO] [stdout] | |_____________________________________________________________^ help: consider using `.to_string()`: `"cannot read non-map value as entry".to_string()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/completion.rs:171:17 [INFO] [stdout] | [INFO] [stdout] 171 | (entries.contains(&EntryType::VariableBinding) == !is_func) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `entries.contains(&EntryType::VariableBinding) != is_func` [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: the borrowed expression implements the required traits [INFO] [stdout] --> src/completion.rs:225:39 [INFO] [stdout] | [INFO] [stdout] 225 | let results = environment::run_fn(&"shell/generate-completions", [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `"shell/generate-completions"` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/completion.rs:293:33 [INFO] [stdout] | [INFO] [stdout] 293 | CompletionSet::complete(&seed, HashSet::from_iter(s)) [INFO] [stdout] | ^^^^^ help: change this to: `seed` [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: you don't need to add `&` to all patterns [INFO] [stdout] --> src/jobs.rs:62:12 [INFO] [stdout] | [INFO] [stdout] 62 | Ok(match self { [INFO] [stdout] | ____________^ [INFO] [stdout] 63 | | &IoChannel::Inherited => { [INFO] [stdout] 64 | | (inherit, None) [INFO] [stdout] 65 | | }, [INFO] [stdout] ... | [INFO] [stdout] 74 | | }) [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stdout] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stdout] | [INFO] [stdout] 62 ~ Ok(match *self { [INFO] [stdout] 63 ~ IoChannel::Inherited => { [INFO] [stdout] 64 | (inherit, None) [INFO] [stdout] 65 | }, [INFO] [stdout] 66 ~ IoChannel::Pipe => { [INFO] [stdout] 67 | let (r,w) = unistd::pipe2(fcntl::O_CLOEXEC)?; [INFO] [stdout] ... [INFO] [stdout] 70 | }, [INFO] [stdout] 71 ~ IoChannel::Specific(fd) => { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded unit return type [INFO] [stdout] --> src/jobs.rs:327:29 [INFO] [stdout] | [INFO] [stdout] 327 | pub fn start ()+Sync+Send+'static>(f: F) -> Self { [INFO] [stdout] | ^^^^^^ help: remove the `-> ()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_unit [INFO] [stdout] = note: `#[warn(clippy::unused_unit)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant closure [INFO] [stdout] --> src/jobs.rs:328:31 [INFO] [stdout] | [INFO] [stdout] 328 | let h = thread::spawn(move || f()); [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] [INFO] [stdout] [INFO] [stdout] warning: you don't need to add `&` to all patterns [INFO] [stdout] --> src/jobs.rs:365:9 [INFO] [stdout] | [INFO] [stdout] 365 | / match self { [INFO] [stdout] 366 | | &mut Task::OS(ref mut p) => p.suspend(), [INFO] [stdout] 367 | | &mut Task::Internal(ref mut e) => e.suspend(), [INFO] [stdout] 368 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stdout] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stdout] | [INFO] [stdout] 365 ~ match *self { [INFO] [stdout] 366 ~ Task::OS(ref mut p) => p.suspend(), [INFO] [stdout] 367 ~ Task::Internal(ref mut e) => e.suspend(), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you don't need to add `&` to all patterns [INFO] [stdout] --> src/jobs.rs:373:9 [INFO] [stdout] | [INFO] [stdout] 373 | / match self { [INFO] [stdout] 374 | | &mut Task::OS(ref mut p) => p.resume(), [INFO] [stdout] 375 | | &mut Task::Internal(ref mut e) => e.resume(), [INFO] [stdout] 376 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stdout] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stdout] | [INFO] [stdout] 373 ~ match *self { [INFO] [stdout] 374 ~ Task::OS(ref mut p) => p.resume(), [INFO] [stdout] 375 ~ Task::Internal(ref mut e) => e.resume(), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you don't need to add `&` to all patterns [INFO] [stdout] --> src/jobs.rs:381:9 [INFO] [stdout] | [INFO] [stdout] 381 | / match self { [INFO] [stdout] 382 | | &mut Task::OS(ref mut p) => p.wait(), [INFO] [stdout] 383 | | &mut Task::Internal(ref mut e) => e.wait(), [INFO] [stdout] 384 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stdout] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stdout] | [INFO] [stdout] 381 ~ match *self { [INFO] [stdout] 382 ~ Task::OS(ref mut p) => p.wait(), [INFO] [stdout] 383 ~ Task::Internal(ref mut e) => e.wait(), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `Option` which implements the `Copy` trait [INFO] [stdout] --> src/jobs.rs:405:41 [INFO] [stdout] | [INFO] [stdout] 405 | let p = cmd.launch_in_pgrp(Some(self.pgroup.clone()))?; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `self.pgroup` [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: dereferencing a tuple pattern where every element takes a reference [INFO] [stdout] --> src/jobs.rs:411:16 [INFO] [stdout] | [INFO] [stdout] 411 | if let &Task::OS(ref p) = self.tasks.last().unwrap() { Ok(p) } [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] 411 - if let &Task::OS(ref p) = self.tasks.last().unwrap() { Ok(p) } [INFO] [stdout] 411 + if let Task::OS(p) = self.tasks.last().unwrap() { Ok(p) } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded unit return type [INFO] [stdout] --> src/jobs.rs:416:29 [INFO] [stdout] | [INFO] [stdout] 416 | pub fn spawn ()+Sync+Send+'static>(&mut self, f: F) -> &ShellTask { [INFO] [stdout] | ^^^^^^ help: remove the `-> ()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_unit [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: dereferencing a tuple pattern where every element takes a reference [INFO] [stdout] --> src/jobs.rs:420:16 [INFO] [stdout] | [INFO] [stdout] 420 | if let &Task::Internal(ref p) = self.tasks.last().unwrap() { p } [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] 420 - if let &Task::Internal(ref p) = self.tasks.last().unwrap() { p } [INFO] [stdout] 420 + if let Task::Internal(p) = self.tasks.last().unwrap() { p } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: dereferencing a tuple pattern where every element takes a reference [INFO] [stdout] --> src/jobs.rs:426:27 [INFO] [stdout] | [INFO] [stdout] 426 | let pgrp = if let &Some(ref p) = &self.pgroup { p } [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] 426 - let pgrp = if let &Some(ref p) = &self.pgroup { p } [INFO] [stdout] 426 + let pgrp = if let Some(p) = &self.pgroup { p } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stdout] --> src/evaluate.rs:39:12 [INFO] [stdout] | [INFO] [stdout] 39 | Native(Arc Eval + Send + Sync>), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stdout] = note: `#[warn(clippy::type_complexity)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stdout] --> src/evaluate.rs:44:30 [INFO] [stdout] | [INFO] [stdout] 44 | Interpreted(Environment, Arc Eval + Send + Sync>), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: dereferencing a tuple pattern where every element takes a reference [INFO] [stdout] --> src/evaluate.rs:57:14 [INFO] [stdout] | [INFO] [stdout] 57 | (&Executable::Native(ref a), &Executable::Native(ref b)) [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] 57 - (&Executable::Native(ref a), &Executable::Native(ref b)) [INFO] [stdout] 57 + (Executable::Native(a), &Executable::Native(ref b)) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: dereferencing a tuple pattern where every element takes a reference [INFO] [stdout] --> src/evaluate.rs:57:42 [INFO] [stdout] | [INFO] [stdout] 57 | (&Executable::Native(ref a), &Executable::Native(ref b)) [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] 57 - (&Executable::Native(ref a), &Executable::Native(ref b)) [INFO] [stdout] 57 + (&Executable::Native(ref a), Executable::Native(b)) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: dereferencing a tuple pattern where every element takes a reference [INFO] [stdout] --> src/evaluate.rs:59:14 [INFO] [stdout] | [INFO] [stdout] 59 | (&Executable::Interpreted(_, ref a), [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] 59 - (&Executable::Interpreted(_, ref a), [INFO] [stdout] 59 + (Executable::Interpreted(_, a), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: dereferencing a tuple pattern where every element takes a reference [INFO] [stdout] --> src/evaluate.rs:60:14 [INFO] [stdout] | [INFO] [stdout] 60 | &Executable::Interpreted(_, ref b)) => Arc::ptr_eq(a,b), [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] 60 - &Executable::Interpreted(_, ref b)) => Arc::ptr_eq(a,b), [INFO] [stdout] 60 + Executable::Interpreted(_, b)) => Arc::ptr_eq(a,b), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you don't need to add `&` to all patterns [INFO] [stdout] --> src/evaluate.rs:74:9 [INFO] [stdout] | [INFO] [stdout] 74 | / match self { [INFO] [stdout] 75 | | &Executable::Native(ref f) => { [INFO] [stdout] 76 | | let vals: Result, EvalError> = [INFO] [stdout] 77 | | args.iter().map(|x| x.evaluate(lexical).wait()).collect(); [INFO] [stdout] ... | [INFO] [stdout] 92 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stdout] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stdout] | [INFO] [stdout] 74 ~ match *self { [INFO] [stdout] 75 ~ Executable::Native(ref f) => { [INFO] [stdout] 76 | let vals: Result, EvalError> = [INFO] [stdout] ... [INFO] [stdout] 82 | }, [INFO] [stdout] 83 ~ Executable::CoreFn(ref f) => f(lexical, args), [INFO] [stdout] 84 ~ Executable::Interpreted(ref env, ref f) => { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: dereferencing a tuple pattern where every element takes a reference [INFO] [stdout] --> src/evaluate.rs:75:13 [INFO] [stdout] | [INFO] [stdout] 75 | &Executable::Native(ref f) => { [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] 75 - &Executable::Native(ref f) => { [INFO] [stdout] 75 + Executable::Native(f) => { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: dereferencing a tuple pattern where every element takes a reference [INFO] [stdout] --> src/evaluate.rs:83:13 [INFO] [stdout] | [INFO] [stdout] 83 | &Executable::CoreFn(ref f) => f(lexical, args), [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] 83 - &Executable::CoreFn(ref f) => f(lexical, args), [INFO] [stdout] 83 + Executable::CoreFn(f) => f(lexical, args), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: dereferencing a tuple pattern where every element takes a reference [INFO] [stdout] --> src/evaluate.rs:84:13 [INFO] [stdout] | [INFO] [stdout] 84 | &Executable::Interpreted(ref env, ref f) => { [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] 84 - &Executable::Interpreted(ref env, ref f) => { [INFO] [stdout] 84 + Executable::Interpreted(env, f) => { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `futures` [INFO] [stdout] --> src/reader.rs:7:5 [INFO] [stdout] | [INFO] [stdout] 7 | use futures::*; [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: match expression looks like `matches!` macro [INFO] [stdout] --> src/planner.rs:28:9 [INFO] [stdout] | [INFO] [stdout] 28 | / match (self, input) { [INFO] [stdout] 29 | | (&PipeType::Stream, &PipeType::Stream) => true, [INFO] [stdout] 30 | | (&PipeType::Object, &PipeType::Object) => true, [INFO] [stdout] 31 | | (&PipeType::Either, &PipeType::Stream) => true, [INFO] [stdout] ... | [INFO] [stdout] 34 | | _ => false, [INFO] [stdout] 35 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_like_matches_macro [INFO] [stdout] help: use `matches!` directly [INFO] [stdout] | [INFO] [stdout] 28 - match (self, input) { [INFO] [stdout] 29 - (&PipeType::Stream, &PipeType::Stream) => true, [INFO] [stdout] 30 - (&PipeType::Object, &PipeType::Object) => true, [INFO] [stdout] 31 - (&PipeType::Either, &PipeType::Stream) => true, [INFO] [stdout] 32 - (&PipeType::Either, &PipeType::Object) => true, [INFO] [stdout] 33 - (_, &PipeType::Either) => true, [INFO] [stdout] 34 - _ => false, [INFO] [stdout] 35 - } [INFO] [stdout] 28 + matches!((self, input), (&PipeType::Stream, &PipeType::Stream) | (&PipeType::Object, &PipeType::Object) | (&PipeType::Either, &PipeType::Stream) | (&PipeType::Either, &PipeType::Object) | (_, &PipeType::Either)) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you don't need to add `&` to all patterns [INFO] [stdout] --> src/planner.rs:51:9 [INFO] [stdout] | [INFO] [stdout] 51 | / match self { [INFO] [stdout] 52 | | &AdapterType::StreamToPoly => (PipeType::Stream, PipeType::Object), [INFO] [stdout] 53 | | &AdapterType::StreamToString=> (PipeType::Stream, PipeType::Object), [INFO] [stdout] 54 | | &AdapterType::PolyToStream => (PipeType::Object, PipeType::Stream), [INFO] [stdout] 55 | | &AdapterType::StreamDelim(_)=> (PipeType::Stream, PipeType::Object), [INFO] [stdout] 56 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stdout] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stdout] | [INFO] [stdout] 51 ~ match *self { [INFO] [stdout] 52 ~ AdapterType::StreamToPoly => (PipeType::Stream, PipeType::Object), [INFO] [stdout] 53 ~ AdapterType::StreamToString=> (PipeType::Stream, PipeType::Object), [INFO] [stdout] 54 ~ AdapterType::PolyToStream => (PipeType::Object, PipeType::Stream), [INFO] [stdout] 55 ~ AdapterType::StreamDelim(_)=> (PipeType::Stream, PipeType::Object), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you don't need to add `&` to all patterns [INFO] [stdout] --> src/planner.rs:94:9 [INFO] [stdout] | [INFO] [stdout] 94 | / match self { [INFO] [stdout] 95 | | &PlanElement::Expression(_) => (PipeType::Object, PipeType::Object), [INFO] [stdout] 96 | | &PlanElement::Command{..} => (PipeType::Stream, PipeType::Stream), [INFO] [stdout] 97 | | &PlanElement::Adapter(ref a) => a.io_types(), [INFO] [stdout] ... | [INFO] [stdout] 105 | | &PlanElement::AppendVar(_) => (PipeType::Object, PipeType::Cap), [INFO] [stdout] 106 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stdout] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stdout] | [INFO] [stdout] 94 ~ match *self { [INFO] [stdout] 95 ~ PlanElement::Expression(_) => (PipeType::Object, PipeType::Object), [INFO] [stdout] 96 ~ PlanElement::Command{..} => (PipeType::Stream, PipeType::Stream), [INFO] [stdout] 97 ~ PlanElement::Adapter(ref a) => a.io_types(), [INFO] [stdout] 98 ~ PlanElement::FromFile(_) => (PipeType::Cap, PipeType::Stream), [INFO] [stdout] 99 ~ PlanElement::FromVar(_) => (PipeType::Cap, PipeType::Object), [INFO] [stdout] 100 ~ PlanElement::Stdin => (PipeType::Cap, PipeType::Stream), [INFO] [stdout] 101 ~ PlanElement::Stdout => (PipeType::Either, PipeType::Cap), [INFO] [stdout] 102 ~ PlanElement::ToFile(_) => (PipeType::Stream, PipeType::Cap), [INFO] [stdout] 103 ~ PlanElement::AppendFile(_) => (PipeType::Stream, PipeType::Cap), [INFO] [stdout] 104 ~ PlanElement::IntoVar(_) => (PipeType::Object, PipeType::Cap), [INFO] [stdout] 105 ~ PlanElement::AppendVar(_) => (PipeType::Object, PipeType::Cap), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: dereferencing a tuple pattern where every element takes a reference [INFO] [stdout] --> src/planner.rs:97:13 [INFO] [stdout] | [INFO] [stdout] 97 | &PlanElement::Adapter(ref a) => a.io_types(), [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] 97 - &PlanElement::Adapter(ref a) => a.io_types(), [INFO] [stdout] 97 + PlanElement::Adapter(a) => a.io_types(), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/planner.rs:169:13 [INFO] [stdout] | [INFO] [stdout] 169 | return Err(PlanningError::NotFound); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 169 - return Err(PlanningError::NotFound); [INFO] [stdout] 169 + Err(PlanningError::NotFound) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/planner.rs:172:13 [INFO] [stdout] | [INFO] [stdout] 172 | return Err(PlanningError::NotFound); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 172 - return Err(PlanningError::NotFound); [INFO] [stdout] 172 + Err(PlanningError::NotFound) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/planner.rs:170:19 [INFO] [stdout] | [INFO] [stdout] 170 | } else if opts.len() == 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `opts.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/planner.rs:266:16 [INFO] [stdout] | [INFO] [stdout] 266 | if !self.input.is_none() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ help: try: `self.input.is_some()` [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: called `unwrap` on `eval_group` after checking its variant with `is_some` [INFO] [stdout] --> src/planner.rs:453:25 [INFO] [stdout] | [INFO] [stdout] 450 | if eval_group.is_some() { [INFO] [stdout] | ----------------------- help: try: `if let Some() = &mut eval_group` [INFO] [stdout] ... [INFO] [stdout] 453 | eval_group.as_mut().unwrap().2 = EvalOutputType::from(t); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_unwrap [INFO] [stdout] = note: `#[warn(clippy::unnecessary_unwrap)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you don't need to add `&` to both the expression and the patterns [INFO] [stdout] --> src/planner.rs:385:49 [INFO] [stdout] | [INFO] [stdout] 385 | ... .map(|x| match &x.data { [INFO] [stdout] | ________________________________^ [INFO] [stdout] 386 | | ... // don't expand fns or macros [INFO] [stdout] 387 | | ... &ValueData::Function(_) => [INFO] [stdout] 388 | | ... x.name.clone() [INFO] [stdout] ... | [INFO] [stdout] 394 | | ... .unwrap_or(x), [INFO] [stdout] 395 | | ... _ => x }) [INFO] [stdout] | |__________________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 385 ~ .map(|x| match x.data { [INFO] [stdout] 386 | // don't expand fns or macros [INFO] [stdout] 387 ~ ValueData::Function(_) => [INFO] [stdout] 388 | x.name.clone() [INFO] [stdout] 389 | .map(|x| Value::from(x)) [INFO] [stdout] 390 | .unwrap_or(x), [INFO] [stdout] 391 ~ ValueData::Macro(_) => [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `r` [INFO] [stdout] --> src/data.rs:108:31 [INFO] [stdout] | [INFO] [stdout] 108 | fn into_raw_stream(&self, r: bool, w: bool) -> Eval { [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_r` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `w` [INFO] [stdout] --> src/data.rs:108:40 [INFO] [stdout] | [INFO] [stdout] 108 | fn into_raw_stream(&self, r: bool, w: bool) -> Eval { [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_w` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant closure [INFO] [stdout] --> src/planner.rs:389:54 [INFO] [stdout] | [INFO] [stdout] 389 | ... .map(|x| Value::from(x)) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: replace the closure with the associated function itself: `Value::from` [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/planner.rs:393:54 [INFO] [stdout] | [INFO] [stdout] 393 | ... .map(|x| Value::from(x)) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: replace the closure with the associated function itself: `Value::from` [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: you don't need to add `&` to both the expression and the patterns [INFO] [stdout] --> src/planner.rs:396:49 [INFO] [stdout] | [INFO] [stdout] 396 | ... .map(|x| match &x.data { [INFO] [stdout] | ________________________________^ [INFO] [stdout] 397 | | ... // glob expansion for symbol/string [INFO] [stdout] 398 | | ... &ValueData::Symbol(_) => [INFO] [stdout] 399 | | ... run_fn("fs/glob", &[x.clone()]) [INFO] [stdout] ... | [INFO] [stdout] 411 | | ... x.clone()} else {l}), [INFO] [stdout] 412 | | ... _ => Ok(x) }) [INFO] [stdout] | |______________________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 396 ~ .map(|x| match x.data { [INFO] [stdout] 397 | // glob expansion for symbol/string [INFO] [stdout] 398 ~ ValueData::Symbol(_) => [INFO] [stdout] 399 | run_fn("fs/glob", &[x.clone()]) [INFO] [stdout] ... [INFO] [stdout] 404 | x.clone()} else {l}), [INFO] [stdout] 405 ~ ValueData::Str(_) => [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this call to `clone` can be replaced with `std::slice::from_ref` [INFO] [stdout] --> src/planner.rs:399:66 [INFO] [stdout] | [INFO] [stdout] 399 | ... run_fn("fs/glob", &[x.clone()]) [INFO] [stdout] | ^^^^^^^^^^^^ help: try: `std::slice::from_ref(&x)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cloned_ref_to_slice_refs [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/planner.rs:402:59 [INFO] [stdout] | [INFO] [stdout] 402 | ... .map(|l| if l.into_seq().wait() [INFO] [stdout] | ___________________________________^ [INFO] [stdout] 403 | | ... .unwrap().len() == 0 { [INFO] [stdout] | |_______________________________________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stdout] help: using `is_empty` is clearer and more explicit [INFO] [stdout] | [INFO] [stdout] 402 ~ .map(|l| if l.into_seq().wait() [INFO] [stdout] 403 ~ .unwrap().is_empty() { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this call to `clone` can be replaced with `std::slice::from_ref` [INFO] [stdout] --> src/planner.rs:406:66 [INFO] [stdout] | [INFO] [stdout] 406 | ... run_fn("fs/glob", &[x.clone()]) [INFO] [stdout] | ^^^^^^^^^^^^ help: try: `std::slice::from_ref(&x)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cloned_ref_to_slice_refs [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/planner.rs:409:59 [INFO] [stdout] | [INFO] [stdout] 409 | ... .map(|l| if l.into_seq().wait() [INFO] [stdout] | ___________________________________^ [INFO] [stdout] 410 | | ... .unwrap().len() == 0 { [INFO] [stdout] | |_______________________________________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stdout] help: using `is_empty` is clearer and more explicit [INFO] [stdout] | [INFO] [stdout] 409 ~ .map(|l| if l.into_seq().wait() [INFO] [stdout] 410 ~ .unwrap().is_empty() { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of `flat_map` with an identity function [INFO] [stdout] --> src/planner.rs:419:36 [INFO] [stdout] | [INFO] [stdout] 419 | ... .flat_map(|x| x) [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: try: `flatten()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#flat_map_identity [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `key` [INFO] [stdout] --> src/data.rs:154:23 [INFO] [stdout] | [INFO] [stdout] 154 | fn get_key(&self, key: &Value) -> Eval> { [INFO] [stdout] | ^^^ help: if this is intentional, prefix it with an underscore: `_key` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `key` [INFO] [stdout] --> src/data.rs:162:23 [INFO] [stdout] | [INFO] [stdout] 162 | fn set_key(&self, key: Value, value: Value) -> Eval { [INFO] [stdout] | ^^^ help: if this is intentional, prefix it with an underscore: `_key` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `value` [INFO] [stdout] --> src/data.rs:162:35 [INFO] [stdout] | [INFO] [stdout] 162 | fn set_key(&self, key: Value, value: Value) -> Eval { [INFO] [stdout] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_value` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/planner.rs:662:53 [INFO] [stdout] | [INFO] [stdout] 662 | let opts = if let Some(cmds) = find_command(&name) { cmds } [INFO] [stdout] | ^^^^^ help: change this to: `name` [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: you don't need to add `&` to all patterns [INFO] [stdout] --> src/pipeline.rs:34:9 [INFO] [stdout] | [INFO] [stdout] 34 | / match self { [INFO] [stdout] 35 | | &FDWrapper::Stdin => io::stdin().as_raw_fd(), [INFO] [stdout] 36 | | &FDWrapper::Stdout => io::stdout().as_raw_fd(), [INFO] [stdout] 37 | | &FDWrapper::Pipe(f) => f, [INFO] [stdout] 38 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stdout] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stdout] | [INFO] [stdout] 34 ~ match *self { [INFO] [stdout] 35 ~ FDWrapper::Stdin => io::stdin().as_raw_fd(), [INFO] [stdout] 36 ~ FDWrapper::Stdout => io::stdout().as_raw_fd(), [INFO] [stdout] 37 ~ FDWrapper::Pipe(f) => f, [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> src/pipeline.rs:65:9 [INFO] [stdout] | [INFO] [stdout] 65 | / match self { [INFO] [stdout] 66 | | &mut FDWrapper::Pipe(f) => { [INFO] [stdout] 67 | | unistd::close(f).expect("failed to close wrapped FD"); [INFO] [stdout] 68 | | }, [INFO] [stdout] 69 | | _ => {} [INFO] [stdout] 70 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 65 ~ if let &mut FDWrapper::Pipe(f) = self { [INFO] [stdout] 66 + unistd::close(f).expect("failed to close wrapped FD"); [INFO] [stdout] 67 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `.into_iter()` call is equivalent to `.iter()` and will not consume the `slice` [INFO] [stdout] --> src/pipeline.rs:82:43 [INFO] [stdout] | [INFO] [stdout] 82 | let mut steps_iter = plan.steps().into_iter().peekable(); [INFO] [stdout] | ^^^^^^^^^ help: call directly: `iter` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#into_iter_on_ref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `.into_iter()` call is equivalent to `.iter()` and will not consume the `Vec` [INFO] [stdout] --> src/pipeline.rs:138:36 [INFO] [stdout] | [INFO] [stdout] 138 | .args(args.into_iter() [INFO] [stdout] | ^^^^^^^^^ help: call directly: `iter` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#into_iter_on_ref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `.into_iter()` call is equivalent to `.iter()` and will not consume the `Vec` [INFO] [stdout] --> src/pipeline.rs:206:33 [INFO] [stdout] | [INFO] [stdout] 206 | let mut elements = body.into_iter(); [INFO] [stdout] | ^^^^^^^^^ help: call directly: `iter` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#into_iter_on_ref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of `writeln!(stderr(), ...).unwrap()` [INFO] [stdout] --> src/pipeline.rs:272:21 [INFO] [stdout] | [INFO] [stdout] 272 | writeln!(io::stderr(), "ysh: {}", e).unwrap(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `eprintln!("ysh: {}", e)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_write [INFO] [stdout] = note: `#[warn(clippy::explicit_write)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of `writeln!(stderr(), ...).unwrap()` [INFO] [stdout] --> src/pipeline.rs:285:33 [INFO] [stdout] | [INFO] [stdout] 285 | / ... writeln!(io::stderr(), [INFO] [stdout] 286 | | ... "ysh: cannot convert to string: {}", e) [INFO] [stdout] 287 | | ... .unwrap(); [INFO] [stdout] | |___________________________________^ help: try: `eprintln!("ysh: cannot convert to string: {}", e)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_write [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of `writeln!(stderr(), ...).unwrap()` [INFO] [stdout] --> src/pipeline.rs:300:33 [INFO] [stdout] | [INFO] [stdout] 300 | / ... writeln!(io::stderr(), [INFO] [stdout] 301 | | ... "ysh: cannot convert to string: {}", e) [INFO] [stdout] 302 | | ... .unwrap(); [INFO] [stdout] | |___________________________________^ help: try: `eprintln!("ysh: cannot convert to string: {}", e)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_write [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of `writeln!(stdout(), ...).unwrap()` [INFO] [stdout] --> src/pipeline.rs:314:25 [INFO] [stdout] | [INFO] [stdout] 314 | writeln!(io::stdout(), "{}", to_write).unwrap(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `println!("{}", to_write)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_write [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: doc list item overindented [INFO] [stdout] --> src/pipeline.rs:337:9 [INFO] [stdout] | [INFO] [stdout] 337 | /// a. Convert it to a sequence (if this fails, return the value) [INFO] [stdout] | ^^^^ help: try using ` ` (3 spaces) [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#doc_overindented_list_items [INFO] [stdout] = note: `#[warn(clippy::doc_overindented_list_items)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: doc list item overindented [INFO] [stdout] --> src/pipeline.rs:338:9 [INFO] [stdout] | [INFO] [stdout] 338 | /// b. Append the inner value [INFO] [stdout] | ^^^^ help: try using ` ` (3 spaces) [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#doc_overindented_list_items [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: doc list item overindented [INFO] [stdout] --> src/pipeline.rs:339:9 [INFO] [stdout] | [INFO] [stdout] 339 | /// c. Return the result [INFO] [stdout] | ^^^^ help: try using ` ` (3 spaces) [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#doc_overindented_list_items [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/pipeline.rs:371:17 [INFO] [stdout] | [INFO] [stdout] 371 | return Value::list(vec![m.clone(), inner]); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 371 - return Value::list(vec![m.clone(), inner]); [INFO] [stdout] 371 + Value::list(vec![m.clone(), inner]) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/pipeline.rs:373:17 [INFO] [stdout] | [INFO] [stdout] 373 | return ::library::core::quote(&[m]) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 373 - return ::library::core::quote(&[m]) [INFO] [stdout] 373 + ::library::core::quote(&[m]) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/history.rs:118:73 [INFO] [stdout] | [INFO] [stdout] 118 | ValueData::List(ref xs) => 1+xs.iter().map(|v| value_complexity(&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/history.rs:120:72 [INFO] [stdout] | [INFO] [stdout] 120 | ValueData::Map(ref m) => 1+m.values().map(|v| value_complexity(&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/history.rs:130:62 [INFO] [stdout] | [INFO] [stdout] 130 | ... .map(|v| value_complexity(&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: dereferencing a tuple pattern where every element takes a reference [INFO] [stdout] --> src/history.rs:185:22 [INFO] [stdout] | [INFO] [stdout] 185 | |&(_,ref c)| complexity_metric(&c.structure)); [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] 185 - |&(_,ref c)| complexity_metric(&c.structure)); [INFO] [stdout] 185 + |(_,c)| complexity_metric(&c.structure)); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/history.rs:206:61 [INFO] [stdout] | [INFO] [stdout] 206 | ... .and_then(|c| c.match_text(&q) [INFO] [stdout] | ^^ help: change this to: `q` [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/history.rs:232:60 [INFO] [stdout] | [INFO] [stdout] 232 | ... .and_then(|c| c.match_obj(&q) [INFO] [stdout] | ^^ help: change this to: `q` [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: length comparison to zero [INFO] [stdout] --> src/main.rs:78:8 [INFO] [stdout] | [INFO] [stdout] 78 | if args.len() == 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `args.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `s` [INFO] [stdout] --> src/data.rs:788:35 [INFO] [stdout] | [INFO] [stdout] 788 | &ValueData::RawStream(ref s) => { [INFO] [stdout] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_s` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: mutable key type [INFO] [stdout] --> src/main.rs:133:9 [INFO] [stdout] | [INFO] [stdout] 133 | / let current = if let &mut data::ValueData::Map(ref mut h) = current {h} [INFO] [stdout] 134 | | else {panic!("invalid environment storage")}; [INFO] [stdout] | |___________________________________________________________________^ [INFO] [stdout] | [INFO] [stdout] = note: ... because it contains `ValueHash`, which has interior mutability [INFO] [stdout] = note: ... because it contains `Value`, which has interior mutability [INFO] [stdout] = note: ... because it contains `ValueData`, which has interior mutability [INFO] [stdout] = note: ... because it contains `StreamWrapper`, which has interior mutability [INFO] [stdout] = note: ... because it contains `StreamWrap`, which has interior mutability [INFO] [stdout] = note: ... because it contains `Arc>>`, which has interior mutability [INFO] [stdout] = note: ... because it contains `Mutex>`, which has interior mutability [INFO] [stdout] = note: ... because it contains `Mutex`, which has interior mutability [INFO] [stdout] = note: ... because it contains `Atomic`, which has interior mutability [INFO] [stdout] = note: ... because it contains `UnsafeCell<::Storage>`, which has interior mutability [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#mutable_key_type [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: mutable key type [INFO] [stdout] --> src/main.rs:137:9 [INFO] [stdout] | [INFO] [stdout] 137 | / let mut val = if let data::ValueData::Map(h) = val.data {h} [INFO] [stdout] 138 | | else {return}; [INFO] [stdout] | |____________________________________^ [INFO] [stdout] | [INFO] [stdout] = note: ... because it contains `ValueHash`, which has interior mutability [INFO] [stdout] = note: ... because it contains `Value`, which has interior mutability [INFO] [stdout] = note: ... because it contains `ValueData`, which has interior mutability [INFO] [stdout] = note: ... because it contains `StreamWrapper`, which has interior mutability [INFO] [stdout] = note: ... because it contains `StreamWrap`, which has interior mutability [INFO] [stdout] = note: ... because it contains `Arc>>`, which has interior mutability [INFO] [stdout] = note: ... because it contains `Mutex>`, which has interior mutability [INFO] [stdout] = note: ... because it contains `Mutex`, which has interior mutability [INFO] [stdout] = note: ... because it contains `Atomic`, which has interior mutability [INFO] [stdout] = note: ... because it contains `UnsafeCell<::Storage>`, which has interior mutability [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#mutable_key_type [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/main.rs:142:38 [INFO] [stdout] | [INFO] [stdout] 142 | val.retain(|k,v| current.get(&k) != Some(v)); [INFO] [stdout] | ^^ help: change this to: `k` [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: using `map_err` over `inspect_err` [INFO] [stdout] --> src/main.rs:250:24 [INFO] [stdout] | [INFO] [stdout] 250 | .map_err(|e| { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_inspect [INFO] [stdout] = note: `#[warn(clippy::manual_inspect)]` on by default [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 250 ~ .inspect_err(|&e| { [INFO] [stdout] 251 ~ eprintln!("ysh: failed to get process group: {}", e); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `map_err` over `inspect_err` [INFO] [stdout] --> src/main.rs:258:21 [INFO] [stdout] | [INFO] [stdout] 258 | .map_err(|e| { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_inspect [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 258 ~ .inspect_err(|&e| { [INFO] [stdout] 259 ~ eprintln!("ysh: cannot send SIGTTIN: {}", e); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `map_err` over `inspect_err` [INFO] [stdout] --> src/main.rs:283:17 [INFO] [stdout] | [INFO] [stdout] 283 | .map_err(|e| { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_inspect [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 283 ~ .inspect_err(|&e| { [INFO] [stdout] 284 ~ eprintln!("ysh: failed to move to own process group: {}", e); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant pattern matching, consider using `is_err()` [INFO] [stdout] --> src/main.rs:296:12 [INFO] [stdout] | [INFO] [stdout] 296 | if let Err(_) = init_process_group() { [INFO] [stdout] | -------^^^^^^----------------------- help: try: `if init_process_group().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: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/environment.rs:51:22 [INFO] [stdout] | [INFO] [stdout] 51 | pub fn exclusive(&mut self) -> ExclusiveEnvironment { [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] 51 | pub fn exclusive(&mut self) -> ExclusiveEnvironment<'_> { [INFO] [stdout] | ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused boxed `std::iter::Iterator` trait object that must be used [INFO] [stdout] --> src/library/sequence.rs:197:13 [INFO] [stdout] | [INFO] [stdout] 197 | self.inputs.remove(0); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: iterators are lazy and do nothing unless consumed [INFO] [stdout] = note: `#[warn(unused_must_use)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused boxed `std::iter::Iterator` trait object that must be used [INFO] [stdout] --> src/library/sequence.rs:365:9 [INFO] [stdout] | [INFO] [stdout] 365 | self.inner.remove(0); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: iterators are lazy and do nothing unless consumed [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/span.rs:471:18 [INFO] [stdout] | [INFO] [stdout] 471 | pub fn bytes(&self) -> Bytes { [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] 471 | pub fn bytes(&self) -> Bytes<'_> { [INFO] [stdout] | ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/span.rs:486:18 [INFO] [stdout] | [INFO] [stdout] 486 | pub fn chars(&self) -> Chars { [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] 486 | pub fn chars(&self) -> Chars<'_> { [INFO] [stdout] | ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `std::result::Result` that must be used [INFO] [stdout] --> src/input/mod.rs:318:17 [INFO] [stdout] | [INFO] [stdout] 318 | self.redraw(); [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 318 | let _ = self.redraw(); [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `std::result::Result` that must be used [INFO] [stdout] --> src/input/render.rs:65:9 [INFO] [stdout] | [INFO] [stdout] 65 | / write!(self.output, "\r{}{}{}", [INFO] [stdout] 66 | | clear::CurrentLine, lprompt, s); [INFO] [stdout] | |______________________________________________^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 65 | let _ = write!(self.output, "\r{}{}{}", [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/terminal.rs:60:19 [INFO] [stdout] | [INFO] [stdout] 60 | pub fn stdout(&self) -> StdoutGuard { [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] 60 | pub fn stdout(&self) -> StdoutGuard<'_> { [INFO] [stdout] | ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/terminal.rs:68:18 [INFO] [stdout] | [INFO] [stdout] 68 | pub fn stdin(&self) -> StdinGuard { [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] 68 | pub fn stdin(&self) -> StdinGuard<'_> { [INFO] [stdout] | ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/terminal.rs:76:19 [INFO] [stdout] | [INFO] [stdout] 76 | pub fn stderr(&self) -> StderrGuard { [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] 76 | pub fn stderr(&self) -> StderrGuard<'_> { [INFO] [stdout] | ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused return value of `std::os::fd::IntoRawFd::into_raw_fd` that must be used [INFO] [stdout] --> src/pipeline.rs:324:21 [INFO] [stdout] | [INFO] [stdout] 324 | f.into_raw_fd(); [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: losing the raw file descriptor may leak resources [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 324 | let _ = f.into_raw_fd(); [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: call to `.deref()` on a reference in this situation does nothing [INFO] [stdout] --> src/pipeline.rs:354:41 [INFO] [stdout] | [INFO] [stdout] 354 | let mut arr = vec![x.deref().to_owned()]; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: the type `data::Value` does not implement `Deref`, so calling `deref` on `&data::Value` copies the reference, which does not do anything and can be removed [INFO] [stdout] = note: `#[warn(noop_method_call)]` on by default [INFO] [stdout] help: remove this redundant call [INFO] [stdout] | [INFO] [stdout] 354 - let mut arr = vec![x.deref().to_owned()]; [INFO] [stdout] 354 + let mut arr = vec![x.to_owned()]; [INFO] [stdout] | [INFO] [stdout] help: if you meant to clone `data::Value`, implement `Clone` for it [INFO] [stdout] --> src/data.rs:349:1 [INFO] [stdout] | [INFO] [stdout] 349 + #[derive(Clone)] [INFO] [stdout] 350 | pub struct Value { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `lex` [INFO] [stdout] --> src/library/core.rs:207:15 [INFO] [stdout] | [INFO] [stdout] 207 | fn core_undef(lex: &Environment, args: &[Value]) -> Eval { [INFO] [stdout] | ^^^ help: if this is intentional, prefix it with an underscore: `_lex` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `r` is assigned to, but never used [INFO] [stdout] --> src/library/core.rs:230:13 [INFO] [stdout] | [INFO] [stdout] 230 | let mut r = Value::empty(); [INFO] [stdout] | ^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: consider using `_r` instead [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: value assigned to `r` is never read [INFO] [stdout] --> src/library/core.rs:232:13 [INFO] [stdout] | [INFO] [stdout] 232 | r = match i.evaluate(lex).wait() { [INFO] [stdout] | ^ [INFO] [stdout] | [INFO] [stdout] = help: maybe it is overwritten before being read? [INFO] [stdout] = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `v` [INFO] [stdout] --> src/library/operators.rs:361:29 [INFO] [stdout] | [INFO] [stdout] 361 | ValueData::List(ref v) => { [INFO] [stdout] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_v` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `env` [INFO] [stdout] --> src/library/async.rs:5:9 [INFO] [stdout] | [INFO] [stdout] 5 | let env = global(); [INFO] [stdout] | ^^^ help: if this is intentional, prefix it with an underscore: `_env` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `args` [INFO] [stdout] --> src/library/builtins.rs:45:28 [INFO] [stdout] | [INFO] [stdout] 45 | fn fn_pwd(_: &Environment, args: &[Value]) -> EvalResult { [INFO] [stdout] | ^^^^ help: if this is intentional, prefix it with an underscore: `_args` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `c` [INFO] [stdout] --> src/stream/poly.rs:259:20 [INFO] [stdout] | [INFO] [stdout] 259 | fn push(&self, c: char) { [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_c` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `tty_rows` [INFO] [stdout] --> src/input/render.rs:69:24 [INFO] [stdout] | [INFO] [stdout] 69 | let (tty_cols, tty_rows) = terminal_size().unwrap_or((80, 24)); [INFO] [stdout] | ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_tty_rows` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `mark` [INFO] [stdout] --> src/input/render.rs:110:13 [INFO] [stdout] | [INFO] [stdout] 110 | let mark = self.set.marked_idx(); [INFO] [stdout] | ^^^^ help: if this is intentional, prefix it with an underscore: `_mark` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `tty_rows` [INFO] [stdout] --> src/input/render.rs:193:24 [INFO] [stdout] | [INFO] [stdout] 193 | let (tty_cols, tty_rows) = terminal_size().unwrap_or((80, 24)); [INFO] [stdout] | ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_tty_rows` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `f` [INFO] [stdout] --> src/input/keybind.rs:12:19 [INFO] [stdout] | [INFO] [stdout] 12 | fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result { [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_f` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/input/mod.rs:140:25 [INFO] [stdout] | [INFO] [stdout] 140 | let mut output = self.mode.as_mut().unwrap().output(); [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: unused variable: `msg` [INFO] [stdout] --> src/input/mod.rs:181:35 [INFO] [stdout] | [INFO] [stdout] 181 | fn fail_completion(&mut self, msg: &str) -> io::Result<()> { [INFO] [stdout] | ^^^ help: if this is intentional, prefix it with an underscore: `_msg` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `esc` [INFO] [stdout] --> src/input/mod.rs:237:17 [INFO] [stdout] | [INFO] [stdout] 237 | let esc = self.parent.keymap.bind(event::Key::Esc, move || { [INFO] [stdout] | ^^^ help: if this is intentional, prefix it with an underscore: `_esc` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `r` [INFO] [stdout] --> src/planner.rs:140:25 [INFO] [stdout] | [INFO] [stdout] 140 | if let Some(r) = r { [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_r` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `env` [INFO] [stdout] --> src/planner.rs:708:26 [INFO] [stdout] | [INFO] [stdout] 708 | fn mock_shell_locate(env: &Environment, args: &[Value]) -> EvalResult { [INFO] [stdout] | ^^^ help: if this is intentional, prefix it with an underscore: `_env` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `env` [INFO] [stdout] --> src/planner.rs:718:21 [INFO] [stdout] | [INFO] [stdout] 718 | fn mock_fs_glob(env: &Environment, args: &[Value]) -> EvalResult { [INFO] [stdout] | ^^^ help: if this is intentional, prefix it with an underscore: `_env` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `opts` [INFO] [stdout] --> src/pipeline.rs:243:29 [INFO] [stdout] | [INFO] [stdout] 243 | if let Some(opts) = opts { [INFO] [stdout] | ^^^^ help: if this is intentional, prefix it with an underscore: `_opts` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `val` [INFO] [stdout] --> src/history.rs:22:19 [INFO] [stdout] | [INFO] [stdout] 22 | fn set(&self, val: Value) { [INFO] [stdout] | ^^^ help: if this is intentional, prefix it with an underscore: `_val` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `t` [INFO] [stdout] --> src/history.rs:93:26 [INFO] [stdout] | [INFO] [stdout] 93 | fn match_text(&self, t: &str) -> Option { [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_t` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `v` [INFO] [stdout] --> src/history.rs:100:25 [INFO] [stdout] | [INFO] [stdout] 100 | fn match_obj(&self, v: &Value) -> Option { [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_v` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/history.rs:305:13 [INFO] [stdout] | [INFO] [stdout] 305 | let mut db = Database::new(); [INFO] [stdout] | ----^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `core_undef` is never used [INFO] [stdout] --> src/library/core.rs:207:4 [INFO] [stdout] | [INFO] [stdout] 207 | fn core_undef(lex: &Environment, args: &[Value]) -> Eval { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `to_eval` is never used [INFO] [stdout] --> src/reader.rs:41:12 [INFO] [stdout] | [INFO] [stdout] 40 | impl ParseError { [INFO] [stdout] | --------------- method in this implementation [INFO] [stdout] 41 | pub fn to_eval(self) -> EvalError { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variant `StringContent` is never constructed [INFO] [stdout] --> src/reader.rs:97:5 [INFO] [stdout] | [INFO] [stdout] 95 | pub enum ParseContext { [INFO] [stdout] | ------------ variant in this enum [INFO] [stdout] 96 | /// String contents, starting with the given partial contents [INFO] [stdout] 97 | StringContent(String), [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `ParseContext` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `read_autoclose` is never used [INFO] [stdout] --> src/reader.rs:888:8 [INFO] [stdout] | [INFO] [stdout] 888 | pub fn read_autoclose(strm: &mut R) -> ParseOutput { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `HistoryRenderer` is never constructed [INFO] [stdout] --> src/input/render.rs:231:12 [INFO] [stdout] | [INFO] [stdout] 231 | pub struct HistoryRenderer { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enum `Renderer` is never used [INFO] [stdout] --> src/input/render.rs:235:10 [INFO] [stdout] | [INFO] [stdout] 235 | pub enum Renderer { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `new`, `to_line`, `to_complete`, `output`, and `render` are never used [INFO] [stdout] --> src/input/render.rs:242:12 [INFO] [stdout] | [INFO] [stdout] 241 | impl Renderer { [INFO] [stdout] | -------------------------- associated items in this implementation [INFO] [stdout] 242 | pub fn new(write: raw::RawTerminal) -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 250 | pub fn to_line(self) -> (Self, io::Result<()>) { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 263 | pub fn to_complete(self, set: &CompletionSet) -> Result { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 271 | pub fn output(&mut self) -> &mut raw::RawTerminal { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 278 | pub fn render(&mut self, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variant `Permanent` is never constructed [INFO] [stdout] --> src/input/keybind.rs:7:5 [INFO] [stdout] | [INFO] [stdout] 6 | enum Binding { [INFO] [stdout] | ------- variant in this enum [INFO] [stdout] 7 | Permanent(Box), [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `bind_permanent` is never used [INFO] [stdout] --> src/input/keybind.rs:51:12 [INFO] [stdout] | [INFO] [stdout] 22 | impl Keymap { [INFO] [stdout] | ----------- method in this implementation [INFO] [stdout] ... [INFO] [stdout] 51 | pub fn bind_permanent(&self, key: event::Key, f: F) [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `func` is never read [INFO] [stdout] --> src/input/keybind.rs:85:5 [INFO] [stdout] | [INFO] [stdout] 84 | pub struct ScopedBinding { [INFO] [stdout] | ------------- field in this struct [INFO] [stdout] 85 | func: Arc>, [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `release`, `stderr`, and `into_owned_channels` are never used [INFO] [stdout] --> src/terminal.rs:57:12 [INFO] [stdout] | [INFO] [stdout] 52 | impl TerminalGuard { [INFO] [stdout] | ------------------ methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 57 | pub fn release(self) {} [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 76 | pub fn stderr(&self) -> StderrGuard { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 88 | pub fn into_owned_channels(self) -> (OwnedStdinGuard, OwnedStdoutGuard, OwnedStderrGuard) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `StderrGuard` is never constructed [INFO] [stdout] --> src/terminal.rs:124:12 [INFO] [stdout] | [INFO] [stdout] 124 | pub struct StderrGuard<'a> { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `OwnedStdoutGuard` is never constructed [INFO] [stdout] --> src/terminal.rs:156:12 [INFO] [stdout] | [INFO] [stdout] 156 | pub struct OwnedStdoutGuard { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `as_raw` is never used [INFO] [stdout] --> src/terminal.rs:172:12 [INFO] [stdout] | [INFO] [stdout] 171 | impl OwnedStdoutGuard { [INFO] [stdout] | --------------------- method in this implementation [INFO] [stdout] 172 | pub fn as_raw(self) -> FdGuard { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `OwnedStdinGuard` is never constructed [INFO] [stdout] --> src/terminal.rs:179:12 [INFO] [stdout] | [INFO] [stdout] 179 | pub struct OwnedStdinGuard { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `as_raw` is never used [INFO] [stdout] --> src/terminal.rs:191:12 [INFO] [stdout] | [INFO] [stdout] 190 | impl OwnedStdinGuard { [INFO] [stdout] | -------------------- method in this implementation [INFO] [stdout] 191 | pub fn as_raw(self) -> FdGuard { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `OwnedStderrGuard` is never constructed [INFO] [stdout] --> src/terminal.rs:198:12 [INFO] [stdout] | [INFO] [stdout] 198 | pub struct OwnedStderrGuard { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `as_raw` is never used [INFO] [stdout] --> src/terminal.rs:214:12 [INFO] [stdout] | [INFO] [stdout] 213 | impl OwnedStderrGuard { [INFO] [stdout] | --------------------- method in this implementation [INFO] [stdout] 214 | pub fn as_raw(self) -> FdGuard { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `FdGuard` is never constructed [INFO] [stdout] --> src/terminal.rs:225:12 [INFO] [stdout] | [INFO] [stdout] 225 | pub struct FdGuard { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `fd` is never used [INFO] [stdout] --> src/terminal.rs:231:12 [INFO] [stdout] | [INFO] [stdout] 230 | impl FdGuard { [INFO] [stdout] | ------------------ method in this implementation [INFO] [stdout] 231 | pub fn fd(&self) -> RawFd { self.fd } [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated function `complete_any` is never used [INFO] [stdout] --> src/completion.rs:297:12 [INFO] [stdout] | [INFO] [stdout] 255 | impl CompletionSet { [INFO] [stdout] | ------------------ associated function in this implementation [INFO] [stdout] ... [INFO] [stdout] 297 | pub fn complete_any(seed: &str) -> Self { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated function `run_cmd` is never used [INFO] [stdout] --> src/planner.rs:661:12 [INFO] [stdout] | [INFO] [stdout] 654 | impl Plan { [INFO] [stdout] | --------- associated function in this implementation [INFO] [stdout] ... [INFO] [stdout] 661 | pub fn run_cmd(name: &str, args: &[&str]) -> Result { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `0` is never read [INFO] [stdout] --> src/pipeline.rs:19:16 [INFO] [stdout] | [INFO] [stdout] 19 | Evaluation(EvalError), [INFO] [stdout] | ---------- ^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | field in this variant [INFO] [stdout] | [INFO] [stdout] = note: `LaunchError` 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] 19 - Evaluation(EvalError), [INFO] [stdout] 19 + Evaluation(()), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `0` is never read [INFO] [stdout] --> src/pipeline.rs:20:15 [INFO] [stdout] | [INFO] [stdout] 20 | JobLaunch(::nix::Error), [INFO] [stdout] | --------- ^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | field in this variant [INFO] [stdout] | [INFO] [stdout] = note: `LaunchError` 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] 20 - JobLaunch(::nix::Error), [INFO] [stdout] 20 + JobLaunch(()), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `0` is never read [INFO] [stdout] --> src/pipeline.rs:21:8 [INFO] [stdout] | [INFO] [stdout] 21 | IO(io::Error), [INFO] [stdout] | -- ^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | field in this variant [INFO] [stdout] | [INFO] [stdout] = note: `LaunchError` 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] 21 - IO(io::Error), [INFO] [stdout] 21 + IO(()), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variant `Unknown` is never constructed [INFO] [stdout] --> src/pipeline.rs:22:5 [INFO] [stdout] | [INFO] [stdout] 18 | pub enum LaunchError { [INFO] [stdout] | ----------- variant in this enum [INFO] [stdout] ... [INFO] [stdout] 22 | Unknown [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `LaunchError` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enum `EvalOutput` is never used [INFO] [stdout] --> src/pipeline.rs:170:6 [INFO] [stdout] | [INFO] [stdout] 170 | enum EvalOutput { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enum `OrderingKey` is never used [INFO] [stdout] --> src/history.rs:27:10 [INFO] [stdout] | [INFO] [stdout] 27 | pub enum OrderingKey { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `Query` is never constructed [INFO] [stdout] --> src/history.rs:45:12 [INFO] [stdout] | [INFO] [stdout] 45 | pub struct Query { [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `new`, `order_by`, `ascending`, and `descending` are never used [INFO] [stdout] --> src/history.rs:53:12 [INFO] [stdout] | [INFO] [stdout] 51 | impl Query { [INFO] [stdout] | ---------------- associated items in this implementation [INFO] [stdout] 52 | /// Generate a new query from the given value [INFO] [stdout] 53 | pub fn new(q: T) -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 62 | pub fn order_by(&mut self, k: OrderingKey) -> &mut Self { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 68 | pub fn ascending(&mut self) -> &mut Self { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 74 | pub fn descending(&mut self) -> &mut Self { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `match_text` and `match_obj` are never used [INFO] [stdout] --> src/history.rs:93:8 [INFO] [stdout] | [INFO] [stdout] 89 | impl Command { [INFO] [stdout] | ------------ methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 93 | fn match_text(&self, t: &str) -> Option { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 100 | fn match_obj(&self, v: &Value) -> Option { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `when` is never read [INFO] [stdout] --> src/history.rs:107:9 [INFO] [stdout] | [INFO] [stdout] 105 | pub struct Entry { [INFO] [stdout] | ----- field in this struct [INFO] [stdout] 106 | pub command: Arc, [INFO] [stdout] 107 | pub when: SystemTime, [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `value_complexity` is never used [INFO] [stdout] --> src/history.rs:116:4 [INFO] [stdout] | [INFO] [stdout] 116 | fn value_complexity(v: &Value) -> u32 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `complexity_metric` is never used [INFO] [stdout] --> src/history.rs:127:4 [INFO] [stdout] | [INFO] [stdout] 127 | fn complexity_metric(v: &Pipeline) -> usize { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `clean_cmds`, `order_query_results`, `query_text`, and `query_structural` are never used [INFO] [stdout] --> src/history.rs:145:8 [INFO] [stdout] | [INFO] [stdout] 136 | impl Database { [INFO] [stdout] | ------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 145 | fn clean_cmds(&self) { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 151 | fn order_query_results(&self, q: &Query, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 199 | pub fn query_text>(&self, query: Query) -> Vec> { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 225 | pub fn query_structural(&self, query: Query) -> Vec> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods called `into_*` usually take `self` by value [INFO] [stdout] --> src/data.rs:15:17 [INFO] [stdout] | [INFO] [stdout] 15 | fn into_obj(&self) -> Value; [INFO] [stdout] | ^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: consider choosing a less ambiguous name [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#wrong_self_convention [INFO] [stdout] = note: `#[warn(clippy::wrong_self_convention)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you don't need to add `&` to all patterns [INFO] [stdout] --> src/data.rs:42:9 [INFO] [stdout] | [INFO] [stdout] 42 | / match self { [INFO] [stdout] 43 | | &EvalError::Unknown => [INFO] [stdout] 44 | | write!(f, "unknown evaluation error"), [INFO] [stdout] 45 | | &EvalError::IO(ref e) => [INFO] [stdout] ... | [INFO] [stdout] 54 | | write!(f, "got {} arguments, expected {}", got, expected), [INFO] [stdout] 55 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stdout] = note: `#[warn(clippy::match_ref_pats)]` on by default [INFO] [stdout] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stdout] | [INFO] [stdout] 42 ~ match *self { [INFO] [stdout] 43 ~ EvalError::Unknown => [INFO] [stdout] 44 | write!(f, "unknown evaluation error"), [INFO] [stdout] 45 ~ EvalError::IO(ref e) => [INFO] [stdout] 46 | write!(f, "I/O error: {}", e), [INFO] [stdout] 47 ~ EvalError::InvalidOperation(ref s) => [INFO] [stdout] 48 | write!(f, "invalid operation: {}", s), [INFO] [stdout] 49 ~ EvalError::TypeError(ref s) => [INFO] [stdout] 50 | write!(f, "type error: {}", s), [INFO] [stdout] 51 ~ EvalError::Runtime(ref s) => [INFO] [stdout] 52 | write!(f, "runtime error: {}", s), [INFO] [stdout] 53 ~ EvalError::Arity {got, expected} => [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: dereferencing a tuple pattern where every element takes a reference [INFO] [stdout] --> src/data.rs:45:13 [INFO] [stdout] | [INFO] [stdout] 45 | &EvalError::IO(ref e) => [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] 45 - &EvalError::IO(ref e) => [INFO] [stdout] 45 + EvalError::IO(e) => [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: dereferencing a tuple pattern where every element takes a reference [INFO] [stdout] --> src/data.rs:47:13 [INFO] [stdout] | [INFO] [stdout] 47 | &EvalError::InvalidOperation(ref s) => [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] 47 - &EvalError::InvalidOperation(ref s) => [INFO] [stdout] 47 + EvalError::InvalidOperation(s) => [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: dereferencing a tuple pattern where every element takes a reference [INFO] [stdout] --> src/data.rs:49:13 [INFO] [stdout] | [INFO] [stdout] 49 | &EvalError::TypeError(ref s) => [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] 49 - &EvalError::TypeError(ref s) => [INFO] [stdout] 49 + EvalError::TypeError(s) => [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: dereferencing a tuple pattern where every element takes a reference [INFO] [stdout] --> src/data.rs:51:13 [INFO] [stdout] | [INFO] [stdout] 51 | &EvalError::Runtime(ref s) => [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] 51 - &EvalError::Runtime(ref s) => [INFO] [stdout] 51 + EvalError::Runtime(s) => [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you don't need to add `&` to all patterns [INFO] [stdout] --> src/data.rs:61:9 [INFO] [stdout] | [INFO] [stdout] 61 | / match self { [INFO] [stdout] 62 | | &EvalError::Unknown => &"unknown evaluation error", [INFO] [stdout] 63 | | &EvalError::IO(_) => &"I/O error", [INFO] [stdout] 64 | | &EvalError::InvalidOperation(_) => &"invalid operation", [INFO] [stdout] ... | [INFO] [stdout] 67 | | &EvalError::Arity{..} => &"arity mismatch", [INFO] [stdout] 68 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stdout] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stdout] | [INFO] [stdout] 61 ~ match *self { [INFO] [stdout] 62 ~ EvalError::Unknown => &"unknown evaluation error", [INFO] [stdout] 63 ~ EvalError::IO(_) => &"I/O error", [INFO] [stdout] 64 ~ EvalError::InvalidOperation(_) => &"invalid operation", [INFO] [stdout] 65 ~ EvalError::TypeError(_) => &"type error", [INFO] [stdout] 66 ~ EvalError::Runtime(_) => &"runtime error", [INFO] [stdout] 67 ~ EvalError::Arity{..} => &"arity mismatch", [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/data.rs:62:36 [INFO] [stdout] | [INFO] [stdout] 62 | &EvalError::Unknown => &"unknown evaluation error", [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `"unknown evaluation error"` [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/data.rs:63:34 [INFO] [stdout] | [INFO] [stdout] 63 | &EvalError::IO(_) => &"I/O error", [INFO] [stdout] | ^^^^^^^^^^^^ help: change this to: `"I/O error"` [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/data.rs:64:48 [INFO] [stdout] | [INFO] [stdout] 64 | &EvalError::InvalidOperation(_) => &"invalid operation", [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: change this to: `"invalid operation"` [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/data.rs:65:41 [INFO] [stdout] | [INFO] [stdout] 65 | &EvalError::TypeError(_) => &"type error", [INFO] [stdout] | ^^^^^^^^^^^^^ help: change this to: `"type error"` [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/data.rs:66:39 [INFO] [stdout] | [INFO] [stdout] 66 | &EvalError::Runtime(_) => &"runtime error", [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: change this to: `"runtime error"` [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/data.rs:67:38 [INFO] [stdout] | [INFO] [stdout] 67 | &EvalError::Arity{..} => &"arity mismatch", [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: change this to: `"arity mismatch"` [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: methods called `into_*` usually take `self` by value [INFO] [stdout] --> src/data.rs:108:24 [INFO] [stdout] | [INFO] [stdout] 108 | fn into_raw_stream(&self, r: bool, w: bool) -> Eval { [INFO] [stdout] | ^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: consider choosing a less ambiguous name [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#wrong_self_convention [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods called `into_*` usually take `self` by value [INFO] [stdout] --> src/data.rs:116:17 [INFO] [stdout] | [INFO] [stdout] 116 | fn into_seq(&self) -> Eval> { [INFO] [stdout] | ^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: consider choosing a less ambiguous name [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#wrong_self_convention [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods called `into_*` usually take `self` by value [INFO] [stdout] --> src/data.rs:124:18 [INFO] [stdout] | [INFO] [stdout] 124 | fn into_iter(&self) -> ValueIteratorBox; [INFO] [stdout] | ^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: consider choosing a less ambiguous name [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#wrong_self_convention [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods called `into_*` usually take `self` by value [INFO] [stdout] --> src/data.rs:127:17 [INFO] [stdout] | [INFO] [stdout] 127 | fn into_str(&self) -> Eval; [INFO] [stdout] | ^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: consider choosing a less ambiguous name [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#wrong_self_convention [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods called `into_*` usually take `self` by value [INFO] [stdout] --> src/data.rs:137:18 [INFO] [stdout] | [INFO] [stdout] 137 | fn into_repr(&self) -> Eval { self.into_str() } [INFO] [stdout] | ^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: consider choosing a less ambiguous name [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#wrong_self_convention [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods called `into_*` usually take `self` by value [INFO] [stdout] --> src/data.rs:140:17 [INFO] [stdout] | [INFO] [stdout] 140 | fn into_num(&self) -> Eval> { Eval::from(Ok(None)) } [INFO] [stdout] | ^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: consider choosing a less ambiguous name [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#wrong_self_convention [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods called `into_*` usually take `self` by value [INFO] [stdout] --> src/data.rs:143:18 [INFO] [stdout] | [INFO] [stdout] 143 | fn into_bool(&self) -> Eval { Eval::from(Ok(true)) } [INFO] [stdout] | ^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: consider choosing a less ambiguous name [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#wrong_self_convention [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods called `into_*` usually take `self` by value [INFO] [stdout] --> src/data.rs:146:18 [INFO] [stdout] | [INFO] [stdout] 146 | fn into_args(&self) -> Eval> { [INFO] [stdout] | ^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: consider choosing a less ambiguous name [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#wrong_self_convention [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref on an immutable reference [INFO] [stdout] --> src/data.rs:233:57 [INFO] [stdout] | [INFO] [stdout] 233 | ConstString::Owned(r) => write!(f, "{:?}", &*r), [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] 233 - ConstString::Owned(r) => write!(f, "{:?}", &*r), [INFO] [stdout] 233 + ConstString::Owned(r) => write!(f, "{:?}", r), [INFO] [stdout] | [INFO] [stdout] help: if you would like to deref, try using `&**` [INFO] [stdout] | [INFO] [stdout] 233 | ConstString::Owned(r) => write!(f, "{:?}", &**r), [INFO] [stdout] | + [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> src/data.rs:469:9 [INFO] [stdout] | [INFO] [stdout] 469 | / match self.data { [INFO] [stdout] 470 | | ValueData::List(ref xs) => { [INFO] [stdout] ... | [INFO] [stdout] 518 | | _ => {} [INFO] [stdout] 519 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] = note: `#[warn(clippy::single_match)]` on by default [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 469 ~ if let ValueData::List(ref xs) = self.data { [INFO] [stdout] 470 + // might be a macro call, but could still be a normal function [INFO] [stdout] 471 + // call [INFO] [stdout] 472 + // [INFO] [stdout] 473 + // check whether the first element is a resolvable symbol [INFO] [stdout] 474 + let macro_expr: Option = [INFO] [stdout] 475 + if let Some(f) = xs.first() { [INFO] [stdout] 476 + if f.is_macro() { Some(f.to_owned()) } [INFO] [stdout] 477 + else { [INFO] [stdout] 478 + let r = match f.get_symbol().wait() { [INFO] [stdout] 479 + Ok(x) => x, [INFO] [stdout] 480 + Err(e) => return Eval::from(Err(e)) [INFO] [stdout] 481 + }; [INFO] [stdout] 482 + r.and_then(|sym| [INFO] [stdout] 483 + ::environment::global().get(&*(sym.0))) [INFO] [stdout] 484 + } [INFO] [stdout] 485 + } else { None }; [INFO] [stdout] 486 + [INFO] [stdout] 487 + // if so, check to make sure it's a macro [INFO] [stdout] 488 + let macro_expr = [INFO] [stdout] 489 + if let Some(m) = macro_expr { [INFO] [stdout] 490 + match m.data { [INFO] [stdout] 491 + ValueData::Macro(ref exec) => Some(exec.clone()), [INFO] [stdout] 492 + _ => None [INFO] [stdout] 493 + } [INFO] [stdout] 494 + } else { None }; [INFO] [stdout] 495 + [INFO] [stdout] 496 + // We have an executable macro, so this is a macro form. Go and [INFO] [stdout] 497 + // run the macro. [INFO] [stdout] 498 + if let Some(exec) = macro_expr { [INFO] [stdout] 499 + let body = match self.into_seq().wait() { [INFO] [stdout] 500 + Ok(x) => x, [INFO] [stdout] 501 + Err(e) => return Eval::from(Err(e)) [INFO] [stdout] 502 + }; [INFO] [stdout] 503 + [INFO] [stdout] 504 + // we have to quote the body forms so that when they're [INFO] [stdout] 505 + // evaluated by the macro function it doesn't run them [INFO] [stdout] 506 + let quoted_body = body[1..].iter() [INFO] [stdout] 507 + .map(|form| form.quote()) [INFO] [stdout] 508 + .collect::>(); [INFO] [stdout] 509 + let r = match exec.run(&::environment::empty(), "ed_body) [INFO] [stdout] 510 + .wait() { [INFO] [stdout] 511 + Ok(x) => x, [INFO] [stdout] 512 + Err(e) => return Eval::from(Err(e)) [INFO] [stdout] 513 + }; [INFO] [stdout] 514 + return r.macroexpand(); [INFO] [stdout] 515 + } [INFO] [stdout] 516 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `if let .. else` expression looks like `matches!` macro [INFO] [stdout] --> src/data.rs:525:9 [INFO] [stdout] | [INFO] [stdout] 525 | if let &ValueData::Macro(_) = &self.data { true } else { false } [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_like_matches_macro [INFO] [stdout] = note: `#[warn(clippy::match_like_matches_macro)]` on by default [INFO] [stdout] help: use `matches!` directly [INFO] [stdout] | [INFO] [stdout] 525 - if let &ValueData::Macro(_) = &self.data { true } else { false } [INFO] [stdout] 525 + matches!(&self.data, &ValueData::Macro(_)) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you don't need to add `&` to both the expression and the patterns [INFO] [stdout] --> src/data.rs:533:9 [INFO] [stdout] | [INFO] [stdout] 533 | / match &self.data { [INFO] [stdout] 534 | | &ValueData::Boolean(x) => x.hash(&mut hasher), [INFO] [stdout] 535 | | &ValueData::Number(ref n) => n.hash(&mut hasher), [INFO] [stdout] 536 | | &ValueData::Str(ref x) => x.hash(&mut hasher), [INFO] [stdout] ... | [INFO] [stdout] 558 | | _ => return Eval::from(Ok(None)) [INFO] [stdout] 559 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 533 ~ match self.data { [INFO] [stdout] 534 ~ ValueData::Boolean(x) => x.hash(&mut hasher), [INFO] [stdout] 535 ~ ValueData::Number(ref n) => n.hash(&mut hasher), [INFO] [stdout] 536 ~ ValueData::Str(ref x) => x.hash(&mut hasher), [INFO] [stdout] 537 ~ ValueData::Symbol(ref x) => x.as_ref().hash(&mut hasher), [INFO] [stdout] 538 ~ ValueData::Atom(ref x) => x.hash(&mut hasher), [INFO] [stdout] 539 ~ ValueData::Map(ref x) => { [INFO] [stdout] 540 | for (ref k, ref v) in x { [INFO] [stdout] ... [INFO] [stdout] 548 | }, [INFO] [stdout] 549 ~ ValueData::List(ref x) => { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: dereferencing a tuple pattern where every element takes a reference [INFO] [stdout] --> src/data.rs:535:13 [INFO] [stdout] | [INFO] [stdout] 535 | &ValueData::Number(ref n) => n.hash(&mut hasher), [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] 535 - &ValueData::Number(ref n) => n.hash(&mut hasher), [INFO] [stdout] 535 + ValueData::Number(n) => n.hash(&mut hasher), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: dereferencing a tuple pattern where every element takes a reference [INFO] [stdout] --> src/data.rs:536:13 [INFO] [stdout] | [INFO] [stdout] 536 | &ValueData::Str(ref x) => x.hash(&mut hasher), [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] 536 - &ValueData::Str(ref x) => x.hash(&mut hasher), [INFO] [stdout] 536 + ValueData::Str(x) => x.hash(&mut hasher), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: dereferencing a tuple pattern where every element takes a reference [INFO] [stdout] --> src/data.rs:537:13 [INFO] [stdout] | [INFO] [stdout] 537 | &ValueData::Symbol(ref x) => x.as_ref().hash(&mut hasher), [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] 537 - &ValueData::Symbol(ref x) => x.as_ref().hash(&mut hasher), [INFO] [stdout] 537 + ValueData::Symbol(x) => x.as_ref().hash(&mut hasher), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: dereferencing a tuple pattern where every element takes a reference [INFO] [stdout] --> src/data.rs:538:13 [INFO] [stdout] | [INFO] [stdout] 538 | &ValueData::Atom(ref x) => x.hash(&mut hasher), [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] 538 - &ValueData::Atom(ref x) => x.hash(&mut hasher), [INFO] [stdout] 538 + ValueData::Atom(x) => x.hash(&mut hasher), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: dereferencing a tuple pattern where every element takes a reference [INFO] [stdout] --> src/data.rs:539:13 [INFO] [stdout] | [INFO] [stdout] 539 | &ValueData::Map(ref x) => { [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] 539 - &ValueData::Map(ref x) => { [INFO] [stdout] 539 + ValueData::Map(x) => { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: dereferencing a tuple pattern where every element takes a reference [INFO] [stdout] --> src/data.rs:549:13 [INFO] [stdout] | [INFO] [stdout] 549 | &ValueData::List(ref x) => { [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] 549 - &ValueData::List(ref x) => { [INFO] [stdout] 549 + ValueData::List(x) => { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this pattern creates a reference to a reference [INFO] [stdout] --> src/data.rs:540:29 [INFO] [stdout] | [INFO] [stdout] 540 | for (ref k, ref v) in x { [INFO] [stdout] | ^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 540 - for (ref k, ref v) in x { [INFO] [stdout] 540 + for (ref k, v) in x { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the following explicit lifetimes could be elided: 'a [INFO] [stdout] --> src/data.rs:584:6 [INFO] [stdout] | [INFO] [stdout] 584 | impl<'a> ToValueHash for &'a str { [INFO] [stdout] | ^^ ^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stdout] = note: `#[warn(clippy::needless_lifetimes)]` on by default [INFO] [stdout] help: elide the lifetimes [INFO] [stdout] | [INFO] [stdout] 584 - impl<'a> ToValueHash for &'a str { [INFO] [stdout] 584 + impl ToValueHash for &str { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the following explicit lifetimes could be elided: 'a [INFO] [stdout] --> src/data.rs:590:6 [INFO] [stdout] | [INFO] [stdout] 590 | impl<'a> ToValueHash for &'a String { [INFO] [stdout] | ^^ ^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stdout] help: elide the lifetimes [INFO] [stdout] | [INFO] [stdout] 590 - impl<'a> ToValueHash for &'a String { [INFO] [stdout] 590 + impl ToValueHash for &String { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: dereferencing a tuple pattern where every element takes a reference [INFO] [stdout] --> src/data.rs:669:16 [INFO] [stdout] | [INFO] [stdout] 669 | if let &ValueData::Symbol(ref id) = &self.data { [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] 669 - if let &ValueData::Symbol(ref id) = &self.data { [INFO] [stdout] 669 + if let ValueData::Symbol(id) = &self.data { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression borrows a value the compiler would automatically borrow [INFO] [stdout] --> src/data.rs:670:32 [INFO] [stdout] | [INFO] [stdout] 670 | Eval::from(Ok(Some((&*id.0).to_owned()))) [INFO] [stdout] | ^^^^^^^^ help: change this to: `(*id.0)` [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: dereferencing a tuple pattern where every element takes a reference [INFO] [stdout] --> src/data.rs:671:23 [INFO] [stdout] | [INFO] [stdout] 671 | } else if let &ValueData::Str(ref s) = &self.data { [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] 671 - } else if let &ValueData::Str(ref s) = &self.data { [INFO] [stdout] 671 + } else if let ValueData::Str(s) = &self.data { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: dereferencing a tuple pattern where every element takes a reference [INFO] [stdout] --> src/data.rs:673:23 [INFO] [stdout] | [INFO] [stdout] 673 | } else if let &ValueData::Polymorphic(ref p) = &self.data { [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] 673 - } else if let &ValueData::Polymorphic(ref p) = &self.data { [INFO] [stdout] 673 + } else if let ValueData::Polymorphic(p) = &self.data { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you don't need to add `&` to both the expression and the patterns [INFO] [stdout] --> src/data.rs:685:21 [INFO] [stdout] | [INFO] [stdout] 685 | let fname = match &self.data { [INFO] [stdout] | _____________________^ [INFO] [stdout] 686 | | &ValueData::RawStream(ref s) => { [INFO] [stdout] 687 | | // make sure the permissions are compatible [INFO] [stdout] 688 | | if (r & s.is_readable() != r) || (w & s.is_writable() != w) { [INFO] [stdout] ... | [INFO] [stdout] 699 | | "cannot convert type to raw stream")))) [INFO] [stdout] 700 | | }; [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 685 ~ let fname = match self.data { [INFO] [stdout] 686 ~ ValueData::RawStream(ref s) => { [INFO] [stdout] 687 | // make sure the permissions are compatible [INFO] [stdout] ... [INFO] [stdout] 694 | }, [INFO] [stdout] 695 ~ ValueData::Str(ref s) => s.to_owned(), [INFO] [stdout] 696 ~ ValueData::Symbol(ref id) => id.as_ref().to_owned(), [INFO] [stdout] 697 ~ ValueData::Atom(ref id) => id.as_ref().to_owned(), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: dereferencing a tuple pattern where every element takes a reference [INFO] [stdout] --> src/data.rs:686:13 [INFO] [stdout] | [INFO] [stdout] 686 | &ValueData::RawStream(ref s) => { [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] 686 - &ValueData::RawStream(ref s) => { [INFO] [stdout] 686 + ValueData::RawStream(s) => { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: dereferencing a tuple pattern where every element takes a reference [INFO] [stdout] --> src/data.rs:695:13 [INFO] [stdout] | [INFO] [stdout] 695 | &ValueData::Str(ref s) => s.to_owned(), [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] 695 - &ValueData::Str(ref s) => s.to_owned(), [INFO] [stdout] 695 + ValueData::Str(s) => s.to_owned(), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: dereferencing a tuple pattern where every element takes a reference [INFO] [stdout] --> src/data.rs:696:13 [INFO] [stdout] | [INFO] [stdout] 696 | &ValueData::Symbol(ref id) => id.as_ref().to_owned(), [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] 696 - &ValueData::Symbol(ref id) => id.as_ref().to_owned(), [INFO] [stdout] 696 + ValueData::Symbol(id) => id.as_ref().to_owned(), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: dereferencing a tuple pattern where every element takes a reference [INFO] [stdout] --> src/data.rs:697:13 [INFO] [stdout] | [INFO] [stdout] 697 | &ValueData::Atom(ref id) => id.as_ref().to_owned(), [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] 697 - &ValueData::Atom(ref id) => id.as_ref().to_owned(), [INFO] [stdout] 697 + ValueData::Atom(id) => id.as_ref().to_owned(), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: dereferencing a tuple pattern where every element takes a reference [INFO] [stdout] --> src/data.rs:717:16 [INFO] [stdout] | [INFO] [stdout] 717 | if let &ValueData::List(ref l) = &self.data { [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] 717 - if let &ValueData::List(ref l) = &self.data { [INFO] [stdout] 717 + if let ValueData::List(l) = &self.data { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: dereferencing a tuple pattern where every element takes a reference [INFO] [stdout] --> src/data.rs:719:23 [INFO] [stdout] | [INFO] [stdout] 719 | } else if let &ValueData::Polymorphic(ref p) = &self.data { [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] 719 - } else if let &ValueData::Polymorphic(ref p) = &self.data { [INFO] [stdout] 719 + } else if let ValueData::Polymorphic(p) = &self.data { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: dereferencing a tuple pattern where every element takes a reference [INFO] [stdout] --> src/data.rs:727:16 [INFO] [stdout] | [INFO] [stdout] 727 | if let &ValueData::List(ref l) = &self.data { [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] 727 - if let &ValueData::List(ref l) = &self.data { [INFO] [stdout] 727 + if let ValueData::List(l) = &self.data { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary use of `to_owned` [INFO] [stdout] --> src/data.rs:728:22 [INFO] [stdout] | [INFO] [stdout] 728 | Box::new(l.to_owned().into_iter().map(Ok)) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: use: `l.iter().cloned()` [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/data.rs:729:23 [INFO] [stdout] | [INFO] [stdout] 729 | } else if let &ValueData::Polymorphic(ref p) = &self.data { [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] 729 - } else if let &ValueData::Polymorphic(ref p) = &self.data { [INFO] [stdout] 729 + } else if let ValueData::Polymorphic(p) = &self.data { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you don't need to add `&` to both the expression and the patterns [INFO] [stdout] --> src/data.rs:738:9 [INFO] [stdout] | [INFO] [stdout] 738 | / match &self.data { [INFO] [stdout] 739 | | &ValueData::Boolean(true) => Eval::from(Ok(String::from("true"))), [INFO] [stdout] 740 | | &ValueData::Boolean(false) => Eval::from(Ok(String::from("false"))), [INFO] [stdout] 741 | | &ValueData::Number(ref n) => Eval::from(Ok(format!("{}", n))), [INFO] [stdout] ... | [INFO] [stdout] 793 | | &ValueData::Polymorphic(ref v) => v.into_str() [INFO] [stdout] 794 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 738 ~ match self.data { [INFO] [stdout] 739 ~ ValueData::Boolean(true) => Eval::from(Ok(String::from("true"))), [INFO] [stdout] 740 ~ ValueData::Boolean(false) => Eval::from(Ok(String::from("false"))), [INFO] [stdout] 741 ~ ValueData::Number(ref n) => Eval::from(Ok(format!("{}", n))), [INFO] [stdout] 742 ~ ValueData::Str(ref s) => Eval::from(Ok(s.to_owned())), [INFO] [stdout] 743 ~ ValueData::Symbol(ref id) => Eval::from(Ok((*(id.0)).to_owned())), [INFO] [stdout] 744 ~ ValueData::Atom(ref a) => Eval::from(Ok(format!(":{}", a))), [INFO] [stdout] 745 ~ ValueData::Map(ref m) => { [INFO] [stdout] 746 | let mut items = Vec::new(); [INFO] [stdout] ... [INFO] [stdout] 767 | }, [INFO] [stdout] 768 ~ ValueData::List(ref l) => { [INFO] [stdout] 769 | let mut s = String::with_capacity(128); [INFO] [stdout] ... [INFO] [stdout] 782 | }, [INFO] [stdout] 783 ~ ValueData::Function(_) => Eval::from(Ok(match &self.name { [INFO] [stdout] 784 | &None => String::from(""), [INFO] [stdout] 785 | &Some(ref s) => format!("", s.as_ref()), [INFO] [stdout] 786 | })), [INFO] [stdout] 787 ~ ValueData::Macro(_) => Eval::from(Ok(String::from(""))), [INFO] [stdout] 788 ~ ValueData::RawStream(ref s) => { [INFO] [stdout] 789 | // TODO: use a more meaningful representation. maybe add to the [INFO] [stdout] ... [INFO] [stdout] 792 | } [INFO] [stdout] 793 ~ ValueData::Polymorphic(ref v) => v.into_str() [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: dereferencing a tuple pattern where every element takes a reference [INFO] [stdout] --> src/data.rs:741:13 [INFO] [stdout] | [INFO] [stdout] 741 | &ValueData::Number(ref n) => Eval::from(Ok(format!("{}", n))), [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] 741 - &ValueData::Number(ref n) => Eval::from(Ok(format!("{}", n))), [INFO] [stdout] 741 + ValueData::Number(n) => Eval::from(Ok(format!("{}", n))), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: dereferencing a tuple pattern where every element takes a reference [INFO] [stdout] --> src/data.rs:742:13 [INFO] [stdout] | [INFO] [stdout] 742 | &ValueData::Str(ref s) => Eval::from(Ok(s.to_owned())), [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] 742 - &ValueData::Str(ref s) => Eval::from(Ok(s.to_owned())), [INFO] [stdout] 742 + ValueData::Str(s) => Eval::from(Ok(s.to_owned())), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: dereferencing a tuple pattern where every element takes a reference [INFO] [stdout] --> src/data.rs:743:13 [INFO] [stdout] | [INFO] [stdout] 743 | &ValueData::Symbol(ref id) => Eval::from(Ok((*(id.0)).to_owned())), [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] 743 - &ValueData::Symbol(ref id) => Eval::from(Ok((*(id.0)).to_owned())), [INFO] [stdout] 743 + ValueData::Symbol(id) => Eval::from(Ok((*(id.0)).to_owned())), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: dereferencing a tuple pattern where every element takes a reference [INFO] [stdout] --> src/data.rs:744:13 [INFO] [stdout] | [INFO] [stdout] 744 | &ValueData::Atom(ref a) => Eval::from(Ok(format!(":{}", a))), [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] 744 - &ValueData::Atom(ref a) => Eval::from(Ok(format!(":{}", a))), [INFO] [stdout] 744 + ValueData::Atom(a) => Eval::from(Ok(format!(":{}", a))), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: dereferencing a tuple pattern where every element takes a reference [INFO] [stdout] --> src/data.rs:745:13 [INFO] [stdout] | [INFO] [stdout] 745 | &ValueData::Map(ref m) => { [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] 745 - &ValueData::Map(ref m) => { [INFO] [stdout] 745 + ValueData::Map(m) => { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: dereferencing a tuple pattern where every element takes a reference [INFO] [stdout] --> src/data.rs:768:13 [INFO] [stdout] | [INFO] [stdout] 768 | &ValueData::List(ref l) => { [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] 768 - &ValueData::List(ref l) => { [INFO] [stdout] 768 + ValueData::List(l) => { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `.into_iter()` call is equivalent to `.iter()` and will not consume the `Vec` [INFO] [stdout] --> src/data.rs:771:28 [INFO] [stdout] | [INFO] [stdout] 771 | let xs = l.into_iter() [INFO] [stdout] | ^^^^^^^^^ help: call directly: `iter` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#into_iter_on_ref [INFO] [stdout] = note: `#[warn(clippy::into_iter_on_ref)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you don't need to add `&` to both the expression and the patterns [INFO] [stdout] --> src/data.rs:783:62 [INFO] [stdout] | [INFO] [stdout] 783 | &ValueData::Function(_) => Eval::from(Ok(match &self.name { [INFO] [stdout] | ______________________________________________________________^ [INFO] [stdout] 784 | | &None => String::from(""), [INFO] [stdout] 785 | | &Some(ref s) => format!("", s.as_ref()), [INFO] [stdout] 786 | | })), [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 783 ~ &ValueData::Function(_) => Eval::from(Ok(match self.name { [INFO] [stdout] 784 ~ None => String::from(""), [INFO] [stdout] 785 ~ Some(ref s) => format!("", s.as_ref()), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: dereferencing a tuple pattern where every element takes a reference [INFO] [stdout] --> src/data.rs:785:17 [INFO] [stdout] | [INFO] [stdout] 785 | &Some(ref s) => format!("", s.as_ref()), [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] 785 - &Some(ref s) => format!("", s.as_ref()), [INFO] [stdout] 785 + Some(s) => format!("", s.as_ref()), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: dereferencing a tuple pattern where every element takes a reference [INFO] [stdout] --> src/data.rs:788:13 [INFO] [stdout] | [INFO] [stdout] 788 | &ValueData::RawStream(ref s) => { [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] 788 - &ValueData::RawStream(ref s) => { [INFO] [stdout] 788 + ValueData::RawStream(s) => { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: dereferencing a tuple pattern where every element takes a reference [INFO] [stdout] --> src/data.rs:793:13 [INFO] [stdout] | [INFO] [stdout] 793 | &ValueData::Polymorphic(ref v) => v.into_str() [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] 793 - &ValueData::Polymorphic(ref v) => v.into_str() [INFO] [stdout] 793 + ValueData::Polymorphic(v) => v.into_str() [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you don't need to add `&` to both the expression and the patterns [INFO] [stdout] --> src/data.rs:798:9 [INFO] [stdout] | [INFO] [stdout] 798 | / match &self.data { [INFO] [stdout] 799 | | &ValueData::Str(ref s) => Eval::from(Ok(format!("\"{}\"", s))), [INFO] [stdout] 800 | | &ValueData::List(ref l) => { [INFO] [stdout] 801 | | let mut s = String::with_capacity(128); [INFO] [stdout] ... | [INFO] [stdout] 815 | | _ => self.into_str() [INFO] [stdout] 816 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 798 ~ match self.data { [INFO] [stdout] 799 ~ ValueData::Str(ref s) => Eval::from(Ok(format!("\"{}\"", s))), [INFO] [stdout] 800 ~ ValueData::List(ref l) => { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: dereferencing a tuple pattern where every element takes a reference [INFO] [stdout] --> src/data.rs:799:13 [INFO] [stdout] | [INFO] [stdout] 799 | &ValueData::Str(ref s) => Eval::from(Ok(format!("\"{}\"", s))), [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] 799 - &ValueData::Str(ref s) => Eval::from(Ok(format!("\"{}\"", s))), [INFO] [stdout] 799 + ValueData::Str(s) => Eval::from(Ok(format!("\"{}\"", s))), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: dereferencing a tuple pattern where every element takes a reference [INFO] [stdout] --> src/data.rs:800:13 [INFO] [stdout] | [INFO] [stdout] 800 | &ValueData::List(ref l) => { [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] 800 - &ValueData::List(ref l) => { [INFO] [stdout] 800 + ValueData::List(l) => { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `.into_iter()` call is equivalent to `.iter()` and will not consume the `Vec` [WARN] too many lines in the log, truncating it