[INFO] fetching crate interaction-calculus 0.2.4... [INFO] linting interaction-calculus-0.2.4 against nightly for clippy-nonminimal_bool-denied [INFO] extracting crate interaction-calculus 0.2.4 into /workspace/builds/worker-6-tc1/source [INFO] started tweaking crates.io crate interaction-calculus 0.2.4 [INFO] finished tweaking crates.io crate interaction-calculus 0.2.4 [INFO] tweaked toml for crates.io crate interaction-calculus 0.2.4 written to /workspace/builds/worker-6-tc1/source/Cargo.toml [INFO] validating manifest of crates.io crate interaction-calculus 0.2.4 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 crates.io crate interaction-calculus 0.2.4 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 atty v0.2.11 [INFO] [stderr] Downloaded textwrap v0.10.0 [INFO] [stderr] Downloaded redox_termios v0.1.1 [INFO] [stderr] Downloaded redox_syscall v0.1.40 [INFO] [stderr] Downloaded termion v1.5.1 [INFO] [stderr] Downloaded unicode-width v0.1.5 [INFO] [stderr] Downloaded strsim v0.7.0 [INFO] [stderr] Downloaded bitflags v1.0.4 [INFO] [stderr] Downloaded clap v2.32.0 [INFO] [stderr] Downloaded libc v0.2.43 [INFO] [stderr] Downloaded winapi v0.3.6 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-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] 1d7f7ae789ea6c57def22bbb51f5498be0adf558afd985f66b4f33452039eed0 [INFO] running `Command { std: "docker" "start" "-a" "1d7f7ae789ea6c57def22bbb51f5498be0adf558afd985f66b4f33452039eed0", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "1d7f7ae789ea6c57def22bbb51f5498be0adf558afd985f66b4f33452039eed0", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "1d7f7ae789ea6c57def22bbb51f5498be0adf558afd985f66b4f33452039eed0", kill_on_drop: false }` [INFO] [stdout] 1d7f7ae789ea6c57def22bbb51f5498be0adf558afd985f66b4f33452039eed0 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-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] bb50cf7a13680671c36a17292fb9e2e8a039d8eb2a4441ece59351701c8c45df [INFO] running `Command { std: "docker" "start" "-a" "bb50cf7a13680671c36a17292fb9e2e8a039d8eb2a4441ece59351701c8c45df", kill_on_drop: false }` [INFO] [stderr] warning: `package.edition` is unspecified, defaulting to `2015` while the latest is `2024` [INFO] [stderr] Compiling typenum v1.16.0 [INFO] [stderr] Compiling version_check v0.9.4 [INFO] [stderr] Checking libc v0.2.43 [INFO] [stderr] Checking rand_core v0.6.4 [INFO] [stderr] Checking unicode-width v0.1.5 [INFO] [stderr] Checking strsim v0.7.0 [INFO] [stderr] Checking ansi_term v0.11.0 [INFO] [stderr] Checking bitflags v1.0.4 [INFO] [stderr] Checking vec_map v0.8.1 [INFO] [stderr] Checking textwrap v0.10.0 [INFO] [stderr] Checking rand_xoshiro v0.6.0 [INFO] [stderr] Checking atty v0.2.11 [INFO] [stderr] Checking clap v2.32.0 [INFO] [stderr] Compiling im v15.1.0 [INFO] [stderr] Checking bitmaps v2.1.0 [INFO] [stderr] Checking sized-chunks v0.6.5 [INFO] [stderr] Checking interaction-calculus v0.2.4 (/opt/rustwide/workdir) [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/term/conversion.rs:207:13 [INFO] [stdout] | [INFO] [stdout] 207 | nam: nam, [INFO] [stdout] | ^^^^^^^^ help: replace it with: `nam` [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: redundant field names in struct initialization [INFO] [stdout] --> src/term/conversion.rs:208:13 [INFO] [stdout] | [INFO] [stdout] 208 | typ: typ, [INFO] [stdout] | ^^^^^^^^ help: replace it with: `typ` [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: redundant field names in struct initialization [INFO] [stdout] --> src/term/views.rs:131:9 [INFO] [stdout] | [INFO] [stdout] 131 | nam: nam, [INFO] [stdout] | ^^^^^^^^ help: replace it with: `nam` [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: redundant field names in struct initialization [INFO] [stdout] --> src/term/views.rs:149:9 [INFO] [stdout] | [INFO] [stdout] 149 | nam: nam, [INFO] [stdout] | ^^^^^^^^ help: replace it with: `nam` [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: redundant field names in struct initialization [INFO] [stdout] --> src/term/views.rs:164:9 [INFO] [stdout] | [INFO] [stdout] 164 | nam: nam, [INFO] [stdout] | ^^^^^^^^ help: replace it with: `nam` [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: redundant field names in struct initialization [INFO] [stdout] --> src/term/conversion.rs:207:13 [INFO] [stdout] | [INFO] [stdout] 207 | nam: nam, [INFO] [stdout] | ^^^^^^^^ help: replace it with: `nam` [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: redundant field names in struct initialization [INFO] [stdout] --> src/term/conversion.rs:208:13 [INFO] [stdout] | [INFO] [stdout] 208 | typ: typ, [INFO] [stdout] | ^^^^^^^^ help: replace it with: `typ` [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: redundant field names in struct initialization [INFO] [stdout] --> src/term/views.rs:131:9 [INFO] [stdout] | [INFO] [stdout] 131 | nam: nam, [INFO] [stdout] | ^^^^^^^^ help: replace it with: `nam` [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: redundant field names in struct initialization [INFO] [stdout] --> src/term/views.rs:149:9 [INFO] [stdout] | [INFO] [stdout] 149 | nam: nam, [INFO] [stdout] | ^^^^^^^^ help: replace it with: `nam` [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: redundant field names in struct initialization [INFO] [stdout] --> src/term/views.rs:164:9 [INFO] [stdout] | [INFO] [stdout] 164 | nam: nam, [INFO] [stdout] | ^^^^^^^^ help: replace it with: `nam` [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: dereferencing a struct pattern where every field's pattern takes a reference [INFO] [stdout] --> src/term/conversion.rs:34:7 [INFO] [stdout] | [INFO] [stdout] 34 | &Lam { ref nam, ref typ, ref bod } => { [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] 34 - &Lam { ref nam, ref typ, ref bod } => { [INFO] [stdout] 34 + Lam { nam, typ, bod } => { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: dereferencing a struct pattern where every field's pattern takes a reference [INFO] [stdout] --> src/term/conversion.rs:58:7 [INFO] [stdout] | [INFO] [stdout] 58 | &App{ref fun, ref arg} => { [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 - &App{ref fun, ref arg} => { [INFO] [stdout] 58 + App{fun, arg} => { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: dereferencing a struct pattern where every field's pattern takes a reference [INFO] [stdout] --> src/term/conversion.rs:70:7 [INFO] [stdout] | [INFO] [stdout] 70 | &Ann{ref val, ref typ} => { [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] 70 - &Ann{ref val, ref typ} => { [INFO] [stdout] 70 + Ann{val, typ} => { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/term/conversion.rs:110:36 [INFO] [stdout] | [INFO] [stdout] 110 | let val = encode_term(net, &val, port(dup, 0), scope, vars); [INFO] [stdout] | ^^^^ help: change this to: `val` [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/term/conversion.rs:112:26 [INFO] [stdout] | [INFO] [stdout] 112 | encode_term(net, &nxt, up, scope, vars) [INFO] [stdout] | ^^^^ help: change this to: `nxt` [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/term/conversion.rs:132:36 [INFO] [stdout] | [INFO] [stdout] 132 | let main = encode_term(&mut net, &term, ROOT, &mut scope, &mut vars); [INFO] [stdout] | ^^^^^ help: change this to: `term` [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 loop variable `i` is only used to index `vars` [INFO] [stdout] --> src/term/conversion.rs:135:12 [INFO] [stdout] | [INFO] [stdout] 135 | for i in 0..vars.len() { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stdout] = note: `#[warn(clippy::needless_range_loop)]` on by default [INFO] [stdout] help: consider using an iterator [INFO] [stdout] | [INFO] [stdout] 135 - for i in 0..vars.len() { [INFO] [stdout] 135 + for in &vars { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: dereferencing a struct pattern where every field's pattern takes a reference [INFO] [stdout] --> src/term/conversion.rs:34:7 [INFO] [stdout] | [INFO] [stdout] 34 | &Lam { ref nam, ref typ, ref bod } => { [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] 34 - &Lam { ref nam, ref typ, ref bod } => { [INFO] [stdout] 34 + Lam { nam, typ, bod } => { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: dereferencing a struct pattern where every field's pattern takes a reference [INFO] [stdout] --> src/term/conversion.rs:58:7 [INFO] [stdout] | [INFO] [stdout] 58 | &App{ref fun, ref arg} => { [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 - &App{ref fun, ref arg} => { [INFO] [stdout] 58 + App{fun, arg} => { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: dereferencing a struct pattern where every field's pattern takes a reference [INFO] [stdout] --> src/term/conversion.rs:70:7 [INFO] [stdout] | [INFO] [stdout] 70 | &Ann{ref val, ref typ} => { [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] 70 - &Ann{ref val, ref typ} => { [INFO] [stdout] 70 + Ann{val, typ} => { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: returning the result of a `let` binding from a block [INFO] [stdout] --> src/term/conversion.rs:211:11 [INFO] [stdout] | [INFO] [stdout] 206 | / let mut lam = Lam { [INFO] [stdout] 207 | | nam: nam, [INFO] [stdout] 208 | | typ: typ, [INFO] [stdout] 209 | | bod: Box::new(bod), [INFO] [stdout] 210 | | }; [INFO] [stdout] | |____________- unnecessary `let` binding [INFO] [stdout] 211 | lam [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] 206 ~ [INFO] [stdout] 207 ~ Lam { [INFO] [stdout] 208 + nam: nam, [INFO] [stdout] 209 + typ: typ, [INFO] [stdout] 210 + bod: Box::new(bod), [INFO] [stdout] 211 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/term/conversion.rs:110:36 [INFO] [stdout] | [INFO] [stdout] 110 | let val = encode_term(net, &val, port(dup, 0), scope, vars); [INFO] [stdout] | ^^^^ help: change this to: `val` [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/term/conversion.rs:112:26 [INFO] [stdout] | [INFO] [stdout] 112 | encode_term(net, &nxt, up, scope, vars) [INFO] [stdout] | ^^^^ help: change this to: `nxt` [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: returning the result of a `let` binding from a block [INFO] [stdout] --> src/term/conversion.rs:244:11 [INFO] [stdout] | [INFO] [stdout] 243 | let val = read_term(net, prt, var_name, dups_vec, dups_set); [INFO] [stdout] | ------------------------------------------------------------ unnecessary `let` binding [INFO] [stdout] 244 | val [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] help: return the expression directly [INFO] [stdout] | [INFO] [stdout] 243 ~ [INFO] [stdout] 244 ~ read_term(net, prt, var_name, dups_vec, dups_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/term/conversion.rs:132:36 [INFO] [stdout] | [INFO] [stdout] 132 | let main = encode_term(&mut net, &term, ROOT, &mut scope, &mut vars); [INFO] [stdout] | ^^^^^ help: change this to: `term` [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 loop variable `i` is only used to index `vars` [INFO] [stdout] --> src/term/conversion.rs:135:12 [INFO] [stdout] | [INFO] [stdout] 135 | for i in 0..vars.len() { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stdout] = note: `#[warn(clippy::needless_range_loop)]` on by default [INFO] [stdout] help: consider using an iterator [INFO] [stdout] | [INFO] [stdout] 135 - for i in 0..vars.len() { [INFO] [stdout] 135 + for in &vars { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/term/conversion.rs:290:9 [INFO] [stdout] | [INFO] [stdout] 290 | while dups_vec.len() > 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!dups_vec.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 boolean expression can be simplified [INFO] [stdout] --> src/term/syntax.rs:17:3 [INFO] [stdout] | [INFO] [stdout] 17 | / false [INFO] [stdout] 18 | | || (c >= b'A' && c <= b'Z') [INFO] [stdout] 19 | | || (c >= b'a' && c <= b'z') [INFO] [stdout] 20 | | || (c >= b'0' && c <= b'9') [INFO] [stdout] | |_____________________________^ help: try: `c >= b'A' && c <= b'Z' || c >= b'a' && c <= b'z' || c >= b'0' && c <= b'9'` [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/term/syntax.rs:17:3 [INFO] [stdout] | [INFO] [stdout] 17 | / false [INFO] [stdout] 18 | | || (c >= b'A' && c <= b'Z') [INFO] [stdout] 19 | | || (c >= b'a' && c <= b'z') [INFO] [stdout] | |_____________________________^ help: try: `c >= b'A' && c <= b'Z' || c >= b'a' && c <= b'z'` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/term/syntax.rs:17:3 [INFO] [stdout] | [INFO] [stdout] 17 | / false [INFO] [stdout] 18 | | || (c >= b'A' && c <= b'Z') [INFO] [stdout] | |_____________________________^ help: try: `c >= b'A' && c <= b'Z'` [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: manual `RangeInclusive::contains` implementation [INFO] [stdout] --> src/term/syntax.rs:18:6 [INFO] [stdout] | [INFO] [stdout] 18 | || (c >= b'A' && c <= b'Z') [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: use: `(b'A'..=b'Z').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: manual `RangeInclusive::contains` implementation [INFO] [stdout] --> src/term/syntax.rs:19:6 [INFO] [stdout] | [INFO] [stdout] 19 | || (c >= b'a' && c <= b'z') [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: use: `(b'a'..=b'z').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] [INFO] [stdout] [INFO] [stdout] warning: manual `RangeInclusive::contains` implementation [INFO] [stdout] --> src/term/syntax.rs:20:6 [INFO] [stdout] | [INFO] [stdout] 20 | || (c >= b'0' && c <= b'9') [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: use: `(b'0'..=b'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] [INFO] [stdout] [INFO] [stdout] warning: returning the result of a `let` binding from a block [INFO] [stdout] --> src/term/conversion.rs:211:11 [INFO] [stdout] | [INFO] [stdout] 206 | / let mut lam = Lam { [INFO] [stdout] 207 | | nam: nam, [INFO] [stdout] 208 | | typ: typ, [INFO] [stdout] 209 | | bod: Box::new(bod), [INFO] [stdout] 210 | | }; [INFO] [stdout] | |____________- unnecessary `let` binding [INFO] [stdout] 211 | lam [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] 206 ~ [INFO] [stdout] 207 ~ Lam { [INFO] [stdout] 208 + nam: nam, [INFO] [stdout] 209 + typ: typ, [INFO] [stdout] 210 + bod: Box::new(bod), [INFO] [stdout] 211 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: returning the result of a `let` binding from a block [INFO] [stdout] --> src/term/conversion.rs:244:11 [INFO] [stdout] | [INFO] [stdout] 243 | let val = read_term(net, prt, var_name, dups_vec, dups_set); [INFO] [stdout] | ------------------------------------------------------------ unnecessary `let` binding [INFO] [stdout] 244 | val [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] help: return the expression directly [INFO] [stdout] | [INFO] [stdout] 243 ~ [INFO] [stdout] 244 ~ read_term(net, prt, var_name, dups_vec, dups_set) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/term/conversion.rs:290:9 [INFO] [stdout] | [INFO] [stdout] 290 | while dups_vec.len() > 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!dups_vec.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 boolean expression can be simplified [INFO] [stdout] --> src/term/syntax.rs:17:3 [INFO] [stdout] | [INFO] [stdout] 17 | / false [INFO] [stdout] 18 | | || (c >= b'A' && c <= b'Z') [INFO] [stdout] 19 | | || (c >= b'a' && c <= b'z') [INFO] [stdout] 20 | | || (c >= b'0' && c <= b'9') [INFO] [stdout] | |_____________________________^ help: try: `c >= b'A' && c <= b'Z' || c >= b'a' && c <= b'z' || c >= b'0' && c <= b'9'` [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/term/syntax.rs:17:3 [INFO] [stdout] | [INFO] [stdout] 17 | / false [INFO] [stdout] 18 | | || (c >= b'A' && c <= b'Z') [INFO] [stdout] 19 | | || (c >= b'a' && c <= b'z') [INFO] [stdout] | |_____________________________^ help: try: `c >= b'A' && c <= b'Z' || c >= b'a' && c <= b'z'` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/term/syntax.rs:17:3 [INFO] [stdout] | [INFO] [stdout] 17 | / false [INFO] [stdout] 18 | | || (c >= b'A' && c <= b'Z') [INFO] [stdout] | |_____________________________^ help: try: `c >= b'A' && c <= b'Z'` [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: manual `RangeInclusive::contains` implementation [INFO] [stdout] --> src/term/syntax.rs:18:6 [INFO] [stdout] | [INFO] [stdout] 18 | || (c >= b'A' && c <= b'Z') [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: use: `(b'A'..=b'Z').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: the following explicit lifetimes could be elided: 'a [INFO] [stdout] --> src/term/syntax.rs:178:20 [INFO] [stdout] | [INFO] [stdout] 178 | pub fn from_string<'a>(code : &'a Str) -> Term { [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] 178 - pub fn from_string<'a>(code : &'a Str) -> Term { [INFO] [stdout] 178 + pub fn from_string(code : &Str) -> Term { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual `RangeInclusive::contains` implementation [INFO] [stdout] --> src/term/syntax.rs:19:6 [INFO] [stdout] | [INFO] [stdout] 19 | || (c >= b'a' && c <= b'z') [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: use: `(b'a'..=b'z').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] [INFO] [stdout] [INFO] [stdout] warning: manual `RangeInclusive::contains` implementation [INFO] [stdout] --> src/term/syntax.rs:20:6 [INFO] [stdout] | [INFO] [stdout] 20 | || (c >= b'0' && c <= b'9') [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: use: `(b'0'..=b'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] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/term/syntax.rs:252:3 [INFO] [stdout] | [INFO] [stdout] 252 | return code; [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] 252 - return code; [INFO] [stdout] 252 + code [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you don't need to add `&` to all patterns [INFO] [stdout] --> src/term/syntax.rs:187:5 [INFO] [stdout] | [INFO] [stdout] 187 | / match term { [INFO] [stdout] 188 | | &Lam{ref nam, ref typ, ref bod} => { [INFO] [stdout] 189 | | code.extend_from_slice("λ".as_bytes()); [INFO] [stdout] 190 | | if let Some(ref t) = typ { [INFO] [stdout] ... | [INFO] [stdout] 247 | | }, [INFO] [stdout] 248 | | } [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] 187 ~ match *term { [INFO] [stdout] 188 ~ Lam{ref nam, ref typ, ref bod} => { [INFO] [stdout] 189 | code.extend_from_slice("λ".as_bytes()); [INFO] [stdout] ... [INFO] [stdout] 201 | }, [INFO] [stdout] 202 ~ App{ref fun, ref arg} => { [INFO] [stdout] 203 | code.extend_from_slice(b"("); [INFO] [stdout] ... [INFO] [stdout] 208 | }, [INFO] [stdout] 209 ~ Ann{ref val, ref typ} => { [INFO] [stdout] 210 | code.extend_from_slice(b"<"); [INFO] [stdout] ... [INFO] [stdout] 215 | }, [INFO] [stdout] 216 ~ Sup{tag, ref fst, ref snd} => { [INFO] [stdout] 217 | code.extend_from_slice(b"["); [INFO] [stdout] ... [INFO] [stdout] 226 | }, [INFO] [stdout] 227 ~ Dup{tag, ref fst, ref snd, ref val, ref nxt} => { [INFO] [stdout] 228 | code.extend_from_slice(b"dup "); [INFO] [stdout] ... [INFO] [stdout] 241 | }, [INFO] [stdout] 242 ~ Set => { [INFO] [stdout] 243 | code.extend_from_slice(b"*"); [INFO] [stdout] 244 | }, [INFO] [stdout] 245 ~ Var{ref nam} => { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: dereferencing a struct pattern where every field's pattern takes a reference [INFO] [stdout] --> src/term/syntax.rs:188:7 [INFO] [stdout] | [INFO] [stdout] 188 | &Lam{ref nam, ref typ, ref bod} => { [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] 188 - &Lam{ref nam, ref typ, ref bod} => { [INFO] [stdout] 188 + Lam{nam, typ, bod} => { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/term/syntax.rs:194:32 [INFO] [stdout] | [INFO] [stdout] 194 | stringify_term(code, &t); [INFO] [stdout] | ^^ help: change this to: `t` [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/term/syntax.rs:200:30 [INFO] [stdout] | [INFO] [stdout] 200 | stringify_term(code, &bod); [INFO] [stdout] | ^^^^ help: change this to: `bod` [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 struct pattern where every field's pattern takes a reference [INFO] [stdout] --> src/term/syntax.rs:202:7 [INFO] [stdout] | [INFO] [stdout] 202 | &App{ref fun, ref arg} => { [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] 202 - &App{ref fun, ref arg} => { [INFO] [stdout] 202 + App{fun, arg} => { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/term/syntax.rs:204:30 [INFO] [stdout] | [INFO] [stdout] 204 | stringify_term(code, &fun); [INFO] [stdout] | ^^^^ help: change this to: `fun` [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/term/syntax.rs:206:30 [INFO] [stdout] | [INFO] [stdout] 206 | stringify_term(code, &arg); [INFO] [stdout] | ^^^^ help: change this to: `arg` [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 struct pattern where every field's pattern takes a reference [INFO] [stdout] --> src/term/syntax.rs:209:7 [INFO] [stdout] | [INFO] [stdout] 209 | &Ann{ref val, ref typ} => { [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] 209 - &Ann{ref val, ref typ} => { [INFO] [stdout] 209 + Ann{val, typ} => { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/term/syntax.rs:211:30 [INFO] [stdout] | [INFO] [stdout] 211 | stringify_term(code, &val); [INFO] [stdout] | ^^^^ help: change this to: `val` [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/term/syntax.rs:213:30 [INFO] [stdout] | [INFO] [stdout] 213 | stringify_term(code, &typ); [INFO] [stdout] | ^^^^ help: change this to: `typ` [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/term/syntax.rs:218:30 [INFO] [stdout] | [INFO] [stdout] 218 | stringify_term(code, &fst); [INFO] [stdout] | ^^^^ help: change this to: `fst` [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/term/syntax.rs:220:30 [INFO] [stdout] | [INFO] [stdout] 220 | stringify_term(code, &snd); [INFO] [stdout] | ^^^^ help: change this to: `snd` [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/term/syntax.rs:238:30 [INFO] [stdout] | [INFO] [stdout] 238 | stringify_term(code, &val); [INFO] [stdout] | ^^^^ help: change this to: `val` [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/term/syntax.rs:240:30 [INFO] [stdout] | [INFO] [stdout] 240 | stringify_term(code, &nxt); [INFO] [stdout] | ^^^^ help: change this to: `nxt` [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 struct pattern where every field's pattern takes a reference [INFO] [stdout] --> src/term/syntax.rs:245:7 [INFO] [stdout] | [INFO] [stdout] 245 | &Var{ref nam} => { [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] 245 - &Var{ref nam} => { [INFO] [stdout] 245 + Var{nam} => { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/term/syntax.rs:251:29 [INFO] [stdout] | [INFO] [stdout] 251 | stringify_term(&mut code, &term); [INFO] [stdout] | ^^^^^ help: change this to: `term` [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/term/views.rs:8:5 [INFO] [stdout] | [INFO] [stdout] 8 | / match term { [INFO] [stdout] 9 | | &App{ref fun, ref arg} => { [INFO] [stdout] 10 | | let app = new_node(inet, CON); [INFO] [stdout] 11 | | let fun = encode(inet, label, scope, fun); [INFO] [stdout] ... | [INFO] [stdout] 54 | | _ => panic!("Invalid λ-term.") [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] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stdout] | [INFO] [stdout] 8 ~ match *term { [INFO] [stdout] 9 ~ App{ref fun, ref arg} => { [INFO] [stdout] 10 | let app = new_node(inet, CON); [INFO] [stdout] ... [INFO] [stdout] 16 | }, [INFO] [stdout] 17 ~ Lam{ref nam, ref typ, ref bod} => { [INFO] [stdout] 18 | // TODO: handle typ [INFO] [stdout] ... [INFO] [stdout] 28 | }, [INFO] [stdout] 29 ~ Ann{..} => { [INFO] [stdout] 30 | todo!(); [INFO] [stdout] 31 | }, [INFO] [stdout] 32 ~ Var{ref nam} => { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: dereferencing a struct pattern where every field's pattern takes a reference [INFO] [stdout] --> src/term/views.rs:9:7 [INFO] [stdout] | [INFO] [stdout] 9 | &App{ref fun, ref arg} => { [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] 9 - &App{ref fun, ref arg} => { [INFO] [stdout] 9 + App{fun, arg} => { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: dereferencing a struct pattern where every field's pattern takes a reference [INFO] [stdout] --> src/term/views.rs:17:7 [INFO] [stdout] | [INFO] [stdout] 17 | &Lam{ref nam, ref typ, ref bod} => { [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] 17 - &Lam{ref nam, ref typ, ref bod} => { [INFO] [stdout] 17 + Lam{nam, typ, bod} => { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the following explicit lifetimes could be elided: 'a [INFO] [stdout] --> src/term/syntax.rs:178:20 [INFO] [stdout] | [INFO] [stdout] 178 | pub fn from_string<'a>(code : &'a Str) -> Term { [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] 178 - pub fn from_string<'a>(code : &'a Str) -> Term { [INFO] [stdout] 178 + pub fn from_string(code : &Str) -> Term { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: dereferencing a struct pattern where every field's pattern takes a reference [INFO] [stdout] --> src/term/views.rs:32:7 [INFO] [stdout] | [INFO] [stdout] 32 | &Var{ref nam} => { [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] 32 - &Var{ref nam} => { [INFO] [stdout] 32 + Var{nam} => { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `i` is only used to index `scope` [INFO] [stdout] --> src/term/views.rs:34:18 [INFO] [stdout] | [INFO] [stdout] 34 | for i in 0..scope.len() { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stdout] help: consider using an iterator [INFO] [stdout] | [INFO] [stdout] 34 - for i in 0..scope.len() { [INFO] [stdout] 34 + for in &scope { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/term/syntax.rs:252:3 [INFO] [stdout] | [INFO] [stdout] 252 | return code; [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] 252 - return code; [INFO] [stdout] 252 + code [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you don't need to add `&` to all patterns [INFO] [stdout] --> src/term/syntax.rs:187:5 [INFO] [stdout] | [INFO] [stdout] 187 | / match term { [INFO] [stdout] 188 | | &Lam{ref nam, ref typ, ref bod} => { [INFO] [stdout] 189 | | code.extend_from_slice("λ".as_bytes()); [INFO] [stdout] 190 | | if let Some(ref t) = typ { [INFO] [stdout] ... | [INFO] [stdout] 247 | | }, [INFO] [stdout] 248 | | } [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] 187 ~ match *term { [INFO] [stdout] 188 ~ Lam{ref nam, ref typ, ref bod} => { [INFO] [stdout] 189 | code.extend_from_slice("λ".as_bytes()); [INFO] [stdout] ... [INFO] [stdout] 201 | }, [INFO] [stdout] 202 ~ App{ref fun, ref arg} => { [INFO] [stdout] 203 | code.extend_from_slice(b"("); [INFO] [stdout] ... [INFO] [stdout] 208 | }, [INFO] [stdout] 209 ~ Ann{ref val, ref typ} => { [INFO] [stdout] 210 | code.extend_from_slice(b"<"); [INFO] [stdout] ... [INFO] [stdout] 215 | }, [INFO] [stdout] 216 ~ Sup{tag, ref fst, ref snd} => { [INFO] [stdout] 217 | code.extend_from_slice(b"["); [INFO] [stdout] ... [INFO] [stdout] 226 | }, [INFO] [stdout] 227 ~ Dup{tag, ref fst, ref snd, ref val, ref nxt} => { [INFO] [stdout] 228 | code.extend_from_slice(b"dup "); [INFO] [stdout] ... [INFO] [stdout] 241 | }, [INFO] [stdout] 242 ~ Set => { [INFO] [stdout] 243 | code.extend_from_slice(b"*"); [INFO] [stdout] 244 | }, [INFO] [stdout] 245 ~ Var{ref nam} => { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: dereferencing a struct pattern where every field's pattern takes a reference [INFO] [stdout] --> src/term/syntax.rs:188:7 [INFO] [stdout] | [INFO] [stdout] 188 | &Lam{ref nam, ref typ, ref bod} => { [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] 188 - &Lam{ref nam, ref typ, ref bod} => { [INFO] [stdout] 188 + Lam{nam, typ, bod} => { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/term/syntax.rs:194:32 [INFO] [stdout] | [INFO] [stdout] 194 | stringify_term(code, &t); [INFO] [stdout] | ^^ help: change this to: `t` [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/term/syntax.rs:200:30 [INFO] [stdout] | [INFO] [stdout] 200 | stringify_term(code, &bod); [INFO] [stdout] | ^^^^ help: change this to: `bod` [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 struct pattern where every field's pattern takes a reference [INFO] [stdout] --> src/term/syntax.rs:202:7 [INFO] [stdout] | [INFO] [stdout] 202 | &App{ref fun, ref arg} => { [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] 202 - &App{ref fun, ref arg} => { [INFO] [stdout] 202 + App{fun, arg} => { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/term/syntax.rs:204:30 [INFO] [stdout] | [INFO] [stdout] 204 | stringify_term(code, &fun); [INFO] [stdout] | ^^^^ help: change this to: `fun` [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/term/views.rs:113:12 [INFO] [stdout] | [INFO] [stdout] 113 | match if s.len() > 0 { s[0] } else { b' ' } { [INFO] [stdout] | ^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!s.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 expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/term/syntax.rs:206:30 [INFO] [stdout] | [INFO] [stdout] 206 | stringify_term(code, &arg); [INFO] [stdout] | ^^^^ help: change this to: `arg` [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 struct pattern where every field's pattern takes a reference [INFO] [stdout] --> src/term/syntax.rs:209:7 [INFO] [stdout] | [INFO] [stdout] 209 | &Ann{ref val, ref typ} => { [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] 209 - &Ann{ref val, ref typ} => { [INFO] [stdout] 209 + Ann{val, typ} => { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: returning the result of a `let` binding from a block [INFO] [stdout] --> src/term/views.rs:135:7 [INFO] [stdout] | [INFO] [stdout] 130 | / let o_lam = Term::Lam{ [INFO] [stdout] 131 | | nam: nam, [INFO] [stdout] 132 | | typ: None, // TODO [INFO] [stdout] 133 | | bod: Box::new(i_lam) [INFO] [stdout] 134 | | }; [INFO] [stdout] | |________- unnecessary `let` binding [INFO] [stdout] 135 | o_lam [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] help: return the expression directly [INFO] [stdout] | [INFO] [stdout] 130 ~ [INFO] [stdout] 131 ~ Term::Lam{ [INFO] [stdout] 132 + nam: nam, [INFO] [stdout] 133 + typ: None, // TODO [INFO] [stdout] 134 + bod: Box::new(i_lam) [INFO] [stdout] 135 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/term/syntax.rs:211:30 [INFO] [stdout] | [INFO] [stdout] 211 | stringify_term(code, &val); [INFO] [stdout] | ^^^^ help: change this to: `val` [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/term/syntax.rs:213:30 [INFO] [stdout] | [INFO] [stdout] 213 | stringify_term(code, &typ); [INFO] [stdout] | ^^^^ help: change this to: `typ` [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/term/syntax.rs:218:30 [INFO] [stdout] | [INFO] [stdout] 218 | stringify_term(code, &fst); [INFO] [stdout] | ^^^^ help: change this to: `fst` [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: returning the result of a `let` binding from a block [INFO] [stdout] --> src/term/views.rs:158:7 [INFO] [stdout] | [INFO] [stdout] 153 | / let o_lam = Term::Lam{ [INFO] [stdout] 154 | | nam: b"-".to_vec(), [INFO] [stdout] 155 | | typ: None, // TODO [INFO] [stdout] 156 | | bod: Box::new(i_lam) [INFO] [stdout] 157 | | }; [INFO] [stdout] | |________- unnecessary `let` binding [INFO] [stdout] 158 | o_lam [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] help: return the expression directly [INFO] [stdout] | [INFO] [stdout] 153 ~ [INFO] [stdout] 154 ~ Term::Lam{ [INFO] [stdout] 155 + nam: b"-".to_vec(), [INFO] [stdout] 156 + typ: None, // TODO [INFO] [stdout] 157 + bod: Box::new(i_lam) [INFO] [stdout] 158 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/term/syntax.rs:220:30 [INFO] [stdout] | [INFO] [stdout] 220 | stringify_term(code, &snd); [INFO] [stdout] | ^^^^ help: change this to: `snd` [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: returning the result of a `let` binding from a block [INFO] [stdout] --> src/term/views.rs:178:7 [INFO] [stdout] | [INFO] [stdout] 173 | / let o_lam = Term::Lam{ [INFO] [stdout] 174 | | nam: b"-".to_vec(), [INFO] [stdout] 175 | | typ: None, // TODO [INFO] [stdout] 176 | | bod: Box::new(i_lam) [INFO] [stdout] 177 | | }; [INFO] [stdout] | |________- unnecessary `let` binding [INFO] [stdout] 178 | o_lam [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] help: return the expression directly [INFO] [stdout] | [INFO] [stdout] 173 ~ [INFO] [stdout] 174 ~ Term::Lam{ [INFO] [stdout] 175 + nam: b"-".to_vec(), [INFO] [stdout] 176 + typ: None, // TODO [INFO] [stdout] 177 + bod: Box::new(i_lam) [INFO] [stdout] 178 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/term/syntax.rs:238:30 [INFO] [stdout] | [INFO] [stdout] 238 | stringify_term(code, &val); [INFO] [stdout] | ^^^^ help: change this to: `val` [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/term/syntax.rs:240:30 [INFO] [stdout] | [INFO] [stdout] 240 | stringify_term(code, &nxt); [INFO] [stdout] | ^^^^ help: change this to: `nxt` [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 struct pattern where every field's pattern takes a reference [INFO] [stdout] --> src/term/syntax.rs:245:7 [INFO] [stdout] | [INFO] [stdout] 245 | &Var{ref nam} => { [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] 245 - &Var{ref nam} => { [INFO] [stdout] 245 + Var{nam} => { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/term/syntax.rs:251:29 [INFO] [stdout] | [INFO] [stdout] 251 | stringify_term(&mut code, &term); [INFO] [stdout] | ^^^^^ help: change this to: `term` [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 seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> src/term/views.rs:186:5 [INFO] [stdout] | [INFO] [stdout] 186 | / match t { [INFO] [stdout] 187 | | Term::Lam{nam: ref o_nam, typ: _, bod: ref o_bod} => { // TODO: handle typ [INFO] [stdout] 188 | | match **o_bod { [INFO] [stdout] 189 | | Term::Lam{nam: ref i_nam, typ: _, bod: ref i_bod} => { // TODO: handle typ [INFO] [stdout] ... | [INFO] [stdout] 216 | | _ => {} [INFO] [stdout] 217 | | } [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] 186 ~ if let Term::Lam{nam: ref o_nam, typ: _, bod: ref o_bod} = t { // TODO: handle typ [INFO] [stdout] 187 + match **o_bod { [INFO] [stdout] 188 + Term::Lam{nam: ref i_nam, typ: _, bod: ref i_bod} => { // TODO: handle typ [INFO] [stdout] 189 + match **i_bod { [INFO] [stdout] 190 + Term::Lam{nam: _, typ: _, bod: ref e_bod} => { // TODO: handle typ [INFO] [stdout] 191 + match **e_bod { [INFO] [stdout] 192 + Term::App{fun: ref app_fun, arg: ref app_arg} => { [INFO] [stdout] 193 + match **app_fun { [INFO] [stdout] 194 + Term::Var{nam: ref var_nam} => { [INFO] [stdout] 195 + if var_nam == o_nam { [INFO] [stdout] 196 + v.extend_from_slice(b"0"); [INFO] [stdout] 197 + format_binary_output(app_arg, v); [INFO] [stdout] 198 + } else if var_nam == i_nam { [INFO] [stdout] 199 + v.extend_from_slice(b"1"); [INFO] [stdout] 200 + format_binary_output(app_arg, v); [INFO] [stdout] 201 + } [INFO] [stdout] 202 + }, [INFO] [stdout] 203 + _ => {} [INFO] [stdout] 204 + } [INFO] [stdout] 205 + }, [INFO] [stdout] 206 + _ => {} [INFO] [stdout] 207 + } [INFO] [stdout] 208 + }, [INFO] [stdout] 209 + _ => {} [INFO] [stdout] 210 + } [INFO] [stdout] 211 + }, [INFO] [stdout] 212 + _ => {} [INFO] [stdout] 213 + } [INFO] [stdout] 214 + } [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/term/views.rs:188:9 [INFO] [stdout] | [INFO] [stdout] 188 | / match **o_bod { [INFO] [stdout] 189 | | Term::Lam{nam: ref i_nam, typ: _, bod: ref i_bod} => { // TODO: handle typ [INFO] [stdout] 190 | | match **i_bod { [INFO] [stdout] 191 | | Term::Lam{nam: _, typ: _, bod: ref e_bod} => { // TODO: handle typ [INFO] [stdout] ... | [INFO] [stdout] 213 | | _ => {} [INFO] [stdout] 214 | | } [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] 188 ~ if let Term::Lam{nam: ref i_nam, typ: _, bod: ref i_bod} = **o_bod { // TODO: handle typ [INFO] [stdout] 189 + match **i_bod { [INFO] [stdout] 190 + Term::Lam{nam: _, typ: _, bod: ref e_bod} => { // TODO: handle typ [INFO] [stdout] 191 + match **e_bod { [INFO] [stdout] 192 + Term::App{fun: ref app_fun, arg: ref app_arg} => { [INFO] [stdout] 193 + match **app_fun { [INFO] [stdout] 194 + Term::Var{nam: ref var_nam} => { [INFO] [stdout] 195 + if var_nam == o_nam { [INFO] [stdout] 196 + v.extend_from_slice(b"0"); [INFO] [stdout] 197 + format_binary_output(app_arg, v); [INFO] [stdout] 198 + } else if var_nam == i_nam { [INFO] [stdout] 199 + v.extend_from_slice(b"1"); [INFO] [stdout] 200 + format_binary_output(app_arg, v); [INFO] [stdout] 201 + } [INFO] [stdout] 202 + }, [INFO] [stdout] 203 + _ => {} [INFO] [stdout] 204 + } [INFO] [stdout] 205 + }, [INFO] [stdout] 206 + _ => {} [INFO] [stdout] 207 + } [INFO] [stdout] 208 + }, [INFO] [stdout] 209 + _ => {} [INFO] [stdout] 210 + } [INFO] [stdout] 211 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you don't need to add `&` to all patterns [INFO] [stdout] --> src/term/views.rs:8:5 [INFO] [stdout] | [INFO] [stdout] 8 | / match term { [INFO] [stdout] 9 | | &App{ref fun, ref arg} => { [INFO] [stdout] 10 | | let app = new_node(inet, CON); [INFO] [stdout] 11 | | let fun = encode(inet, label, scope, fun); [INFO] [stdout] ... | [INFO] [stdout] 54 | | _ => panic!("Invalid λ-term.") [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] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stdout] | [INFO] [stdout] 8 ~ match *term { [INFO] [stdout] 9 ~ App{ref fun, ref arg} => { [INFO] [stdout] 10 | let app = new_node(inet, CON); [INFO] [stdout] ... [INFO] [stdout] 16 | }, [INFO] [stdout] 17 ~ Lam{ref nam, ref typ, ref bod} => { [INFO] [stdout] 18 | // TODO: handle typ [INFO] [stdout] ... [INFO] [stdout] 28 | }, [INFO] [stdout] 29 ~ Ann{..} => { [INFO] [stdout] 30 | todo!(); [INFO] [stdout] 31 | }, [INFO] [stdout] 32 ~ Var{ref nam} => { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: dereferencing a struct pattern where every field's pattern takes a reference [INFO] [stdout] --> src/term/views.rs:9:7 [INFO] [stdout] | [INFO] [stdout] 9 | &App{ref fun, ref arg} => { [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] 9 - &App{ref fun, ref arg} => { [INFO] [stdout] 9 + App{fun, arg} => { [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/term/views.rs:190:13 [INFO] [stdout] | [INFO] [stdout] 190 | / match **i_bod { [INFO] [stdout] 191 | | Term::Lam{nam: _, typ: _, bod: ref e_bod} => { // TODO: handle typ [INFO] [stdout] 192 | | match **e_bod { [INFO] [stdout] 193 | | Term::App{fun: ref app_fun, arg: ref app_arg} => { [INFO] [stdout] ... | [INFO] [stdout] 210 | | _ => {} [INFO] [stdout] 211 | | } [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] 190 ~ if let Term::Lam{nam: _, typ: _, bod: ref e_bod} = **i_bod { // TODO: handle typ [INFO] [stdout] 191 + match **e_bod { [INFO] [stdout] 192 + Term::App{fun: ref app_fun, arg: ref app_arg} => { [INFO] [stdout] 193 + match **app_fun { [INFO] [stdout] 194 + Term::Var{nam: ref var_nam} => { [INFO] [stdout] 195 + if var_nam == o_nam { [INFO] [stdout] 196 + v.extend_from_slice(b"0"); [INFO] [stdout] 197 + format_binary_output(app_arg, v); [INFO] [stdout] 198 + } else if var_nam == i_nam { [INFO] [stdout] 199 + v.extend_from_slice(b"1"); [INFO] [stdout] 200 + format_binary_output(app_arg, v); [INFO] [stdout] 201 + } [INFO] [stdout] 202 + }, [INFO] [stdout] 203 + _ => {} [INFO] [stdout] 204 + } [INFO] [stdout] 205 + }, [INFO] [stdout] 206 + _ => {} [INFO] [stdout] 207 + } [INFO] [stdout] 208 + } [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/term/views.rs:192:17 [INFO] [stdout] | [INFO] [stdout] 192 | / match **e_bod { [INFO] [stdout] 193 | | Term::App{fun: ref app_fun, arg: ref app_arg} => { [INFO] [stdout] 194 | | match **app_fun { [INFO] [stdout] 195 | | Term::Var{nam: ref var_nam} => { [INFO] [stdout] ... | [INFO] [stdout] 207 | | _ => {} [INFO] [stdout] 208 | | } [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] 192 ~ if let Term::App{fun: ref app_fun, arg: ref app_arg} = **e_bod { [INFO] [stdout] 193 + match **app_fun { [INFO] [stdout] 194 + Term::Var{nam: ref var_nam} => { [INFO] [stdout] 195 + if var_nam == o_nam { [INFO] [stdout] 196 + v.extend_from_slice(b"0"); [INFO] [stdout] 197 + format_binary_output(app_arg, v); [INFO] [stdout] 198 + } else if var_nam == i_nam { [INFO] [stdout] 199 + v.extend_from_slice(b"1"); [INFO] [stdout] 200 + format_binary_output(app_arg, v); [INFO] [stdout] 201 + } [INFO] [stdout] 202 + }, [INFO] [stdout] 203 + _ => {} [INFO] [stdout] 204 + } [INFO] [stdout] 205 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: dereferencing a struct pattern where every field's pattern takes a reference [INFO] [stdout] --> src/term/views.rs:17:7 [INFO] [stdout] | [INFO] [stdout] 17 | &Lam{ref nam, ref typ, ref bod} => { [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] 17 - &Lam{ref nam, ref typ, ref bod} => { [INFO] [stdout] 17 + Lam{nam, typ, bod} => { [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/term/views.rs:194:21 [INFO] [stdout] | [INFO] [stdout] 194 | / match **app_fun { [INFO] [stdout] 195 | | Term::Var{nam: ref var_nam} => { [INFO] [stdout] 196 | | if var_nam == o_nam { [INFO] [stdout] 197 | | v.extend_from_slice(b"0"); [INFO] [stdout] ... | [INFO] [stdout] 204 | | _ => {} [INFO] [stdout] 205 | | } [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] 194 ~ if let Term::Var{nam: ref var_nam} = **app_fun { [INFO] [stdout] 195 + if var_nam == o_nam { [INFO] [stdout] 196 + v.extend_from_slice(b"0"); [INFO] [stdout] 197 + format_binary_output(app_arg, v); [INFO] [stdout] 198 + } else if var_nam == i_nam { [INFO] [stdout] 199 + v.extend_from_slice(b"1"); [INFO] [stdout] 200 + format_binary_output(app_arg, v); [INFO] [stdout] 201 + } [INFO] [stdout] 202 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: dereferencing a struct pattern where every field's pattern takes a reference [INFO] [stdout] --> src/term/views.rs:32:7 [INFO] [stdout] | [INFO] [stdout] 32 | &Var{ref nam} => { [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] 32 - &Var{ref nam} => { [INFO] [stdout] 32 + Var{nam} => { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `i` is only used to index `scope` [INFO] [stdout] --> src/term/views.rs:34:18 [INFO] [stdout] | [INFO] [stdout] 34 | for i in 0..scope.len() { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stdout] help: consider using an iterator [INFO] [stdout] | [INFO] [stdout] 34 - for i in 0..scope.len() { [INFO] [stdout] 34 + for in &scope { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `i` is only used to index `s` [INFO] [stdout] --> src/term/views.rs:227:12 [INFO] [stdout] | [INFO] [stdout] 227 | for i in 0..8 { [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stdout] help: consider using an iterator [INFO] [stdout] | [INFO] [stdout] 227 - for i in 0..8 { [INFO] [stdout] 227 + for in s.iter().take(8) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of `.is_multiple_of()` [INFO] [stdout] --> src/term/views.rs:238:28 [INFO] [stdout] | [INFO] [stdout] 238 | v.extend_from_slice(if c % 2 == 0 { b"0" } else { b"1" }); [INFO] [stdout] | ^^^^^^^^^^ help: replace with: `c.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: manual implementation of an assign operation [INFO] [stdout] --> src/term/views.rs:239:5 [INFO] [stdout] | [INFO] [stdout] 239 | c = c / 2; [INFO] [stdout] | ^^^^^^^^^ help: replace it with: `c /= 2` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stdout] = note: `#[warn(clippy::assign_op_pattern)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `i` is only used to index `a` [INFO] [stdout] --> src/term/views.rs:257:12 [INFO] [stdout] | [INFO] [stdout] 257 | for i in 0..a.len() { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stdout] help: consider using an iterator [INFO] [stdout] | [INFO] [stdout] 257 - for i in 0..a.len() { [INFO] [stdout] 257 + for in &a { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/term/views.rs:113:12 [INFO] [stdout] | [INFO] [stdout] 113 | match if s.len() > 0 { s[0] } else { b' ' } { [INFO] [stdout] | ^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!s.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: returning the result of a `let` binding from a block [INFO] [stdout] --> src/term/views.rs:135:7 [INFO] [stdout] | [INFO] [stdout] 130 | / let o_lam = Term::Lam{ [INFO] [stdout] 131 | | nam: nam, [INFO] [stdout] 132 | | typ: None, // TODO [INFO] [stdout] 133 | | bod: Box::new(i_lam) [INFO] [stdout] 134 | | }; [INFO] [stdout] | |________- unnecessary `let` binding [INFO] [stdout] 135 | o_lam [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] help: return the expression directly [INFO] [stdout] | [INFO] [stdout] 130 ~ [INFO] [stdout] 131 ~ Term::Lam{ [INFO] [stdout] 132 + nam: nam, [INFO] [stdout] 133 + typ: None, // TODO [INFO] [stdout] 134 + bod: Box::new(i_lam) [INFO] [stdout] 135 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/term/mod.rs:54:3 [INFO] [stdout] | [INFO] [stdout] 54 | return name; [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] 54 - return name; [INFO] [stdout] 54 + name [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of an assign operation [INFO] [stdout] --> src/term/mod.rs:50:5 [INFO] [stdout] | [INFO] [stdout] 50 | idx = idx - 1; [INFO] [stdout] | ^^^^^^^^^^^^^ help: replace it with: `idx -= 1` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: returning the result of a `let` binding from a block [INFO] [stdout] --> src/term/views.rs:158:7 [INFO] [stdout] | [INFO] [stdout] 153 | / let o_lam = Term::Lam{ [INFO] [stdout] 154 | | nam: b"-".to_vec(), [INFO] [stdout] 155 | | typ: None, // TODO [INFO] [stdout] 156 | | bod: Box::new(i_lam) [INFO] [stdout] 157 | | }; [INFO] [stdout] | |________- unnecessary `let` binding [INFO] [stdout] 158 | o_lam [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] help: return the expression directly [INFO] [stdout] | [INFO] [stdout] 153 ~ [INFO] [stdout] 154 ~ Term::Lam{ [INFO] [stdout] 155 + nam: b"-".to_vec(), [INFO] [stdout] 156 + typ: None, // TODO [INFO] [stdout] 157 + bod: Box::new(i_lam) [INFO] [stdout] 158 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of an assign operation [INFO] [stdout] --> src/term/mod.rs:52:5 [INFO] [stdout] | [INFO] [stdout] 52 | idx = idx / 26; [INFO] [stdout] | ^^^^^^^^^^^^^^ help: replace it with: `idx /= 26` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/term/mod.rs:63:3 [INFO] [stdout] | [INFO] [stdout] 63 | return idx; [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] 63 - return idx; [INFO] [stdout] 63 + idx [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> src/term/mod.rs:58:29 [INFO] [stdout] | [INFO] [stdout] 58 | pub fn name_to_index(name : &Vec) -> u32 { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] = note: `#[warn(clippy::ptr_arg)]` on by default [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 58 - pub fn name_to_index(name : &Vec) -> u32 { [INFO] [stdout] 58 + pub fn name_to_index(name : &[Chr]) -> u32 { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: returning the result of a `let` binding from a block [INFO] [stdout] --> src/term/views.rs:178:7 [INFO] [stdout] | [INFO] [stdout] 173 | / let o_lam = Term::Lam{ [INFO] [stdout] 174 | | nam: b"-".to_vec(), [INFO] [stdout] 175 | | typ: None, // TODO [INFO] [stdout] 176 | | bod: Box::new(i_lam) [INFO] [stdout] 177 | | }; [INFO] [stdout] | |________- unnecessary `let` binding [INFO] [stdout] 178 | o_lam [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] help: return the expression directly [INFO] [stdout] | [INFO] [stdout] 173 ~ [INFO] [stdout] 174 ~ Term::Lam{ [INFO] [stdout] 175 + nam: b"-".to_vec(), [INFO] [stdout] 176 + typ: None, // TODO [INFO] [stdout] 177 + bod: Box::new(i_lam) [INFO] [stdout] 178 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> src/term/mod.rs:81:26 [INFO] [stdout] | [INFO] [stdout] 81 | pub fn namespace(space : &Vec, idx : u32, var : &Vec) -> Vec { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 81 ~ pub fn namespace(space : &[u8], idx : u32, var : &Vec) -> Vec { [INFO] [stdout] 82 | if var != b"*" { [INFO] [stdout] 83 ~ let mut nam = space.to_owned(); [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/term/views.rs:186:5 [INFO] [stdout] | [INFO] [stdout] 186 | / match t { [INFO] [stdout] 187 | | Term::Lam{nam: ref o_nam, typ: _, bod: ref o_bod} => { // TODO: handle typ [INFO] [stdout] 188 | | match **o_bod { [INFO] [stdout] 189 | | Term::Lam{nam: ref i_nam, typ: _, bod: ref i_bod} => { // TODO: handle typ [INFO] [stdout] ... | [INFO] [stdout] 216 | | _ => {} [INFO] [stdout] 217 | | } [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] 186 ~ if let Term::Lam{nam: ref o_nam, typ: _, bod: ref o_bod} = t { // TODO: handle typ [INFO] [stdout] 187 + match **o_bod { [INFO] [stdout] 188 + Term::Lam{nam: ref i_nam, typ: _, bod: ref i_bod} => { // TODO: handle typ [INFO] [stdout] 189 + match **i_bod { [INFO] [stdout] 190 + Term::Lam{nam: _, typ: _, bod: ref e_bod} => { // TODO: handle typ [INFO] [stdout] 191 + match **e_bod { [INFO] [stdout] 192 + Term::App{fun: ref app_fun, arg: ref app_arg} => { [INFO] [stdout] 193 + match **app_fun { [INFO] [stdout] 194 + Term::Var{nam: ref var_nam} => { [INFO] [stdout] 195 + if var_nam == o_nam { [INFO] [stdout] 196 + v.extend_from_slice(b"0"); [INFO] [stdout] 197 + format_binary_output(app_arg, v); [INFO] [stdout] 198 + } else if var_nam == i_nam { [INFO] [stdout] 199 + v.extend_from_slice(b"1"); [INFO] [stdout] 200 + format_binary_output(app_arg, v); [INFO] [stdout] 201 + } [INFO] [stdout] 202 + }, [INFO] [stdout] 203 + _ => {} [INFO] [stdout] 204 + } [INFO] [stdout] 205 + }, [INFO] [stdout] 206 + _ => {} [INFO] [stdout] 207 + } [INFO] [stdout] 208 + }, [INFO] [stdout] 209 + _ => {} [INFO] [stdout] 210 + } [INFO] [stdout] 211 + }, [INFO] [stdout] 212 + _ => {} [INFO] [stdout] 213 + } [INFO] [stdout] 214 + } [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/term/views.rs:188:9 [INFO] [stdout] | [INFO] [stdout] 188 | / match **o_bod { [INFO] [stdout] 189 | | Term::Lam{nam: ref i_nam, typ: _, bod: ref i_bod} => { // TODO: handle typ [INFO] [stdout] 190 | | match **i_bod { [INFO] [stdout] 191 | | Term::Lam{nam: _, typ: _, bod: ref e_bod} => { // TODO: handle typ [INFO] [stdout] ... | [INFO] [stdout] 213 | | _ => {} [INFO] [stdout] 214 | | } [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] 188 ~ if let Term::Lam{nam: ref i_nam, typ: _, bod: ref i_bod} = **o_bod { // TODO: handle typ [INFO] [stdout] 189 + match **i_bod { [INFO] [stdout] 190 + Term::Lam{nam: _, typ: _, bod: ref e_bod} => { // TODO: handle typ [INFO] [stdout] 191 + match **e_bod { [INFO] [stdout] 192 + Term::App{fun: ref app_fun, arg: ref app_arg} => { [INFO] [stdout] 193 + match **app_fun { [INFO] [stdout] 194 + Term::Var{nam: ref var_nam} => { [INFO] [stdout] 195 + if var_nam == o_nam { [INFO] [stdout] 196 + v.extend_from_slice(b"0"); [INFO] [stdout] 197 + format_binary_output(app_arg, v); [INFO] [stdout] 198 + } else if var_nam == i_nam { [INFO] [stdout] 199 + v.extend_from_slice(b"1"); [INFO] [stdout] 200 + format_binary_output(app_arg, v); [INFO] [stdout] 201 + } [INFO] [stdout] 202 + }, [INFO] [stdout] 203 + _ => {} [INFO] [stdout] 204 + } [INFO] [stdout] 205 + }, [INFO] [stdout] 206 + _ => {} [INFO] [stdout] 207 + } [INFO] [stdout] 208 + }, [INFO] [stdout] 209 + _ => {} [INFO] [stdout] 210 + } [INFO] [stdout] 211 + } [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/term/views.rs:190:13 [INFO] [stdout] | [INFO] [stdout] 190 | / match **i_bod { [INFO] [stdout] 191 | | Term::Lam{nam: _, typ: _, bod: ref e_bod} => { // TODO: handle typ [INFO] [stdout] 192 | | match **e_bod { [INFO] [stdout] 193 | | Term::App{fun: ref app_fun, arg: ref app_arg} => { [INFO] [stdout] ... | [INFO] [stdout] 210 | | _ => {} [INFO] [stdout] 211 | | } [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] 190 ~ if let Term::Lam{nam: _, typ: _, bod: ref e_bod} = **i_bod { // TODO: handle typ [INFO] [stdout] 191 + match **e_bod { [INFO] [stdout] 192 + Term::App{fun: ref app_fun, arg: ref app_arg} => { [INFO] [stdout] 193 + match **app_fun { [INFO] [stdout] 194 + Term::Var{nam: ref var_nam} => { [INFO] [stdout] 195 + if var_nam == o_nam { [INFO] [stdout] 196 + v.extend_from_slice(b"0"); [INFO] [stdout] 197 + format_binary_output(app_arg, v); [INFO] [stdout] 198 + } else if var_nam == i_nam { [INFO] [stdout] 199 + v.extend_from_slice(b"1"); [INFO] [stdout] 200 + format_binary_output(app_arg, v); [INFO] [stdout] 201 + } [INFO] [stdout] 202 + }, [INFO] [stdout] 203 + _ => {} [INFO] [stdout] 204 + } [INFO] [stdout] 205 + }, [INFO] [stdout] 206 + _ => {} [INFO] [stdout] 207 + } [INFO] [stdout] 208 + } [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/term/views.rs:192:17 [INFO] [stdout] | [INFO] [stdout] 192 | / match **e_bod { [INFO] [stdout] 193 | | Term::App{fun: ref app_fun, arg: ref app_arg} => { [INFO] [stdout] 194 | | match **app_fun { [INFO] [stdout] 195 | | Term::Var{nam: ref var_nam} => { [INFO] [stdout] ... | [INFO] [stdout] 207 | | _ => {} [INFO] [stdout] 208 | | } [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] 192 ~ if let Term::App{fun: ref app_fun, arg: ref app_arg} = **e_bod { [INFO] [stdout] 193 + match **app_fun { [INFO] [stdout] 194 + Term::Var{nam: ref var_nam} => { [INFO] [stdout] 195 + if var_nam == o_nam { [INFO] [stdout] 196 + v.extend_from_slice(b"0"); [INFO] [stdout] 197 + format_binary_output(app_arg, v); [INFO] [stdout] 198 + } else if var_nam == i_nam { [INFO] [stdout] 199 + v.extend_from_slice(b"1"); [INFO] [stdout] 200 + format_binary_output(app_arg, v); [INFO] [stdout] 201 + } [INFO] [stdout] 202 + }, [INFO] [stdout] 203 + _ => {} [INFO] [stdout] 204 + } [INFO] [stdout] 205 + } [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/term/views.rs:194:21 [INFO] [stdout] | [INFO] [stdout] 194 | / match **app_fun { [INFO] [stdout] 195 | | Term::Var{nam: ref var_nam} => { [INFO] [stdout] 196 | | if var_nam == o_nam { [INFO] [stdout] 197 | | v.extend_from_slice(b"0"); [INFO] [stdout] ... | [INFO] [stdout] 204 | | _ => {} [INFO] [stdout] 205 | | } [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] 194 ~ if let Term::Var{nam: ref var_nam} = **app_fun { [INFO] [stdout] 195 + if var_nam == o_nam { [INFO] [stdout] 196 + v.extend_from_slice(b"0"); [INFO] [stdout] 197 + format_binary_output(app_arg, v); [INFO] [stdout] 198 + } else if var_nam == i_nam { [INFO] [stdout] 199 + v.extend_from_slice(b"1"); [INFO] [stdout] 200 + format_binary_output(app_arg, v); [INFO] [stdout] 201 + } [INFO] [stdout] 202 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/term/mod.rs:138:56 [INFO] [stdout] | [INFO] [stdout] 138 | write!(f, "{}", String::from_utf8_lossy(&to_string(&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: the loop variable `i` is only used to index `s` [INFO] [stdout] --> src/term/views.rs:227:12 [INFO] [stdout] | [INFO] [stdout] 227 | for i in 0..8 { [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stdout] help: consider using an iterator [INFO] [stdout] | [INFO] [stdout] 227 - for i in 0..8 { [INFO] [stdout] 227 + for in s.iter().take(8) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/term/mod.rs:144:31 [INFO] [stdout] | [INFO] [stdout] 144 | let mut net : INet = to_net(&term); [INFO] [stdout] | ^^^^^ help: change this to: `term` [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/term/mod.rs:150:24 [INFO] [stdout] | [INFO] [stdout] 150 | let mut net = to_net(&term); [INFO] [stdout] | ^^^^^ help: change this to: `term` [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: manual implementation of `.is_multiple_of()` [INFO] [stdout] --> src/term/views.rs:238:28 [INFO] [stdout] | [INFO] [stdout] 238 | v.extend_from_slice(if c % 2 == 0 { b"0" } else { b"1" }); [INFO] [stdout] | ^^^^^^^^^^ help: replace with: `c.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: manual implementation of an assign operation [INFO] [stdout] --> src/term/views.rs:239:5 [INFO] [stdout] | [INFO] [stdout] 239 | c = c / 2; [INFO] [stdout] | ^^^^^^^^^ help: replace it with: `c /= 2` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stdout] = note: `#[warn(clippy::assign_op_pattern)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/inet/mod.rs:49:3 [INFO] [stdout] | [INFO] [stdout] 49 | return node; [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] 49 - return node; [INFO] [stdout] 49 + node [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `i` is only used to index `a` [INFO] [stdout] --> src/term/views.rs:257:12 [INFO] [stdout] | [INFO] [stdout] 257 | for i in 0..a.len() { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stdout] help: consider using an iterator [INFO] [stdout] | [INFO] [stdout] 257 - for i in 0..a.len() { [INFO] [stdout] 257 + for in &a { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: accessing first element with `path.get(0)` [INFO] [stdout] --> src/inet/mod.rs:94:14 [INFO] [stdout] | [INFO] [stdout] 94 | return path.get(0).cloned().unwrap_or(ROOT); // path[0] ? [INFO] [stdout] | ^^^^^^^^^^^ help: try: `path.first()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_first [INFO] [stdout] = note: `#[warn(clippy::get_first)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/term/mod.rs:54:3 [INFO] [stdout] | [INFO] [stdout] 54 | return name; [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] 54 - return name; [INFO] [stdout] 54 + name [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of an assign operation [INFO] [stdout] --> src/term/mod.rs:50:5 [INFO] [stdout] | [INFO] [stdout] 50 | idx = idx - 1; [INFO] [stdout] | ^^^^^^^^^^^^^ help: replace it with: `idx -= 1` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of an assign operation [INFO] [stdout] --> src/term/mod.rs:52:5 [INFO] [stdout] | [INFO] [stdout] 52 | idx = idx / 26; [INFO] [stdout] | ^^^^^^^^^^^^^^ help: replace it with: `idx /= 26` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/term/mod.rs:63:3 [INFO] [stdout] | [INFO] [stdout] 63 | return idx; [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] 63 - return idx; [INFO] [stdout] 63 + idx [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> src/term/mod.rs:58:29 [INFO] [stdout] | [INFO] [stdout] 58 | pub fn name_to_index(name : &Vec) -> u32 { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] = note: `#[warn(clippy::ptr_arg)]` on by default [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 58 - pub fn name_to_index(name : &Vec) -> u32 { [INFO] [stdout] 58 + pub fn name_to_index(name : &[Chr]) -> u32 { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> src/term/mod.rs:81:26 [INFO] [stdout] | [INFO] [stdout] 81 | pub fn namespace(space : &Vec, idx : u32, var : &Vec) -> Vec { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 81 ~ pub fn namespace(space : &[u8], idx : u32, var : &Vec) -> Vec { [INFO] [stdout] 82 | if var != b"*" { [INFO] [stdout] 83 ~ let mut nam = space.to_owned(); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: call to `.clone()` on a reference in this situation does nothing [INFO] [stdout] --> src/term/syntax.rs:160:33 [INFO] [stdout] | [INFO] [stdout] 160 | let mut name = nam.clone().to_vec(); [INFO] [stdout] | ^^^^^^^^ help: remove this redundant call [INFO] [stdout] | [INFO] [stdout] = note: the type `[u8]` does not implement `Clone`, so calling `clone` on `&[u8]` copies the reference, which does not do anything and can be removed [INFO] [stdout] = note: `#[warn(noop_method_call)]` 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/term/mod.rs:138:56 [INFO] [stdout] | [INFO] [stdout] 138 | write!(f, "{}", String::from_utf8_lossy(&to_string(&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/term/mod.rs:144:31 [INFO] [stdout] | [INFO] [stdout] 144 | let mut net : INet = to_net(&term); [INFO] [stdout] | ^^^^^ help: change this to: `term` [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/term/mod.rs:150:24 [INFO] [stdout] | [INFO] [stdout] 150 | let mut net = to_net(&term); [INFO] [stdout] | ^^^^^ help: change this to: `term` [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: unneeded `return` statement [INFO] [stdout] --> src/inet/mod.rs:49:3 [INFO] [stdout] | [INFO] [stdout] 49 | return node; [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] 49 - return node; [INFO] [stdout] 49 + node [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: accessing first element with `path.get(0)` [INFO] [stdout] --> src/inet/mod.rs:94:14 [INFO] [stdout] | [INFO] [stdout] 94 | return path.get(0).cloned().unwrap_or(ROOT); // path[0] ? [INFO] [stdout] | ^^^^^^^^^^^ help: try: `path.first()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_first [INFO] [stdout] = note: `#[warn(clippy::get_first)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: call to `.clone()` on a reference in this situation does nothing [INFO] [stdout] --> src/term/syntax.rs:160:33 [INFO] [stdout] | [INFO] [stdout] 160 | let mut name = nam.clone().to_vec(); [INFO] [stdout] | ^^^^^^^^ help: remove this redundant call [INFO] [stdout] | [INFO] [stdout] = note: the type `[u8]` does not implement `Clone`, so calling `clone` on `&[u8]` copies the reference, which does not do anything and can be removed [INFO] [stdout] = note: `#[warn(noop_method_call)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/term/conversion.rs:207:13 [INFO] [stdout] | [INFO] [stdout] 207 | nam: nam, [INFO] [stdout] | ^^^^^^^^ help: replace it with: `nam` [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: redundant field names in struct initialization [INFO] [stdout] --> src/term/conversion.rs:208:13 [INFO] [stdout] | [INFO] [stdout] 208 | typ: typ, [INFO] [stdout] | ^^^^^^^^ help: replace it with: `typ` [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: redundant field names in struct initialization [INFO] [stdout] --> src/term/views.rs:131:9 [INFO] [stdout] | [INFO] [stdout] 131 | nam: nam, [INFO] [stdout] | ^^^^^^^^ help: replace it with: `nam` [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: redundant field names in struct initialization [INFO] [stdout] --> src/term/views.rs:149:9 [INFO] [stdout] | [INFO] [stdout] 149 | nam: nam, [INFO] [stdout] | ^^^^^^^^ help: replace it with: `nam` [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: redundant field names in struct initialization [INFO] [stdout] --> src/term/views.rs:164:9 [INFO] [stdout] | [INFO] [stdout] 164 | nam: nam, [INFO] [stdout] | ^^^^^^^^ help: replace it with: `nam` [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: redundant field names in struct initialization [INFO] [stdout] --> src/term/conversion.rs:207:13 [INFO] [stdout] | [INFO] [stdout] 207 | nam: nam, [INFO] [stdout] | ^^^^^^^^ help: replace it with: `nam` [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: redundant field names in struct initialization [INFO] [stdout] --> src/term/conversion.rs:208:13 [INFO] [stdout] | [INFO] [stdout] 208 | typ: typ, [INFO] [stdout] | ^^^^^^^^ help: replace it with: `typ` [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: redundant field names in struct initialization [INFO] [stdout] --> src/term/views.rs:131:9 [INFO] [stdout] | [INFO] [stdout] 131 | nam: nam, [INFO] [stdout] | ^^^^^^^^ help: replace it with: `nam` [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: redundant field names in struct initialization [INFO] [stdout] --> src/term/views.rs:149:9 [INFO] [stdout] | [INFO] [stdout] 149 | nam: nam, [INFO] [stdout] | ^^^^^^^^ help: replace it with: `nam` [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: redundant field names in struct initialization [INFO] [stdout] --> src/term/views.rs:164:9 [INFO] [stdout] | [INFO] [stdout] 164 | nam: nam, [INFO] [stdout] | ^^^^^^^^ help: replace it with: `nam` [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: dereferencing a struct pattern where every field's pattern takes a reference [INFO] [stdout] --> src/term/conversion.rs:34:7 [INFO] [stdout] | [INFO] [stdout] 34 | &Lam { ref nam, ref typ, ref bod } => { [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] 34 - &Lam { ref nam, ref typ, ref bod } => { [INFO] [stdout] 34 + Lam { nam, typ, bod } => { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: dereferencing a struct pattern where every field's pattern takes a reference [INFO] [stdout] --> src/term/conversion.rs:58:7 [INFO] [stdout] | [INFO] [stdout] 58 | &App{ref fun, ref arg} => { [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 - &App{ref fun, ref arg} => { [INFO] [stdout] 58 + App{fun, arg} => { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: dereferencing a struct pattern where every field's pattern takes a reference [INFO] [stdout] --> src/term/conversion.rs:70:7 [INFO] [stdout] | [INFO] [stdout] 70 | &Ann{ref val, ref typ} => { [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] 70 - &Ann{ref val, ref typ} => { [INFO] [stdout] 70 + Ann{val, typ} => { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/term/conversion.rs:110:36 [INFO] [stdout] | [INFO] [stdout] 110 | let val = encode_term(net, &val, port(dup, 0), scope, vars); [INFO] [stdout] | ^^^^ help: change this to: `val` [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/term/conversion.rs:112:26 [INFO] [stdout] | [INFO] [stdout] 112 | encode_term(net, &nxt, up, scope, vars) [INFO] [stdout] | ^^^^ help: change this to: `nxt` [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/term/conversion.rs:132:36 [INFO] [stdout] | [INFO] [stdout] 132 | let main = encode_term(&mut net, &term, ROOT, &mut scope, &mut vars); [INFO] [stdout] | ^^^^^ help: change this to: `term` [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 loop variable `i` is only used to index `vars` [INFO] [stdout] --> src/term/conversion.rs:135:12 [INFO] [stdout] | [INFO] [stdout] 135 | for i in 0..vars.len() { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stdout] = note: `#[warn(clippy::needless_range_loop)]` on by default [INFO] [stdout] help: consider using an iterator [INFO] [stdout] | [INFO] [stdout] 135 - for i in 0..vars.len() { [INFO] [stdout] 135 + for in &vars { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: returning the result of a `let` binding from a block [INFO] [stdout] --> src/term/conversion.rs:211:11 [INFO] [stdout] | [INFO] [stdout] 206 | / let mut lam = Lam { [INFO] [stdout] 207 | | nam: nam, [INFO] [stdout] 208 | | typ: typ, [INFO] [stdout] 209 | | bod: Box::new(bod), [INFO] [stdout] 210 | | }; [INFO] [stdout] | |____________- unnecessary `let` binding [INFO] [stdout] 211 | lam [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] 206 ~ [INFO] [stdout] 207 ~ Lam { [INFO] [stdout] 208 + nam: nam, [INFO] [stdout] 209 + typ: typ, [INFO] [stdout] 210 + bod: Box::new(bod), [INFO] [stdout] 211 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: returning the result of a `let` binding from a block [INFO] [stdout] --> src/term/conversion.rs:244:11 [INFO] [stdout] | [INFO] [stdout] 243 | let val = read_term(net, prt, var_name, dups_vec, dups_set); [INFO] [stdout] | ------------------------------------------------------------ unnecessary `let` binding [INFO] [stdout] 244 | val [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] help: return the expression directly [INFO] [stdout] | [INFO] [stdout] 243 ~ [INFO] [stdout] 244 ~ read_term(net, prt, var_name, dups_vec, dups_set) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/term/conversion.rs:290:9 [INFO] [stdout] | [INFO] [stdout] 290 | while dups_vec.len() > 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!dups_vec.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 boolean expression can be simplified [INFO] [stdout] --> src/term/syntax.rs:17:3 [INFO] [stdout] | [INFO] [stdout] 17 | / false [INFO] [stdout] 18 | | || (c >= b'A' && c <= b'Z') [INFO] [stdout] 19 | | || (c >= b'a' && c <= b'z') [INFO] [stdout] 20 | | || (c >= b'0' && c <= b'9') [INFO] [stdout] | |_____________________________^ help: try: `c >= b'A' && c <= b'Z' || c >= b'a' && c <= b'z' || c >= b'0' && c <= b'9'` [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/term/syntax.rs:17:3 [INFO] [stdout] | [INFO] [stdout] 17 | / false [INFO] [stdout] 18 | | || (c >= b'A' && c <= b'Z') [INFO] [stdout] 19 | | || (c >= b'a' && c <= b'z') [INFO] [stdout] | |_____________________________^ help: try: `c >= b'A' && c <= b'Z' || c >= b'a' && c <= b'z'` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/term/syntax.rs:17:3 [INFO] [stdout] | [INFO] [stdout] 17 | / false [INFO] [stdout] 18 | | || (c >= b'A' && c <= b'Z') [INFO] [stdout] | |_____________________________^ help: try: `c >= b'A' && c <= b'Z'` [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: manual `RangeInclusive::contains` implementation [INFO] [stdout] --> src/term/syntax.rs:18:6 [INFO] [stdout] | [INFO] [stdout] 18 | || (c >= b'A' && c <= b'Z') [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: use: `(b'A'..=b'Z').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: manual `RangeInclusive::contains` implementation [INFO] [stdout] --> src/term/syntax.rs:19:6 [INFO] [stdout] | [INFO] [stdout] 19 | || (c >= b'a' && c <= b'z') [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: use: `(b'a'..=b'z').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] [INFO] [stdout] [INFO] [stdout] warning: manual `RangeInclusive::contains` implementation [INFO] [stdout] --> src/term/syntax.rs:20:6 [INFO] [stdout] | [INFO] [stdout] 20 | || (c >= b'0' && c <= b'9') [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: use: `(b'0'..=b'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] [INFO] [stdout] [INFO] [stdout] warning: the following explicit lifetimes could be elided: 'a [INFO] [stdout] --> src/term/syntax.rs:178:20 [INFO] [stdout] | [INFO] [stdout] 178 | pub fn from_string<'a>(code : &'a Str) -> Term { [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] 178 - pub fn from_string<'a>(code : &'a Str) -> Term { [INFO] [stdout] 178 + pub fn from_string(code : &Str) -> Term { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/term/syntax.rs:252:3 [INFO] [stdout] | [INFO] [stdout] 252 | return code; [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] 252 - return code; [INFO] [stdout] 252 + code [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you don't need to add `&` to all patterns [INFO] [stdout] --> src/term/syntax.rs:187:5 [INFO] [stdout] | [INFO] [stdout] 187 | / match term { [INFO] [stdout] 188 | | &Lam{ref nam, ref typ, ref bod} => { [INFO] [stdout] 189 | | code.extend_from_slice("λ".as_bytes()); [INFO] [stdout] 190 | | if let Some(ref t) = typ { [INFO] [stdout] ... | [INFO] [stdout] 247 | | }, [INFO] [stdout] 248 | | } [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] 187 ~ match *term { [INFO] [stdout] 188 ~ Lam{ref nam, ref typ, ref bod} => { [INFO] [stdout] 189 | code.extend_from_slice("λ".as_bytes()); [INFO] [stdout] ... [INFO] [stdout] 201 | }, [INFO] [stdout] 202 ~ App{ref fun, ref arg} => { [INFO] [stdout] 203 | code.extend_from_slice(b"("); [INFO] [stdout] ... [INFO] [stdout] 208 | }, [INFO] [stdout] 209 ~ Ann{ref val, ref typ} => { [INFO] [stdout] 210 | code.extend_from_slice(b"<"); [INFO] [stdout] ... [INFO] [stdout] 215 | }, [INFO] [stdout] 216 ~ Sup{tag, ref fst, ref snd} => { [INFO] [stdout] 217 | code.extend_from_slice(b"["); [INFO] [stdout] ... [INFO] [stdout] 226 | }, [INFO] [stdout] 227 ~ Dup{tag, ref fst, ref snd, ref val, ref nxt} => { [INFO] [stdout] 228 | code.extend_from_slice(b"dup "); [INFO] [stdout] ... [INFO] [stdout] 241 | }, [INFO] [stdout] 242 ~ Set => { [INFO] [stdout] 243 | code.extend_from_slice(b"*"); [INFO] [stdout] 244 | }, [INFO] [stdout] 245 ~ Var{ref nam} => { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: dereferencing a struct pattern where every field's pattern takes a reference [INFO] [stdout] --> src/term/syntax.rs:188:7 [INFO] [stdout] | [INFO] [stdout] 188 | &Lam{ref nam, ref typ, ref bod} => { [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] 188 - &Lam{ref nam, ref typ, ref bod} => { [INFO] [stdout] 188 + Lam{nam, typ, bod} => { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/term/syntax.rs:194:32 [INFO] [stdout] | [INFO] [stdout] 194 | stringify_term(code, &t); [INFO] [stdout] | ^^ help: change this to: `t` [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/term/syntax.rs:200:30 [INFO] [stdout] | [INFO] [stdout] 200 | stringify_term(code, &bod); [INFO] [stdout] | ^^^^ help: change this to: `bod` [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 struct pattern where every field's pattern takes a reference [INFO] [stdout] --> src/term/syntax.rs:202:7 [INFO] [stdout] | [INFO] [stdout] 202 | &App{ref fun, ref arg} => { [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] 202 - &App{ref fun, ref arg} => { [INFO] [stdout] 202 + App{fun, arg} => { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: dereferencing a struct pattern where every field's pattern takes a reference [INFO] [stdout] --> src/term/conversion.rs:34:7 [INFO] [stdout] | [INFO] [stdout] 34 | &Lam { ref nam, ref typ, ref bod } => { [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] 34 - &Lam { ref nam, ref typ, ref bod } => { [INFO] [stdout] 34 + Lam { nam, typ, bod } => { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: dereferencing a struct pattern where every field's pattern takes a reference [INFO] [stdout] --> src/term/conversion.rs:58:7 [INFO] [stdout] | [INFO] [stdout] 58 | &App{ref fun, ref arg} => { [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 - &App{ref fun, ref arg} => { [INFO] [stdout] 58 + App{fun, arg} => { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: dereferencing a struct pattern where every field's pattern takes a reference [INFO] [stdout] --> src/term/conversion.rs:70:7 [INFO] [stdout] | [INFO] [stdout] 70 | &Ann{ref val, ref typ} => { [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] 70 - &Ann{ref val, ref typ} => { [INFO] [stdout] 70 + Ann{val, typ} => { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/term/syntax.rs:204:30 [INFO] [stdout] | [INFO] [stdout] 204 | stringify_term(code, &fun); [INFO] [stdout] | ^^^^ help: change this to: `fun` [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/term/syntax.rs:206:30 [INFO] [stdout] | [INFO] [stdout] 206 | stringify_term(code, &arg); [INFO] [stdout] | ^^^^ help: change this to: `arg` [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 struct pattern where every field's pattern takes a reference [INFO] [stdout] --> src/term/syntax.rs:209:7 [INFO] [stdout] | [INFO] [stdout] 209 | &Ann{ref val, ref typ} => { [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] 209 - &Ann{ref val, ref typ} => { [INFO] [stdout] 209 + Ann{val, typ} => { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/term/syntax.rs:211:30 [INFO] [stdout] | [INFO] [stdout] 211 | stringify_term(code, &val); [INFO] [stdout] | ^^^^ help: change this to: `val` [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/term/syntax.rs:213:30 [INFO] [stdout] | [INFO] [stdout] 213 | stringify_term(code, &typ); [INFO] [stdout] | ^^^^ help: change this to: `typ` [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/term/syntax.rs:218:30 [INFO] [stdout] | [INFO] [stdout] 218 | stringify_term(code, &fst); [INFO] [stdout] | ^^^^ help: change this to: `fst` [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/term/syntax.rs:220:30 [INFO] [stdout] | [INFO] [stdout] 220 | stringify_term(code, &snd); [INFO] [stdout] | ^^^^ help: change this to: `snd` [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/term/conversion.rs:110:36 [INFO] [stdout] | [INFO] [stdout] 110 | let val = encode_term(net, &val, port(dup, 0), scope, vars); [INFO] [stdout] | ^^^^ help: change this to: `val` [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/term/conversion.rs:112:26 [INFO] [stdout] | [INFO] [stdout] 112 | encode_term(net, &nxt, up, scope, vars) [INFO] [stdout] | ^^^^ help: change this to: `nxt` [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/term/conversion.rs:132:36 [INFO] [stdout] | [INFO] [stdout] 132 | let main = encode_term(&mut net, &term, ROOT, &mut scope, &mut vars); [INFO] [stdout] | ^^^^^ help: change this to: `term` [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 loop variable `i` is only used to index `vars` [INFO] [stdout] --> src/term/conversion.rs:135:12 [INFO] [stdout] | [INFO] [stdout] 135 | for i in 0..vars.len() { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stdout] = note: `#[warn(clippy::needless_range_loop)]` on by default [INFO] [stdout] help: consider using an iterator [INFO] [stdout] | [INFO] [stdout] 135 - for i in 0..vars.len() { [INFO] [stdout] 135 + for in &vars { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/term/syntax.rs:238:30 [INFO] [stdout] | [INFO] [stdout] 238 | stringify_term(code, &val); [INFO] [stdout] | ^^^^ help: change this to: `val` [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/term/syntax.rs:240:30 [INFO] [stdout] | [INFO] [stdout] 240 | stringify_term(code, &nxt); [INFO] [stdout] | ^^^^ help: change this to: `nxt` [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 struct pattern where every field's pattern takes a reference [INFO] [stdout] --> src/term/syntax.rs:245:7 [INFO] [stdout] | [INFO] [stdout] 245 | &Var{ref nam} => { [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] 245 - &Var{ref nam} => { [INFO] [stdout] 245 + Var{nam} => { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/term/syntax.rs:251:29 [INFO] [stdout] | [INFO] [stdout] 251 | stringify_term(&mut code, &term); [INFO] [stdout] | ^^^^^ help: change this to: `term` [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/term/views.rs:8:5 [INFO] [stdout] | [INFO] [stdout] 8 | / match term { [INFO] [stdout] 9 | | &App{ref fun, ref arg} => { [INFO] [stdout] 10 | | let app = new_node(inet, CON); [INFO] [stdout] 11 | | let fun = encode(inet, label, scope, fun); [INFO] [stdout] ... | [INFO] [stdout] 54 | | _ => panic!("Invalid λ-term.") [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] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stdout] | [INFO] [stdout] 8 ~ match *term { [INFO] [stdout] 9 ~ App{ref fun, ref arg} => { [INFO] [stdout] 10 | let app = new_node(inet, CON); [INFO] [stdout] ... [INFO] [stdout] 16 | }, [INFO] [stdout] 17 ~ Lam{ref nam, ref typ, ref bod} => { [INFO] [stdout] 18 | // TODO: handle typ [INFO] [stdout] ... [INFO] [stdout] 28 | }, [INFO] [stdout] 29 ~ Ann{..} => { [INFO] [stdout] 30 | todo!(); [INFO] [stdout] 31 | }, [INFO] [stdout] 32 ~ Var{ref nam} => { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: dereferencing a struct pattern where every field's pattern takes a reference [INFO] [stdout] --> src/term/views.rs:9:7 [INFO] [stdout] | [INFO] [stdout] 9 | &App{ref fun, ref arg} => { [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] 9 - &App{ref fun, ref arg} => { [INFO] [stdout] 9 + App{fun, arg} => { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: returning the result of a `let` binding from a block [INFO] [stdout] --> src/term/conversion.rs:211:11 [INFO] [stdout] | [INFO] [stdout] 206 | / let mut lam = Lam { [INFO] [stdout] 207 | | nam: nam, [INFO] [stdout] 208 | | typ: typ, [INFO] [stdout] 209 | | bod: Box::new(bod), [INFO] [stdout] 210 | | }; [INFO] [stdout] | |____________- unnecessary `let` binding [INFO] [stdout] 211 | lam [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] 206 ~ [INFO] [stdout] 207 ~ Lam { [INFO] [stdout] 208 + nam: nam, [INFO] [stdout] 209 + typ: typ, [INFO] [stdout] 210 + bod: Box::new(bod), [INFO] [stdout] 211 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: dereferencing a struct pattern where every field's pattern takes a reference [INFO] [stdout] --> src/term/views.rs:17:7 [INFO] [stdout] | [INFO] [stdout] 17 | &Lam{ref nam, ref typ, ref bod} => { [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] 17 - &Lam{ref nam, ref typ, ref bod} => { [INFO] [stdout] 17 + Lam{nam, typ, bod} => { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: returning the result of a `let` binding from a block [INFO] [stdout] --> src/term/conversion.rs:244:11 [INFO] [stdout] | [INFO] [stdout] 243 | let val = read_term(net, prt, var_name, dups_vec, dups_set); [INFO] [stdout] | ------------------------------------------------------------ unnecessary `let` binding [INFO] [stdout] 244 | val [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] help: return the expression directly [INFO] [stdout] | [INFO] [stdout] 243 ~ [INFO] [stdout] 244 ~ read_term(net, prt, var_name, dups_vec, dups_set) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: dereferencing a struct pattern where every field's pattern takes a reference [INFO] [stdout] --> src/term/views.rs:32:7 [INFO] [stdout] | [INFO] [stdout] 32 | &Var{ref nam} => { [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] 32 - &Var{ref nam} => { [INFO] [stdout] 32 + Var{nam} => { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `i` is only used to index `scope` [INFO] [stdout] --> src/term/views.rs:34:18 [INFO] [stdout] | [INFO] [stdout] 34 | for i in 0..scope.len() { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stdout] help: consider using an iterator [INFO] [stdout] | [INFO] [stdout] 34 - for i in 0..scope.len() { [INFO] [stdout] 34 + for in &scope { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/term/conversion.rs:290:9 [INFO] [stdout] | [INFO] [stdout] 290 | while dups_vec.len() > 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!dups_vec.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 boolean expression can be simplified [INFO] [stdout] --> src/term/syntax.rs:17:3 [INFO] [stdout] | [INFO] [stdout] 17 | / false [INFO] [stdout] 18 | | || (c >= b'A' && c <= b'Z') [INFO] [stdout] 19 | | || (c >= b'a' && c <= b'z') [INFO] [stdout] 20 | | || (c >= b'0' && c <= b'9') [INFO] [stdout] | |_____________________________^ help: try: `c >= b'A' && c <= b'Z' || c >= b'a' && c <= b'z' || c >= b'0' && c <= b'9'` [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/term/syntax.rs:17:3 [INFO] [stdout] | [INFO] [stdout] 17 | / false [INFO] [stdout] 18 | | || (c >= b'A' && c <= b'Z') [INFO] [stdout] 19 | | || (c >= b'a' && c <= b'z') [INFO] [stdout] | |_____________________________^ help: try: `c >= b'A' && c <= b'Z' || c >= b'a' && c <= b'z'` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/term/syntax.rs:17:3 [INFO] [stdout] | [INFO] [stdout] 17 | / false [INFO] [stdout] 18 | | || (c >= b'A' && c <= b'Z') [INFO] [stdout] | |_____________________________^ help: try: `c >= b'A' && c <= b'Z'` [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: manual `RangeInclusive::contains` implementation [INFO] [stdout] --> src/term/syntax.rs:18:6 [INFO] [stdout] | [INFO] [stdout] 18 | || (c >= b'A' && c <= b'Z') [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: use: `(b'A'..=b'Z').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: manual `RangeInclusive::contains` implementation [INFO] [stdout] --> src/term/syntax.rs:19:6 [INFO] [stdout] | [INFO] [stdout] 19 | || (c >= b'a' && c <= b'z') [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: use: `(b'a'..=b'z').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] [INFO] [stdout] [INFO] [stdout] warning: manual `RangeInclusive::contains` implementation [INFO] [stdout] --> src/term/syntax.rs:20:6 [INFO] [stdout] | [INFO] [stdout] 20 | || (c >= b'0' && c <= b'9') [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: use: `(b'0'..=b'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] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/term/views.rs:113:12 [INFO] [stdout] | [INFO] [stdout] 113 | match if s.len() > 0 { s[0] } else { b' ' } { [INFO] [stdout] | ^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!s.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: returning the result of a `let` binding from a block [INFO] [stdout] --> src/term/views.rs:135:7 [INFO] [stdout] | [INFO] [stdout] 130 | / let o_lam = Term::Lam{ [INFO] [stdout] 131 | | nam: nam, [INFO] [stdout] 132 | | typ: None, // TODO [INFO] [stdout] 133 | | bod: Box::new(i_lam) [INFO] [stdout] 134 | | }; [INFO] [stdout] | |________- unnecessary `let` binding [INFO] [stdout] 135 | o_lam [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] help: return the expression directly [INFO] [stdout] | [INFO] [stdout] 130 ~ [INFO] [stdout] 131 ~ Term::Lam{ [INFO] [stdout] 132 + nam: nam, [INFO] [stdout] 133 + typ: None, // TODO [INFO] [stdout] 134 + bod: Box::new(i_lam) [INFO] [stdout] 135 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: returning the result of a `let` binding from a block [INFO] [stdout] --> src/term/views.rs:158:7 [INFO] [stdout] | [INFO] [stdout] 153 | / let o_lam = Term::Lam{ [INFO] [stdout] 154 | | nam: b"-".to_vec(), [INFO] [stdout] 155 | | typ: None, // TODO [INFO] [stdout] 156 | | bod: Box::new(i_lam) [INFO] [stdout] 157 | | }; [INFO] [stdout] | |________- unnecessary `let` binding [INFO] [stdout] 158 | o_lam [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] help: return the expression directly [INFO] [stdout] | [INFO] [stdout] 153 ~ [INFO] [stdout] 154 ~ Term::Lam{ [INFO] [stdout] 155 + nam: b"-".to_vec(), [INFO] [stdout] 156 + typ: None, // TODO [INFO] [stdout] 157 + bod: Box::new(i_lam) [INFO] [stdout] 158 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: returning the result of a `let` binding from a block [INFO] [stdout] --> src/term/views.rs:178:7 [INFO] [stdout] | [INFO] [stdout] 173 | / let o_lam = Term::Lam{ [INFO] [stdout] 174 | | nam: b"-".to_vec(), [INFO] [stdout] 175 | | typ: None, // TODO [INFO] [stdout] 176 | | bod: Box::new(i_lam) [INFO] [stdout] 177 | | }; [INFO] [stdout] | |________- unnecessary `let` binding [INFO] [stdout] 178 | o_lam [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] help: return the expression directly [INFO] [stdout] | [INFO] [stdout] 173 ~ [INFO] [stdout] 174 ~ Term::Lam{ [INFO] [stdout] 175 + nam: b"-".to_vec(), [INFO] [stdout] 176 + typ: None, // TODO [INFO] [stdout] 177 + bod: Box::new(i_lam) [INFO] [stdout] 178 + } [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/term/views.rs:186:5 [INFO] [stdout] | [INFO] [stdout] 186 | / match t { [INFO] [stdout] 187 | | Term::Lam{nam: ref o_nam, typ: _, bod: ref o_bod} => { // TODO: handle typ [INFO] [stdout] 188 | | match **o_bod { [INFO] [stdout] 189 | | Term::Lam{nam: ref i_nam, typ: _, bod: ref i_bod} => { // TODO: handle typ [INFO] [stdout] ... | [INFO] [stdout] 216 | | _ => {} [INFO] [stdout] 217 | | } [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] 186 ~ if let Term::Lam{nam: ref o_nam, typ: _, bod: ref o_bod} = t { // TODO: handle typ [INFO] [stdout] 187 + match **o_bod { [INFO] [stdout] 188 + Term::Lam{nam: ref i_nam, typ: _, bod: ref i_bod} => { // TODO: handle typ [INFO] [stdout] 189 + match **i_bod { [INFO] [stdout] 190 + Term::Lam{nam: _, typ: _, bod: ref e_bod} => { // TODO: handle typ [INFO] [stdout] 191 + match **e_bod { [INFO] [stdout] 192 + Term::App{fun: ref app_fun, arg: ref app_arg} => { [INFO] [stdout] 193 + match **app_fun { [INFO] [stdout] 194 + Term::Var{nam: ref var_nam} => { [INFO] [stdout] 195 + if var_nam == o_nam { [INFO] [stdout] 196 + v.extend_from_slice(b"0"); [INFO] [stdout] 197 + format_binary_output(app_arg, v); [INFO] [stdout] 198 + } else if var_nam == i_nam { [INFO] [stdout] 199 + v.extend_from_slice(b"1"); [INFO] [stdout] 200 + format_binary_output(app_arg, v); [INFO] [stdout] 201 + } [INFO] [stdout] 202 + }, [INFO] [stdout] 203 + _ => {} [INFO] [stdout] 204 + } [INFO] [stdout] 205 + }, [INFO] [stdout] 206 + _ => {} [INFO] [stdout] 207 + } [INFO] [stdout] 208 + }, [INFO] [stdout] 209 + _ => {} [INFO] [stdout] 210 + } [INFO] [stdout] 211 + }, [INFO] [stdout] 212 + _ => {} [INFO] [stdout] 213 + } [INFO] [stdout] 214 + } [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/term/views.rs:188:9 [INFO] [stdout] | [INFO] [stdout] 188 | / match **o_bod { [INFO] [stdout] 189 | | Term::Lam{nam: ref i_nam, typ: _, bod: ref i_bod} => { // TODO: handle typ [INFO] [stdout] 190 | | match **i_bod { [INFO] [stdout] 191 | | Term::Lam{nam: _, typ: _, bod: ref e_bod} => { // TODO: handle typ [INFO] [stdout] ... | [INFO] [stdout] 213 | | _ => {} [INFO] [stdout] 214 | | } [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] 188 ~ if let Term::Lam{nam: ref i_nam, typ: _, bod: ref i_bod} = **o_bod { // TODO: handle typ [INFO] [stdout] 189 + match **i_bod { [INFO] [stdout] 190 + Term::Lam{nam: _, typ: _, bod: ref e_bod} => { // TODO: handle typ [INFO] [stdout] 191 + match **e_bod { [INFO] [stdout] 192 + Term::App{fun: ref app_fun, arg: ref app_arg} => { [INFO] [stdout] 193 + match **app_fun { [INFO] [stdout] 194 + Term::Var{nam: ref var_nam} => { [INFO] [stdout] 195 + if var_nam == o_nam { [INFO] [stdout] 196 + v.extend_from_slice(b"0"); [INFO] [stdout] 197 + format_binary_output(app_arg, v); [INFO] [stdout] 198 + } else if var_nam == i_nam { [INFO] [stdout] 199 + v.extend_from_slice(b"1"); [INFO] [stdout] 200 + format_binary_output(app_arg, v); [INFO] [stdout] 201 + } [INFO] [stdout] 202 + }, [INFO] [stdout] 203 + _ => {} [INFO] [stdout] 204 + } [INFO] [stdout] 205 + }, [INFO] [stdout] 206 + _ => {} [INFO] [stdout] 207 + } [INFO] [stdout] 208 + }, [INFO] [stdout] 209 + _ => {} [INFO] [stdout] 210 + } [INFO] [stdout] 211 + } [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/term/views.rs:190:13 [INFO] [stdout] | [INFO] [stdout] 190 | / match **i_bod { [INFO] [stdout] 191 | | Term::Lam{nam: _, typ: _, bod: ref e_bod} => { // TODO: handle typ [INFO] [stdout] 192 | | match **e_bod { [INFO] [stdout] 193 | | Term::App{fun: ref app_fun, arg: ref app_arg} => { [INFO] [stdout] ... | [INFO] [stdout] 210 | | _ => {} [INFO] [stdout] 211 | | } [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] 190 ~ if let Term::Lam{nam: _, typ: _, bod: ref e_bod} = **i_bod { // TODO: handle typ [INFO] [stdout] 191 + match **e_bod { [INFO] [stdout] 192 + Term::App{fun: ref app_fun, arg: ref app_arg} => { [INFO] [stdout] 193 + match **app_fun { [INFO] [stdout] 194 + Term::Var{nam: ref var_nam} => { [INFO] [stdout] 195 + if var_nam == o_nam { [INFO] [stdout] 196 + v.extend_from_slice(b"0"); [INFO] [stdout] 197 + format_binary_output(app_arg, v); [INFO] [stdout] 198 + } else if var_nam == i_nam { [INFO] [stdout] 199 + v.extend_from_slice(b"1"); [INFO] [stdout] 200 + format_binary_output(app_arg, v); [INFO] [stdout] 201 + } [INFO] [stdout] 202 + }, [INFO] [stdout] 203 + _ => {} [INFO] [stdout] 204 + } [INFO] [stdout] 205 + }, [INFO] [stdout] 206 + _ => {} [INFO] [stdout] 207 + } [INFO] [stdout] 208 + } [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/term/views.rs:192:17 [INFO] [stdout] | [INFO] [stdout] 192 | / match **e_bod { [INFO] [stdout] 193 | | Term::App{fun: ref app_fun, arg: ref app_arg} => { [INFO] [stdout] 194 | | match **app_fun { [INFO] [stdout] 195 | | Term::Var{nam: ref var_nam} => { [INFO] [stdout] ... | [INFO] [stdout] 207 | | _ => {} [INFO] [stdout] 208 | | } [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] 192 ~ if let Term::App{fun: ref app_fun, arg: ref app_arg} = **e_bod { [INFO] [stdout] 193 + match **app_fun { [INFO] [stdout] 194 + Term::Var{nam: ref var_nam} => { [INFO] [stdout] 195 + if var_nam == o_nam { [INFO] [stdout] 196 + v.extend_from_slice(b"0"); [INFO] [stdout] 197 + format_binary_output(app_arg, v); [INFO] [stdout] 198 + } else if var_nam == i_nam { [INFO] [stdout] 199 + v.extend_from_slice(b"1"); [INFO] [stdout] 200 + format_binary_output(app_arg, v); [INFO] [stdout] 201 + } [INFO] [stdout] 202 + }, [INFO] [stdout] 203 + _ => {} [INFO] [stdout] 204 + } [INFO] [stdout] 205 + } [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/term/views.rs:194:21 [INFO] [stdout] | [INFO] [stdout] 194 | / match **app_fun { [INFO] [stdout] 195 | | Term::Var{nam: ref var_nam} => { [INFO] [stdout] 196 | | if var_nam == o_nam { [INFO] [stdout] 197 | | v.extend_from_slice(b"0"); [INFO] [stdout] ... | [INFO] [stdout] 204 | | _ => {} [INFO] [stdout] 205 | | } [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] 194 ~ if let Term::Var{nam: ref var_nam} = **app_fun { [INFO] [stdout] 195 + if var_nam == o_nam { [INFO] [stdout] 196 + v.extend_from_slice(b"0"); [INFO] [stdout] 197 + format_binary_output(app_arg, v); [INFO] [stdout] 198 + } else if var_nam == i_nam { [INFO] [stdout] 199 + v.extend_from_slice(b"1"); [INFO] [stdout] 200 + format_binary_output(app_arg, v); [INFO] [stdout] 201 + } [INFO] [stdout] 202 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `i` is only used to index `s` [INFO] [stdout] --> src/term/views.rs:227:12 [INFO] [stdout] | [INFO] [stdout] 227 | for i in 0..8 { [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stdout] help: consider using an iterator [INFO] [stdout] | [INFO] [stdout] 227 - for i in 0..8 { [INFO] [stdout] 227 + for in s.iter().take(8) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of `.is_multiple_of()` [INFO] [stdout] --> src/term/views.rs:238:28 [INFO] [stdout] | [INFO] [stdout] 238 | v.extend_from_slice(if c % 2 == 0 { b"0" } else { b"1" }); [INFO] [stdout] | ^^^^^^^^^^ help: replace with: `c.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: manual implementation of an assign operation [INFO] [stdout] --> src/term/views.rs:239:5 [INFO] [stdout] | [INFO] [stdout] 239 | c = c / 2; [INFO] [stdout] | ^^^^^^^^^ help: replace it with: `c /= 2` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stdout] = note: `#[warn(clippy::assign_op_pattern)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `i` is only used to index `a` [INFO] [stdout] --> src/term/views.rs:257:12 [INFO] [stdout] | [INFO] [stdout] 257 | for i in 0..a.len() { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stdout] help: consider using an iterator [INFO] [stdout] | [INFO] [stdout] 257 - for i in 0..a.len() { [INFO] [stdout] 257 + for in &a { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/term/mod.rs:54:3 [INFO] [stdout] | [INFO] [stdout] 54 | return name; [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] 54 - return name; [INFO] [stdout] 54 + name [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of an assign operation [INFO] [stdout] --> src/term/mod.rs:50:5 [INFO] [stdout] | [INFO] [stdout] 50 | idx = idx - 1; [INFO] [stdout] | ^^^^^^^^^^^^^ help: replace it with: `idx -= 1` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of an assign operation [INFO] [stdout] --> src/term/mod.rs:52:5 [INFO] [stdout] | [INFO] [stdout] 52 | idx = idx / 26; [INFO] [stdout] | ^^^^^^^^^^^^^^ help: replace it with: `idx /= 26` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the following explicit lifetimes could be elided: 'a [INFO] [stdout] --> src/term/syntax.rs:178:20 [INFO] [stdout] | [INFO] [stdout] 178 | pub fn from_string<'a>(code : &'a Str) -> Term { [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] 178 - pub fn from_string<'a>(code : &'a Str) -> Term { [INFO] [stdout] 178 + pub fn from_string(code : &Str) -> Term { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/term/mod.rs:63:3 [INFO] [stdout] | [INFO] [stdout] 63 | return idx; [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] 63 - return idx; [INFO] [stdout] 63 + idx [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/term/syntax.rs:252:3 [INFO] [stdout] | [INFO] [stdout] 252 | return code; [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] 252 - return code; [INFO] [stdout] 252 + code [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> src/term/mod.rs:58:29 [INFO] [stdout] | [INFO] [stdout] 58 | pub fn name_to_index(name : &Vec) -> u32 { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] = note: `#[warn(clippy::ptr_arg)]` on by default [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 58 - pub fn name_to_index(name : &Vec) -> u32 { [INFO] [stdout] 58 + pub fn name_to_index(name : &[Chr]) -> u32 { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you don't need to add `&` to all patterns [INFO] [stdout] --> src/term/syntax.rs:187:5 [INFO] [stdout] | [INFO] [stdout] 187 | / match term { [INFO] [stdout] 188 | | &Lam{ref nam, ref typ, ref bod} => { [INFO] [stdout] 189 | | code.extend_from_slice("λ".as_bytes()); [INFO] [stdout] 190 | | if let Some(ref t) = typ { [INFO] [stdout] ... | [INFO] [stdout] 247 | | }, [INFO] [stdout] 248 | | } [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] 187 ~ match *term { [INFO] [stdout] 188 ~ Lam{ref nam, ref typ, ref bod} => { [INFO] [stdout] 189 | code.extend_from_slice("λ".as_bytes()); [INFO] [stdout] ... [INFO] [stdout] 201 | }, [INFO] [stdout] 202 ~ App{ref fun, ref arg} => { [INFO] [stdout] 203 | code.extend_from_slice(b"("); [INFO] [stdout] ... [INFO] [stdout] 208 | }, [INFO] [stdout] 209 ~ Ann{ref val, ref typ} => { [INFO] [stdout] 210 | code.extend_from_slice(b"<"); [INFO] [stdout] ... [INFO] [stdout] 215 | }, [INFO] [stdout] 216 ~ Sup{tag, ref fst, ref snd} => { [INFO] [stdout] 217 | code.extend_from_slice(b"["); [INFO] [stdout] ... [INFO] [stdout] 226 | }, [INFO] [stdout] 227 ~ Dup{tag, ref fst, ref snd, ref val, ref nxt} => { [INFO] [stdout] 228 | code.extend_from_slice(b"dup "); [INFO] [stdout] ... [INFO] [stdout] 241 | }, [INFO] [stdout] 242 ~ Set => { [INFO] [stdout] 243 | code.extend_from_slice(b"*"); [INFO] [stdout] 244 | }, [INFO] [stdout] 245 ~ Var{ref nam} => { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: dereferencing a struct pattern where every field's pattern takes a reference [INFO] [stdout] --> src/term/syntax.rs:188:7 [INFO] [stdout] | [INFO] [stdout] 188 | &Lam{ref nam, ref typ, ref bod} => { [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] 188 - &Lam{ref nam, ref typ, ref bod} => { [INFO] [stdout] 188 + Lam{nam, typ, bod} => { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> src/term/mod.rs:81:26 [INFO] [stdout] | [INFO] [stdout] 81 | pub fn namespace(space : &Vec, idx : u32, var : &Vec) -> Vec { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 81 ~ pub fn namespace(space : &[u8], idx : u32, var : &Vec) -> Vec { [INFO] [stdout] 82 | if var != b"*" { [INFO] [stdout] 83 ~ let mut nam = space.to_owned(); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/term/syntax.rs:194:32 [INFO] [stdout] | [INFO] [stdout] 194 | stringify_term(code, &t); [INFO] [stdout] | ^^ help: change this to: `t` [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/term/syntax.rs:200:30 [INFO] [stdout] | [INFO] [stdout] 200 | stringify_term(code, &bod); [INFO] [stdout] | ^^^^ help: change this to: `bod` [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 struct pattern where every field's pattern takes a reference [INFO] [stdout] --> src/term/syntax.rs:202:7 [INFO] [stdout] | [INFO] [stdout] 202 | &App{ref fun, ref arg} => { [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] 202 - &App{ref fun, ref arg} => { [INFO] [stdout] 202 + App{fun, arg} => { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/term/syntax.rs:204:30 [INFO] [stdout] | [INFO] [stdout] 204 | stringify_term(code, &fun); [INFO] [stdout] | ^^^^ help: change this to: `fun` [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/term/syntax.rs:206:30 [INFO] [stdout] | [INFO] [stdout] 206 | stringify_term(code, &arg); [INFO] [stdout] | ^^^^ help: change this to: `arg` [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 struct pattern where every field's pattern takes a reference [INFO] [stdout] --> src/term/syntax.rs:209:7 [INFO] [stdout] | [INFO] [stdout] 209 | &Ann{ref val, ref typ} => { [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] 209 - &Ann{ref val, ref typ} => { [INFO] [stdout] 209 + Ann{val, typ} => { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/term/syntax.rs:211:30 [INFO] [stdout] | [INFO] [stdout] 211 | stringify_term(code, &val); [INFO] [stdout] | ^^^^ help: change this to: `val` [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/term/syntax.rs:213:30 [INFO] [stdout] | [INFO] [stdout] 213 | stringify_term(code, &typ); [INFO] [stdout] | ^^^^ help: change this to: `typ` [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/term/mod.rs:138:56 [INFO] [stdout] | [INFO] [stdout] 138 | write!(f, "{}", String::from_utf8_lossy(&to_string(&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/term/syntax.rs:218:30 [INFO] [stdout] | [INFO] [stdout] 218 | stringify_term(code, &fst); [INFO] [stdout] | ^^^^ help: change this to: `fst` [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/term/syntax.rs:220:30 [INFO] [stdout] | [INFO] [stdout] 220 | stringify_term(code, &snd); [INFO] [stdout] | ^^^^ help: change this to: `snd` [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/term/mod.rs:144:31 [INFO] [stdout] | [INFO] [stdout] 144 | let mut net : INet = to_net(&term); [INFO] [stdout] | ^^^^^ help: change this to: `term` [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/term/syntax.rs:238:30 [INFO] [stdout] | [INFO] [stdout] 238 | stringify_term(code, &val); [INFO] [stdout] | ^^^^ help: change this to: `val` [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/term/syntax.rs:240:30 [INFO] [stdout] | [INFO] [stdout] 240 | stringify_term(code, &nxt); [INFO] [stdout] | ^^^^ help: change this to: `nxt` [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 struct pattern where every field's pattern takes a reference [INFO] [stdout] --> src/term/syntax.rs:245:7 [INFO] [stdout] | [INFO] [stdout] 245 | &Var{ref nam} => { [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] 245 - &Var{ref nam} => { [INFO] [stdout] 245 + Var{nam} => { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/term/syntax.rs:251:29 [INFO] [stdout] | [INFO] [stdout] 251 | stringify_term(&mut code, &term); [INFO] [stdout] | ^^^^^ help: change this to: `term` [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/term/mod.rs:150:24 [INFO] [stdout] | [INFO] [stdout] 150 | let mut net = to_net(&term); [INFO] [stdout] | ^^^^^ help: change this to: `term` [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: unneeded `return` statement [INFO] [stdout] --> src/inet/mod.rs:49:3 [INFO] [stdout] | [INFO] [stdout] 49 | return node; [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] 49 - return node; [INFO] [stdout] 49 + node [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you don't need to add `&` to all patterns [INFO] [stdout] --> src/term/views.rs:8:5 [INFO] [stdout] | [INFO] [stdout] 8 | / match term { [INFO] [stdout] 9 | | &App{ref fun, ref arg} => { [INFO] [stdout] 10 | | let app = new_node(inet, CON); [INFO] [stdout] 11 | | let fun = encode(inet, label, scope, fun); [INFO] [stdout] ... | [INFO] [stdout] 54 | | _ => panic!("Invalid λ-term.") [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] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stdout] | [INFO] [stdout] 8 ~ match *term { [INFO] [stdout] 9 ~ App{ref fun, ref arg} => { [INFO] [stdout] 10 | let app = new_node(inet, CON); [INFO] [stdout] ... [INFO] [stdout] 16 | }, [INFO] [stdout] 17 ~ Lam{ref nam, ref typ, ref bod} => { [INFO] [stdout] 18 | // TODO: handle typ [INFO] [stdout] ... [INFO] [stdout] 28 | }, [INFO] [stdout] 29 ~ Ann{..} => { [INFO] [stdout] 30 | todo!(); [INFO] [stdout] 31 | }, [INFO] [stdout] 32 ~ Var{ref nam} => { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: dereferencing a struct pattern where every field's pattern takes a reference [INFO] [stdout] --> src/term/views.rs:9:7 [INFO] [stdout] | [INFO] [stdout] 9 | &App{ref fun, ref arg} => { [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] 9 - &App{ref fun, ref arg} => { [INFO] [stdout] 9 + App{fun, arg} => { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: accessing first element with `path.get(0)` [INFO] [stdout] --> src/inet/mod.rs:94:14 [INFO] [stdout] | [INFO] [stdout] 94 | return path.get(0).cloned().unwrap_or(ROOT); // path[0] ? [INFO] [stdout] | ^^^^^^^^^^^ help: try: `path.first()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_first [INFO] [stdout] = note: `#[warn(clippy::get_first)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: dereferencing a struct pattern where every field's pattern takes a reference [INFO] [stdout] --> src/term/views.rs:17:7 [INFO] [stdout] | [INFO] [stdout] 17 | &Lam{ref nam, ref typ, ref bod} => { [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] 17 - &Lam{ref nam, ref typ, ref bod} => { [INFO] [stdout] 17 + Lam{nam, typ, bod} => { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: dereferencing a struct pattern where every field's pattern takes a reference [INFO] [stdout] --> src/term/views.rs:32:7 [INFO] [stdout] | [INFO] [stdout] 32 | &Var{ref nam} => { [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] 32 - &Var{ref nam} => { [INFO] [stdout] 32 + Var{nam} => { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `i` is only used to index `scope` [INFO] [stdout] --> src/term/views.rs:34:18 [INFO] [stdout] | [INFO] [stdout] 34 | for i in 0..scope.len() { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stdout] help: consider using an iterator [INFO] [stdout] | [INFO] [stdout] 34 - for i in 0..scope.len() { [INFO] [stdout] 34 + for in &scope { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/term/views.rs:113:12 [INFO] [stdout] | [INFO] [stdout] 113 | match if s.len() > 0 { s[0] } else { b' ' } { [INFO] [stdout] | ^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!s.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: returning the result of a `let` binding from a block [INFO] [stdout] --> src/term/views.rs:135:7 [INFO] [stdout] | [INFO] [stdout] 130 | / let o_lam = Term::Lam{ [INFO] [stdout] 131 | | nam: nam, [INFO] [stdout] 132 | | typ: None, // TODO [INFO] [stdout] 133 | | bod: Box::new(i_lam) [INFO] [stdout] 134 | | }; [INFO] [stdout] | |________- unnecessary `let` binding [INFO] [stdout] 135 | o_lam [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] help: return the expression directly [INFO] [stdout] | [INFO] [stdout] 130 ~ [INFO] [stdout] 131 ~ Term::Lam{ [INFO] [stdout] 132 + nam: nam, [INFO] [stdout] 133 + typ: None, // TODO [INFO] [stdout] 134 + bod: Box::new(i_lam) [INFO] [stdout] 135 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: returning the result of a `let` binding from a block [INFO] [stdout] --> src/term/views.rs:158:7 [INFO] [stdout] | [INFO] [stdout] 153 | / let o_lam = Term::Lam{ [INFO] [stdout] 154 | | nam: b"-".to_vec(), [INFO] [stdout] 155 | | typ: None, // TODO [INFO] [stdout] 156 | | bod: Box::new(i_lam) [INFO] [stdout] 157 | | }; [INFO] [stdout] | |________- unnecessary `let` binding [INFO] [stdout] 158 | o_lam [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] help: return the expression directly [INFO] [stdout] | [INFO] [stdout] 153 ~ [INFO] [stdout] 154 ~ Term::Lam{ [INFO] [stdout] 155 + nam: b"-".to_vec(), [INFO] [stdout] 156 + typ: None, // TODO [INFO] [stdout] 157 + bod: Box::new(i_lam) [INFO] [stdout] 158 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: call to `.clone()` on a reference in this situation does nothing [INFO] [stdout] --> src/term/syntax.rs:160:33 [INFO] [stdout] | [INFO] [stdout] 160 | let mut name = nam.clone().to_vec(); [INFO] [stdout] | ^^^^^^^^ help: remove this redundant call [INFO] [stdout] | [INFO] [stdout] = note: the type `[u8]` does not implement `Clone`, so calling `clone` on `&[u8]` copies the reference, which does not do anything and can be removed [INFO] [stdout] = note: `#[warn(noop_method_call)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: returning the result of a `let` binding from a block [INFO] [stdout] --> src/term/views.rs:178:7 [INFO] [stdout] | [INFO] [stdout] 173 | / let o_lam = Term::Lam{ [INFO] [stdout] 174 | | nam: b"-".to_vec(), [INFO] [stdout] 175 | | typ: None, // TODO [INFO] [stdout] 176 | | bod: Box::new(i_lam) [INFO] [stdout] 177 | | }; [INFO] [stdout] | |________- unnecessary `let` binding [INFO] [stdout] 178 | o_lam [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] help: return the expression directly [INFO] [stdout] | [INFO] [stdout] 173 ~ [INFO] [stdout] 174 ~ Term::Lam{ [INFO] [stdout] 175 + nam: b"-".to_vec(), [INFO] [stdout] 176 + typ: None, // TODO [INFO] [stdout] 177 + bod: Box::new(i_lam) [INFO] [stdout] 178 + } [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/term/views.rs:186:5 [INFO] [stdout] | [INFO] [stdout] 186 | / match t { [INFO] [stdout] 187 | | Term::Lam{nam: ref o_nam, typ: _, bod: ref o_bod} => { // TODO: handle typ [INFO] [stdout] 188 | | match **o_bod { [INFO] [stdout] 189 | | Term::Lam{nam: ref i_nam, typ: _, bod: ref i_bod} => { // TODO: handle typ [INFO] [stdout] ... | [INFO] [stdout] 216 | | _ => {} [INFO] [stdout] 217 | | } [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] 186 ~ if let Term::Lam{nam: ref o_nam, typ: _, bod: ref o_bod} = t { // TODO: handle typ [INFO] [stdout] 187 + match **o_bod { [INFO] [stdout] 188 + Term::Lam{nam: ref i_nam, typ: _, bod: ref i_bod} => { // TODO: handle typ [INFO] [stdout] 189 + match **i_bod { [INFO] [stdout] 190 + Term::Lam{nam: _, typ: _, bod: ref e_bod} => { // TODO: handle typ [INFO] [stdout] 191 + match **e_bod { [INFO] [stdout] 192 + Term::App{fun: ref app_fun, arg: ref app_arg} => { [INFO] [stdout] 193 + match **app_fun { [INFO] [stdout] 194 + Term::Var{nam: ref var_nam} => { [INFO] [stdout] 195 + if var_nam == o_nam { [INFO] [stdout] 196 + v.extend_from_slice(b"0"); [INFO] [stdout] 197 + format_binary_output(app_arg, v); [INFO] [stdout] 198 + } else if var_nam == i_nam { [INFO] [stdout] 199 + v.extend_from_slice(b"1"); [INFO] [stdout] 200 + format_binary_output(app_arg, v); [INFO] [stdout] 201 + } [INFO] [stdout] 202 + }, [INFO] [stdout] 203 + _ => {} [INFO] [stdout] 204 + } [INFO] [stdout] 205 + }, [INFO] [stdout] 206 + _ => {} [INFO] [stdout] 207 + } [INFO] [stdout] 208 + }, [INFO] [stdout] 209 + _ => {} [INFO] [stdout] 210 + } [INFO] [stdout] 211 + }, [INFO] [stdout] 212 + _ => {} [INFO] [stdout] 213 + } [INFO] [stdout] 214 + } [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/term/views.rs:188:9 [INFO] [stdout] | [INFO] [stdout] 188 | / match **o_bod { [INFO] [stdout] 189 | | Term::Lam{nam: ref i_nam, typ: _, bod: ref i_bod} => { // TODO: handle typ [INFO] [stdout] 190 | | match **i_bod { [INFO] [stdout] 191 | | Term::Lam{nam: _, typ: _, bod: ref e_bod} => { // TODO: handle typ [INFO] [stdout] ... | [INFO] [stdout] 213 | | _ => {} [INFO] [stdout] 214 | | } [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] 188 ~ if let Term::Lam{nam: ref i_nam, typ: _, bod: ref i_bod} = **o_bod { // TODO: handle typ [INFO] [stdout] 189 + match **i_bod { [INFO] [stdout] 190 + Term::Lam{nam: _, typ: _, bod: ref e_bod} => { // TODO: handle typ [INFO] [stdout] 191 + match **e_bod { [INFO] [stdout] 192 + Term::App{fun: ref app_fun, arg: ref app_arg} => { [INFO] [stdout] 193 + match **app_fun { [INFO] [stdout] 194 + Term::Var{nam: ref var_nam} => { [INFO] [stdout] 195 + if var_nam == o_nam { [INFO] [stdout] 196 + v.extend_from_slice(b"0"); [INFO] [stdout] 197 + format_binary_output(app_arg, v); [INFO] [stdout] 198 + } else if var_nam == i_nam { [INFO] [stdout] 199 + v.extend_from_slice(b"1"); [INFO] [stdout] 200 + format_binary_output(app_arg, v); [INFO] [stdout] 201 + } [INFO] [stdout] 202 + }, [INFO] [stdout] 203 + _ => {} [INFO] [stdout] 204 + } [INFO] [stdout] 205 + }, [INFO] [stdout] 206 + _ => {} [INFO] [stdout] 207 + } [INFO] [stdout] 208 + }, [INFO] [stdout] 209 + _ => {} [INFO] [stdout] 210 + } [INFO] [stdout] 211 + } [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/term/views.rs:190:13 [INFO] [stdout] | [INFO] [stdout] 190 | / match **i_bod { [INFO] [stdout] 191 | | Term::Lam{nam: _, typ: _, bod: ref e_bod} => { // TODO: handle typ [INFO] [stdout] 192 | | match **e_bod { [INFO] [stdout] 193 | | Term::App{fun: ref app_fun, arg: ref app_arg} => { [INFO] [stdout] ... | [INFO] [stdout] 210 | | _ => {} [INFO] [stdout] 211 | | } [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] 190 ~ if let Term::Lam{nam: _, typ: _, bod: ref e_bod} = **i_bod { // TODO: handle typ [INFO] [stdout] 191 + match **e_bod { [INFO] [stdout] 192 + Term::App{fun: ref app_fun, arg: ref app_arg} => { [INFO] [stdout] 193 + match **app_fun { [INFO] [stdout] 194 + Term::Var{nam: ref var_nam} => { [INFO] [stdout] 195 + if var_nam == o_nam { [INFO] [stdout] 196 + v.extend_from_slice(b"0"); [INFO] [stdout] 197 + format_binary_output(app_arg, v); [INFO] [stdout] 198 + } else if var_nam == i_nam { [INFO] [stdout] 199 + v.extend_from_slice(b"1"); [INFO] [stdout] 200 + format_binary_output(app_arg, v); [INFO] [stdout] 201 + } [INFO] [stdout] 202 + }, [INFO] [stdout] 203 + _ => {} [INFO] [stdout] 204 + } [INFO] [stdout] 205 + }, [INFO] [stdout] 206 + _ => {} [INFO] [stdout] 207 + } [INFO] [stdout] 208 + } [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/term/views.rs:192:17 [INFO] [stdout] | [INFO] [stdout] 192 | / match **e_bod { [INFO] [stdout] 193 | | Term::App{fun: ref app_fun, arg: ref app_arg} => { [INFO] [stdout] 194 | | match **app_fun { [INFO] [stdout] 195 | | Term::Var{nam: ref var_nam} => { [INFO] [stdout] ... | [INFO] [stdout] 207 | | _ => {} [INFO] [stdout] 208 | | } [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] 192 ~ if let Term::App{fun: ref app_fun, arg: ref app_arg} = **e_bod { [INFO] [stdout] 193 + match **app_fun { [INFO] [stdout] 194 + Term::Var{nam: ref var_nam} => { [INFO] [stdout] 195 + if var_nam == o_nam { [INFO] [stdout] 196 + v.extend_from_slice(b"0"); [INFO] [stdout] 197 + format_binary_output(app_arg, v); [INFO] [stdout] 198 + } else if var_nam == i_nam { [INFO] [stdout] 199 + v.extend_from_slice(b"1"); [INFO] [stdout] 200 + format_binary_output(app_arg, v); [INFO] [stdout] 201 + } [INFO] [stdout] 202 + }, [INFO] [stdout] 203 + _ => {} [INFO] [stdout] 204 + } [INFO] [stdout] 205 + } [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/term/views.rs:194:21 [INFO] [stdout] | [INFO] [stdout] 194 | / match **app_fun { [INFO] [stdout] 195 | | Term::Var{nam: ref var_nam} => { [INFO] [stdout] 196 | | if var_nam == o_nam { [INFO] [stdout] 197 | | v.extend_from_slice(b"0"); [INFO] [stdout] ... | [INFO] [stdout] 204 | | _ => {} [INFO] [stdout] 205 | | } [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] 194 ~ if let Term::Var{nam: ref var_nam} = **app_fun { [INFO] [stdout] 195 + if var_nam == o_nam { [INFO] [stdout] 196 + v.extend_from_slice(b"0"); [INFO] [stdout] 197 + format_binary_output(app_arg, v); [INFO] [stdout] 198 + } else if var_nam == i_nam { [INFO] [stdout] 199 + v.extend_from_slice(b"1"); [INFO] [stdout] 200 + format_binary_output(app_arg, v); [INFO] [stdout] 201 + } [INFO] [stdout] 202 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `i` is only used to index `s` [INFO] [stdout] --> src/term/views.rs:227:12 [INFO] [stdout] | [INFO] [stdout] 227 | for i in 0..8 { [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stdout] help: consider using an iterator [INFO] [stdout] | [INFO] [stdout] 227 - for i in 0..8 { [INFO] [stdout] 227 + for in s.iter().take(8) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of `.is_multiple_of()` [INFO] [stdout] --> src/term/views.rs:238:28 [INFO] [stdout] | [INFO] [stdout] 238 | v.extend_from_slice(if c % 2 == 0 { b"0" } else { b"1" }); [INFO] [stdout] | ^^^^^^^^^^ help: replace with: `c.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: manual implementation of an assign operation [INFO] [stdout] --> src/term/views.rs:239:5 [INFO] [stdout] | [INFO] [stdout] 239 | c = c / 2; [INFO] [stdout] | ^^^^^^^^^ help: replace it with: `c /= 2` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stdout] = note: `#[warn(clippy::assign_op_pattern)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `i` is only used to index `a` [INFO] [stdout] --> src/term/views.rs:257:12 [INFO] [stdout] | [INFO] [stdout] 257 | for i in 0..a.len() { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stdout] help: consider using an iterator [INFO] [stdout] | [INFO] [stdout] 257 - for i in 0..a.len() { [INFO] [stdout] 257 + for in &a { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/term/mod.rs:54:3 [INFO] [stdout] | [INFO] [stdout] 54 | return name; [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] 54 - return name; [INFO] [stdout] 54 + name [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of an assign operation [INFO] [stdout] --> src/term/mod.rs:50:5 [INFO] [stdout] | [INFO] [stdout] 50 | idx = idx - 1; [INFO] [stdout] | ^^^^^^^^^^^^^ help: replace it with: `idx -= 1` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of an assign operation [INFO] [stdout] --> src/term/mod.rs:52:5 [INFO] [stdout] | [INFO] [stdout] 52 | idx = idx / 26; [INFO] [stdout] | ^^^^^^^^^^^^^^ help: replace it with: `idx /= 26` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/term/mod.rs:63:3 [INFO] [stdout] | [INFO] [stdout] 63 | return idx; [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] 63 - return idx; [INFO] [stdout] 63 + idx [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> src/term/mod.rs:58:29 [INFO] [stdout] | [INFO] [stdout] 58 | pub fn name_to_index(name : &Vec) -> u32 { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] = note: `#[warn(clippy::ptr_arg)]` on by default [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 58 - pub fn name_to_index(name : &Vec) -> u32 { [INFO] [stdout] 58 + pub fn name_to_index(name : &[Chr]) -> u32 { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> src/term/mod.rs:81:26 [INFO] [stdout] | [INFO] [stdout] 81 | pub fn namespace(space : &Vec, idx : u32, var : &Vec) -> Vec { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 81 ~ pub fn namespace(space : &[u8], idx : u32, var : &Vec) -> Vec { [INFO] [stdout] 82 | if var != b"*" { [INFO] [stdout] 83 ~ let mut nam = space.to_owned(); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/term/mod.rs:138:56 [INFO] [stdout] | [INFO] [stdout] 138 | write!(f, "{}", String::from_utf8_lossy(&to_string(&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/term/mod.rs:144:31 [INFO] [stdout] | [INFO] [stdout] 144 | let mut net : INet = to_net(&term); [INFO] [stdout] | ^^^^^ help: change this to: `term` [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/term/mod.rs:150:24 [INFO] [stdout] | [INFO] [stdout] 150 | let mut net = to_net(&term); [INFO] [stdout] | ^^^^^ help: change this to: `term` [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: unneeded `return` statement [INFO] [stdout] --> src/inet/mod.rs:49:3 [INFO] [stdout] | [INFO] [stdout] 49 | return node; [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] 49 - return node; [INFO] [stdout] 49 + node [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: accessing first element with `path.get(0)` [INFO] [stdout] --> src/inet/mod.rs:94:14 [INFO] [stdout] | [INFO] [stdout] 94 | return path.get(0).cloned().unwrap_or(ROOT); // path[0] ? [INFO] [stdout] | ^^^^^^^^^^^ help: try: `path.first()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_first [INFO] [stdout] = note: `#[warn(clippy::get_first)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: call to `.clone()` on a reference in this situation does nothing [INFO] [stdout] --> src/term/syntax.rs:160:33 [INFO] [stdout] | [INFO] [stdout] 160 | let mut name = nam.clone().to_vec(); [INFO] [stdout] | ^^^^^^^^ help: remove this redundant call [INFO] [stdout] | [INFO] [stdout] = note: the type `[u8]` does not implement `Clone`, so calling `clone` on `&[u8]` copies the reference, which does not do anything and can be removed [INFO] [stdout] = note: `#[warn(noop_method_call)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 4.51s [INFO] running `Command { std: "docker" "inspect" "bb50cf7a13680671c36a17292fb9e2e8a039d8eb2a4441ece59351701c8c45df", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "bb50cf7a13680671c36a17292fb9e2e8a039d8eb2a4441ece59351701c8c45df", kill_on_drop: false }` [INFO] [stdout] bb50cf7a13680671c36a17292fb9e2e8a039d8eb2a4441ece59351701c8c45df