[INFO] cloning repository https://github.com/povik/xyz-compiler [INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/povik/xyz-compiler" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fpovik%2Fxyz-compiler", kill_on_drop: false }` [INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fpovik%2Fxyz-compiler'... [INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }` [INFO] [stdout] ef0e4f29b2c0b0234948886ae68b48510fd3068d [INFO] linting povik/xyz-compiler against nightly for clippy-nonminimal_bool-denied [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fpovik%2Fxyz-compiler" "/workspace/builds/worker-5-tc1/source", kill_on_drop: false }` [INFO] [stderr] Cloning into '/workspace/builds/worker-5-tc1/source'... [INFO] [stderr] done. [INFO] started tweaking git repo https://github.com/povik/xyz-compiler [INFO] finished tweaking git repo https://github.com/povik/xyz-compiler [INFO] tweaked toml for git repo https://github.com/povik/xyz-compiler written to /workspace/builds/worker-5-tc1/source/Cargo.toml [INFO] validating manifest of git repo https://github.com/povik/xyz-compiler on toolchain nightly [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+nightly" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }` [INFO] crate git repo https://github.com/povik/xyz-compiler already has a lockfile, it will not be regenerated [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+nightly" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] [stderr] Updating crates.io index [INFO] [stderr] Updating git repository `https://github.com/povik/prjunnamed.git` [INFO] [stderr] Downloading crates ... [INFO] [stderr] Downloaded yap v0.12.0 [INFO] [stderr] Downloaded argparse v0.2.2 [INFO] [stderr] Downloaded jzon v0.12.5 [INFO] [stderr] Downloaded indexmap v2.11.1 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+nightly" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }` [INFO] [stdout] 979add000327344128c3eec6161b4d63c8dc5c2824ecd7369e08d333e2bbcb1d [INFO] running `Command { std: "docker" "start" "-a" "979add000327344128c3eec6161b4d63c8dc5c2824ecd7369e08d333e2bbcb1d", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "979add000327344128c3eec6161b4d63c8dc5c2824ecd7369e08d333e2bbcb1d", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "979add000327344128c3eec6161b4d63c8dc5c2824ecd7369e08d333e2bbcb1d", kill_on_drop: false }` [INFO] [stdout] 979add000327344128c3eec6161b4d63c8dc5c2824ecd7369e08d333e2bbcb1d [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+nightly" "clippy" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] cba3efaedb48c2933671d99fc5868f39d0fffd2f2eb559f79dc85de3dfad2d43 [INFO] running `Command { std: "docker" "start" "-a" "cba3efaedb48c2933671d99fc5868f39d0fffd2f2eb559f79dc85de3dfad2d43", kill_on_drop: false }` [INFO] [stderr] Checking hashbrown v0.15.5 [INFO] [stderr] Checking yap v0.12.0 [INFO] [stderr] Checking memchr v2.7.5 [INFO] [stderr] Checking regex-syntax v0.8.6 [INFO] [stderr] Checking bumpalo v3.19.0 [INFO] [stderr] Checking jzon v0.12.5 [INFO] [stderr] Checking argparse v0.2.2 [INFO] [stderr] Checking indexmap v2.11.1 [INFO] [stderr] Checking aho-corasick v1.1.3 [INFO] [stderr] Checking prjunnamed-netlist v0.1.0 (https://github.com/povik/prjunnamed.git?branch=xyz#f14bf632) [INFO] [stderr] Checking regex-automata v0.4.10 [INFO] [stderr] Checking prjunnamed-pattern v0.1.0 (https://github.com/povik/prjunnamed.git?branch=xyz#f14bf632) [INFO] [stderr] Checking prjunnamed-memory v0.1.0 (https://github.com/povik/prjunnamed.git?branch=xyz#f14bf632) [INFO] [stderr] Checking prjunnamed-yosys_json v0.1.0 (https://github.com/povik/prjunnamed.git?branch=xyz#f14bf632) [INFO] [stderr] Checking prjunnamed-verilogout v0.1.0 (https://github.com/povik/prjunnamed.git?branch=xyz#f14bf632) [INFO] [stderr] Checking prjunnamed-generic v0.1.0 (https://github.com/povik/prjunnamed.git?branch=xyz#f14bf632) [INFO] [stderr] Checking regex v1.11.2 [INFO] [stderr] Checking xyz-compiler v0.0.0 (/opt/rustwide/workdir) [INFO] [stdout] warning: unused import: `LibraryPort` [INFO] [stdout] --> src/cm.rs:7:34 [INFO] [stdout] | [INFO] [stdout] 7 | use crate::target::{LibraryCell, LibraryPort, SCLTarget}; [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/cm.rs:519:13 [INFO] [stdout] | [INFO] [stdout] 519 | design: design, [INFO] [stdout] | ^^^^^^^^^^^^^^ help: replace it with: `design` [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/cm.rs:520:13 [INFO] [stdout] | [INFO] [stdout] 520 | nodes: nodes, [INFO] [stdout] | ^^^^^^^^^^^^ help: replace it with: `nodes` [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/cm.rs:859:37 [INFO] [stdout] | [INFO] [stdout] 859 | ... semiclass: semiclass, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: replace it with: `semiclass` [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/cm.rs:860:37 [INFO] [stdout] | [INFO] [stdout] 860 | ... npn: npn, [INFO] [stdout] | ^^^^^^^^ help: replace it with: `npn` [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/npn.rs:29:13 [INFO] [stdout] | [INFO] [stdout] 29 | p: p, [INFO] [stdout] | ^^^^ help: replace it with: `p` [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/sm.rs:193:13 [INFO] [stdout] | [INFO] [stdout] 193 | cell: cell, [INFO] [stdout] | ^^^^^^^^^^ help: replace it with: `cell` [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/sm.rs:194:13 [INFO] [stdout] | [INFO] [stdout] 194 | pins: pins, [INFO] [stdout] | ^^^^^^^^^^ help: replace it with: `pins` [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/sm.rs:251:13 [INFO] [stdout] | [INFO] [stdout] 251 | per_cell: per_cell, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `per_cell` [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: the `key @ _` pattern can be written as just `key` [INFO] [stdout] --> src/target.rs:218:35 [INFO] [stdout] | [INFO] [stdout] 218 | Statement::SimpleAttr(key @ _, _) => key, [INFO] [stdout] | ^^^^^^^ help: try: `key` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern [INFO] [stdout] = note: `#[warn(clippy::redundant_pattern)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the `key @ _` pattern can be written as just `key` [INFO] [stdout] --> src/target.rs:219:36 [INFO] [stdout] | [INFO] [stdout] 219 | Statement::ComplexAttr(key @ _, _) => key, [INFO] [stdout] | ^^^^^^^ help: try: `key` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the `key @ _` pattern can be written as just `key` [INFO] [stdout] --> src/target.rs:220:30 [INFO] [stdout] | [INFO] [stdout] 220 | Statement::Group(key @ _, _, _) => key, [INFO] [stdout] | ^^^^^^^ help: try: `key` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the `key @ _` pattern can be written as just `key` [INFO] [stdout] --> src/target.rs:221:33 [INFO] [stdout] | [INFO] [stdout] 221 | Statement::Variable(key @ _, _) => key, [INFO] [stdout] | ^^^^^^^ help: try: `key` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `LibraryPort` [INFO] [stdout] --> src/cm.rs:7:34 [INFO] [stdout] | [INFO] [stdout] 7 | use crate::target::{LibraryCell, LibraryPort, SCLTarget}; [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the `stmts @ _` pattern can be written as just `stmts` [INFO] [stdout] --> src/target.rs:227:36 [INFO] [stdout] | [INFO] [stdout] 227 | Statement::Group(_, _, stmts @ _) => { [INFO] [stdout] | ^^^^^^^^^ help: try: `stmts` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the `el @ _` pattern can be written as just `el` [INFO] [stdout] --> src/target.rs:239:14 [INFO] [stdout] | [INFO] [stdout] 239 | [el @ _, ..] => Some(el), [INFO] [stdout] | ^^^^^^ help: try: `el` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the `stmts @ _` pattern can be written as just `stmts` [INFO] [stdout] --> src/target.rs:246:36 [INFO] [stdout] | [INFO] [stdout] 246 | Statement::Group(_, _, ref stmts @ _) => { [INFO] [stdout] | ^^^^^^^^^^^^^ help: try: `ref stmts` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the `s @ _` pattern can be written as just `s` [INFO] [stdout] --> src/target.rs:257:43 [INFO] [stdout] | [INFO] [stdout] 257 | Some(Statement::SimpleAttr(_, ref s @ _)) => Some(s), [INFO] [stdout] | ^^^^^^^^^ help: try: `ref s` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the `text @ _` pattern can be written as just `text` [INFO] [stdout] --> src/target.rs:285:19 [INFO] [stdout] | [INFO] [stdout] 285 | Token::Id(text @ _) | Token::String(text @ _) => return text, [INFO] [stdout] | ^^^^^^^^ help: try: `text` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the `text @ _` pattern can be written as just `text` [INFO] [stdout] --> src/target.rs:285:45 [INFO] [stdout] | [INFO] [stdout] 285 | Token::Id(text @ _) | Token::String(text @ _) => return text, [INFO] [stdout] | ^^^^^^^^ help: try: `text` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the `t @ _` pattern can be written as just `t` [INFO] [stdout] --> src/target.rs:286:9 [INFO] [stdout] | [INFO] [stdout] 286 | t @ _ => scanner.error(&format!("bad attr value {:?}", t)), [INFO] [stdout] | ^^^^^ help: try: `t` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the `t @ _` pattern can be written as just `t` [INFO] [stdout] --> src/target.rs:315:9 [INFO] [stdout] | [INFO] [stdout] 315 | t @ _ => { [INFO] [stdout] | ^^^^^ help: try: `t` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the `t @ _` pattern can be written as just `t` [INFO] [stdout] --> src/target.rs:336:13 [INFO] [stdout] | [INFO] [stdout] 336 | t @ _ => { [INFO] [stdout] | ^^^^^ help: try: `t` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the `ch @ _` pattern can be written as just `ch` [INFO] [stdout] --> src/target.rs:467:9 [INFO] [stdout] | [INFO] [stdout] 467 | ch @ _ => { [INFO] [stdout] | ^^^^^^ help: try: `ch` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the `text @ _` pattern can be written as just `text` [INFO] [stdout] --> src/target.rs:852:21 [INFO] [stdout] | [INFO] [stdout] 852 | text @ _ => { [INFO] [stdout] | ^^^^^^^^ help: try: `text` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the `v @ _` pattern can be written as just `v` [INFO] [stdout] --> src/target.rs:923:13 [INFO] [stdout] | [INFO] [stdout] 923 | v @ _ => { [INFO] [stdout] | ^^^^^ help: try: `v` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/cm.rs:519:13 [INFO] [stdout] | [INFO] [stdout] 519 | design: design, [INFO] [stdout] | ^^^^^^^^^^^^^^ help: replace it with: `design` [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/cm.rs:520:13 [INFO] [stdout] | [INFO] [stdout] 520 | nodes: nodes, [INFO] [stdout] | ^^^^^^^^^^^^ help: replace it with: `nodes` [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/cm.rs:859:37 [INFO] [stdout] | [INFO] [stdout] 859 | ... semiclass: semiclass, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: replace it with: `semiclass` [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/cm.rs:860:37 [INFO] [stdout] | [INFO] [stdout] 860 | ... npn: npn, [INFO] [stdout] | ^^^^^^^^ help: replace it with: `npn` [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/npn.rs:29:13 [INFO] [stdout] | [INFO] [stdout] 29 | p: p, [INFO] [stdout] | ^^^^ help: replace it with: `p` [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/sm.rs:193:13 [INFO] [stdout] | [INFO] [stdout] 193 | cell: cell, [INFO] [stdout] | ^^^^^^^^^^ help: replace it with: `cell` [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/sm.rs:194:13 [INFO] [stdout] | [INFO] [stdout] 194 | pins: pins, [INFO] [stdout] | ^^^^^^^^^^ help: replace it with: `pins` [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/sm.rs:251:13 [INFO] [stdout] | [INFO] [stdout] 251 | per_cell: per_cell, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `per_cell` [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: the `key @ _` pattern can be written as just `key` [INFO] [stdout] --> src/target.rs:218:35 [INFO] [stdout] | [INFO] [stdout] 218 | Statement::SimpleAttr(key @ _, _) => key, [INFO] [stdout] | ^^^^^^^ help: try: `key` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern [INFO] [stdout] = note: `#[warn(clippy::redundant_pattern)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the `key @ _` pattern can be written as just `key` [INFO] [stdout] --> src/target.rs:219:36 [INFO] [stdout] | [INFO] [stdout] 219 | Statement::ComplexAttr(key @ _, _) => key, [INFO] [stdout] | ^^^^^^^ help: try: `key` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the `key @ _` pattern can be written as just `key` [INFO] [stdout] --> src/target.rs:220:30 [INFO] [stdout] | [INFO] [stdout] 220 | Statement::Group(key @ _, _, _) => key, [INFO] [stdout] | ^^^^^^^ help: try: `key` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the `key @ _` pattern can be written as just `key` [INFO] [stdout] --> src/target.rs:221:33 [INFO] [stdout] | [INFO] [stdout] 221 | Statement::Variable(key @ _, _) => key, [INFO] [stdout] | ^^^^^^^ help: try: `key` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the `stmts @ _` pattern can be written as just `stmts` [INFO] [stdout] --> src/target.rs:227:36 [INFO] [stdout] | [INFO] [stdout] 227 | Statement::Group(_, _, stmts @ _) => { [INFO] [stdout] | ^^^^^^^^^ help: try: `stmts` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the `el @ _` pattern can be written as just `el` [INFO] [stdout] --> src/target.rs:239:14 [INFO] [stdout] | [INFO] [stdout] 239 | [el @ _, ..] => Some(el), [INFO] [stdout] | ^^^^^^ help: try: `el` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the `stmts @ _` pattern can be written as just `stmts` [INFO] [stdout] --> src/target.rs:246:36 [INFO] [stdout] | [INFO] [stdout] 246 | Statement::Group(_, _, ref stmts @ _) => { [INFO] [stdout] | ^^^^^^^^^^^^^ help: try: `ref stmts` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the `s @ _` pattern can be written as just `s` [INFO] [stdout] --> src/target.rs:257:43 [INFO] [stdout] | [INFO] [stdout] 257 | Some(Statement::SimpleAttr(_, ref s @ _)) => Some(s), [INFO] [stdout] | ^^^^^^^^^ help: try: `ref s` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the `text @ _` pattern can be written as just `text` [INFO] [stdout] --> src/target.rs:285:19 [INFO] [stdout] | [INFO] [stdout] 285 | Token::Id(text @ _) | Token::String(text @ _) => return text, [INFO] [stdout] | ^^^^^^^^ help: try: `text` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the `text @ _` pattern can be written as just `text` [INFO] [stdout] --> src/target.rs:285:45 [INFO] [stdout] | [INFO] [stdout] 285 | Token::Id(text @ _) | Token::String(text @ _) => return text, [INFO] [stdout] | ^^^^^^^^ help: try: `text` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the `t @ _` pattern can be written as just `t` [INFO] [stdout] --> src/target.rs:286:9 [INFO] [stdout] | [INFO] [stdout] 286 | t @ _ => scanner.error(&format!("bad attr value {:?}", t)), [INFO] [stdout] | ^^^^^ help: try: `t` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the `t @ _` pattern can be written as just `t` [INFO] [stdout] --> src/target.rs:315:9 [INFO] [stdout] | [INFO] [stdout] 315 | t @ _ => { [INFO] [stdout] | ^^^^^ help: try: `t` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the `t @ _` pattern can be written as just `t` [INFO] [stdout] --> src/target.rs:336:13 [INFO] [stdout] | [INFO] [stdout] 336 | t @ _ => { [INFO] [stdout] | ^^^^^ help: try: `t` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the `ch @ _` pattern can be written as just `ch` [INFO] [stdout] --> src/target.rs:467:9 [INFO] [stdout] | [INFO] [stdout] 467 | ch @ _ => { [INFO] [stdout] | ^^^^^^ help: try: `ch` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the `text @ _` pattern can be written as just `text` [INFO] [stdout] --> src/target.rs:852:21 [INFO] [stdout] | [INFO] [stdout] 852 | text @ _ => { [INFO] [stdout] | ^^^^^^^^ help: try: `text` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the `v @ _` pattern can be written as just `v` [INFO] [stdout] --> src/target.rs:923:13 [INFO] [stdout] | [INFO] [stdout] 923 | v @ _ => { [INFO] [stdout] | ^^^^^ help: try: `v` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `out_lo` is assigned to, but never used [INFO] [stdout] --> src/cm.rs:1262:17 [INFO] [stdout] | [INFO] [stdout] 1262 | let out_lo: Net; [INFO] [stdout] | ^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: consider using `_out_lo` instead [INFO] [stdout] = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `out_hi` is assigned to, but never used [INFO] [stdout] --> src/cm.rs:1263:17 [INFO] [stdout] | [INFO] [stdout] 1263 | let out_hi: Net; [INFO] [stdout] | ^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: consider using `_out_hi` instead [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: value assigned to `out_lo` is never read [INFO] [stdout] --> src/cm.rs:1271:17 [INFO] [stdout] | [INFO] [stdout] 1271 | out_lo = self.design.add_target(tie_lo)[index.tie_lo.1]; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: maybe it is overwritten before being read? [INFO] [stdout] = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: value assigned to `out_lo` is never read [INFO] [stdout] --> src/cm.rs:1267:17 [INFO] [stdout] | [INFO] [stdout] 1267 | out_lo = out[index.tie_lo.1]; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: maybe it is overwritten before being read? [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: value assigned to `out_hi` is never read [INFO] [stdout] --> src/cm.rs:1273:17 [INFO] [stdout] | [INFO] [stdout] 1273 | out_hi = self.design.add_target(tie_hi)[index.tie_hi.1]; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: maybe it is overwritten before being read? [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: value assigned to `out_hi` is never read [INFO] [stdout] --> src/cm.rs:1268:17 [INFO] [stdout] | [INFO] [stdout] 1268 | out_hi = out[index.tie_hi.1]; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: maybe it is overwritten before being read? [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unreachable pattern [INFO] [stdout] --> src/target.rs:739:38 [INFO] [stdout] | [INFO] [stdout] 679 | Some("combinational") | None => { [INFO] [stdout] | ---- matches all the relevant values [INFO] [stdout] ... [INFO] [stdout] 739 | Some("three_state_enable") | None => { [INFO] [stdout] | ^^^^ no value can reach this [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unreachable_patterns)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unreachable pattern [INFO] [stdout] --> src/target.rs:758:39 [INFO] [stdout] | [INFO] [stdout] 679 | Some("combinational") | None => { [INFO] [stdout] | ---- matches all the relevant values [INFO] [stdout] ... [INFO] [stdout] 758 | Some("three_state_disable") | None => { [INFO] [stdout] | ^^^^ no value can reach this [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unreachable pattern [INFO] [stdout] --> src/target.rs:734:9 [INFO] [stdout] | [INFO] [stdout] 732 | Some("clear") => vec![Clear(Rise), Clear(Fall)], [INFO] [stdout] | ------------- matches all the relevant values [INFO] [stdout] 733 | Some("preset") => vec![Preset(Rise), Preset(Fall)], [INFO] [stdout] 734 | Some("clear") => vec![Clear(Rise), Clear(Fall)], [INFO] [stdout] | ^^^^^^^^^^^^^ no value can reach this [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variants `Float`, `None`, and `Invalid` are never constructed [INFO] [stdout] --> src/target.rs:24:5 [INFO] [stdout] | [INFO] [stdout] 22 | enum Token { [INFO] [stdout] | ----- variants in this enum [INFO] [stdout] 23 | Punctuation(char), [INFO] [stdout] 24 | Float(f64), [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 27 | None, [INFO] [stdout] | ^^^^ [INFO] [stdout] 28 | EOF, [INFO] [stdout] 29 | Invalid, [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `Token` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `peek_is_digit` and `expect` are never used [INFO] [stdout] --> src/target.rs:48:8 [INFO] [stdout] | [INFO] [stdout] 32 | impl> Scanner { [INFO] [stdout] | ----------------------------------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 48 | fn peek_is_digit(&mut self) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 197 | fn expect(&mut self, expected: Token) { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variant `Unknown` is never constructed [INFO] [stdout] --> src/target.rs:551:5 [INFO] [stdout] | [INFO] [stdout] 546 | enum TableModelVariable { [INFO] [stdout] | ------------------ variant in this enum [INFO] [stdout] ... [INFO] [stdout] 551 | Unknown(String), [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `TableModelVariable` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `variable` and `indices` are never read [INFO] [stdout] --> src/target.rs:556:5 [INFO] [stdout] | [INFO] [stdout] 555 | struct TableModelAxis { [INFO] [stdout] | -------------- fields in this struct [INFO] [stdout] 556 | variable: TableModelVariable, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] 557 | indices: Vec, [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `TableModelAxis` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `axes` and `values` are never read [INFO] [stdout] --> src/target.rs:562:5 [INFO] [stdout] | [INFO] [stdout] 561 | struct TableModel { [INFO] [stdout] | ---------- fields in this struct [INFO] [stdout] 562 | axes: Vec, [INFO] [stdout] | ^^^^ [INFO] [stdout] 563 | values: Vec, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `TableModel` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `0` is never read [INFO] [stdout] --> src/target.rs:568:11 [INFO] [stdout] | [INFO] [stdout] 568 | Table(TableModel), [INFO] [stdout] | ----- ^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | field in this variant [INFO] [stdout] | [INFO] [stdout] = note: `ArcDelayModel` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] help: consider changing the field to be of unit type to suppress this warning while preserving the field numbering, or remove the field [INFO] [stdout] | [INFO] [stdout] 568 - Table(TableModel), [INFO] [stdout] 568 + Table(()), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `0` is never read [INFO] [stdout] --> src/target.rs:573:19 [INFO] [stdout] | [INFO] [stdout] 573 | Combinational(RiseFall, RiseFall), [INFO] [stdout] | ------------- ^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | field in this variant [INFO] [stdout] | [INFO] [stdout] = note: `ArcType` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] help: consider changing the field to be of unit type to suppress this warning while preserving the field numbering, or remove the field [INFO] [stdout] | [INFO] [stdout] 573 - Combinational(RiseFall, RiseFall), [INFO] [stdout] 573 + Combinational((), RiseFall), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `0` is never read [INFO] [stdout] --> src/target.rs:574:22 [INFO] [stdout] | [INFO] [stdout] 574 | ThreeStateEnable(RiseFall, RiseFall), [INFO] [stdout] | ---------------- ^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | field in this variant [INFO] [stdout] | [INFO] [stdout] = note: `ArcType` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] help: consider changing the field to be of unit type to suppress this warning while preserving the field numbering, or remove the field [INFO] [stdout] | [INFO] [stdout] 574 - ThreeStateEnable(RiseFall, RiseFall), [INFO] [stdout] 574 + ThreeStateEnable((), RiseFall), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `0` is never read [INFO] [stdout] --> src/target.rs:575:23 [INFO] [stdout] | [INFO] [stdout] 575 | ThreeStateDisable(RiseFall, RiseFall), [INFO] [stdout] | ----------------- ^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | field in this variant [INFO] [stdout] | [INFO] [stdout] = note: `ArcType` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] help: consider changing the field to be of unit type to suppress this warning while preserving the field numbering, or remove the field [INFO] [stdout] | [INFO] [stdout] 575 - ThreeStateDisable(RiseFall, RiseFall), [INFO] [stdout] 575 + ThreeStateDisable((), RiseFall), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `0` is never read [INFO] [stdout] --> src/target.rs:576:12 [INFO] [stdout] | [INFO] [stdout] 576 | Launch(RiseFall, RiseFall), [INFO] [stdout] | ------ ^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | field in this variant [INFO] [stdout] | [INFO] [stdout] = note: `ArcType` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] help: consider changing the field to be of unit type to suppress this warning while preserving the field numbering, or remove the field [INFO] [stdout] | [INFO] [stdout] 576 - Launch(RiseFall, RiseFall), [INFO] [stdout] 576 + Launch((), RiseFall), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `0` is never read [INFO] [stdout] --> src/target.rs:577:15 [INFO] [stdout] | [INFO] [stdout] 577 | HoldCheck(RiseFall, RiseFall), [INFO] [stdout] | --------- ^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | field in this variant [INFO] [stdout] | [INFO] [stdout] = note: `ArcType` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] help: consider changing the field to be of unit type to suppress this warning while preserving the field numbering, or remove the field [INFO] [stdout] | [INFO] [stdout] 577 - HoldCheck(RiseFall, RiseFall), [INFO] [stdout] 577 + HoldCheck((), RiseFall), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `0` is never read [INFO] [stdout] --> src/target.rs:578:16 [INFO] [stdout] | [INFO] [stdout] 578 | SetupCheck(RiseFall, RiseFall), [INFO] [stdout] | ---------- ^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | field in this variant [INFO] [stdout] | [INFO] [stdout] = note: `ArcType` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] help: consider changing the field to be of unit type to suppress this warning while preserving the field numbering, or remove the field [INFO] [stdout] | [INFO] [stdout] 578 - SetupCheck(RiseFall, RiseFall), [INFO] [stdout] 578 + SetupCheck((), RiseFall), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `0` is never read [INFO] [stdout] --> src/target.rs:579:21 [INFO] [stdout] | [INFO] [stdout] 579 | NonSeqHoldCheck(RiseFall, RiseFall), [INFO] [stdout] | --------------- ^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | field in this variant [INFO] [stdout] | [INFO] [stdout] = note: `ArcType` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] help: consider changing the field to be of unit type to suppress this warning while preserving the field numbering, or remove the field [INFO] [stdout] | [INFO] [stdout] 579 - NonSeqHoldCheck(RiseFall, RiseFall), [INFO] [stdout] 579 + NonSeqHoldCheck((), RiseFall), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `0` is never read [INFO] [stdout] --> src/target.rs:580:22 [INFO] [stdout] | [INFO] [stdout] 580 | NonSeqSetupCheck(RiseFall, RiseFall), [INFO] [stdout] | ---------------- ^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | field in this variant [INFO] [stdout] | [INFO] [stdout] = note: `ArcType` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] help: consider changing the field to be of unit type to suppress this warning while preserving the field numbering, or remove the field [INFO] [stdout] | [INFO] [stdout] 580 - NonSeqSetupCheck(RiseFall, RiseFall), [INFO] [stdout] 580 + NonSeqSetupCheck((), RiseFall), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `0` is never read [INFO] [stdout] --> src/target.rs:583:19 [INFO] [stdout] | [INFO] [stdout] 583 | RecoveryCheck(RiseFall, RiseFall), [INFO] [stdout] | ------------- ^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | field in this variant [INFO] [stdout] | [INFO] [stdout] = note: `ArcType` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] help: consider changing the field to be of unit type to suppress this warning while preserving the field numbering, or remove the field [INFO] [stdout] | [INFO] [stdout] 583 - RecoveryCheck(RiseFall, RiseFall), [INFO] [stdout] 583 + RecoveryCheck((), RiseFall), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `0` is never read [INFO] [stdout] --> src/target.rs:584:18 [INFO] [stdout] | [INFO] [stdout] 584 | RemovalCheck(RiseFall, RiseFall), [INFO] [stdout] | ------------ ^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | field in this variant [INFO] [stdout] | [INFO] [stdout] = note: `ArcType` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] help: consider changing the field to be of unit type to suppress this warning while preserving the field numbering, or remove the field [INFO] [stdout] | [INFO] [stdout] 584 - RemovalCheck(RiseFall, RiseFall), [INFO] [stdout] 584 + RemovalCheck((), RiseFall), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `0` is never read [INFO] [stdout] --> src/target.rs:586:13 [INFO] [stdout] | [INFO] [stdout] 586 | Unknown(String), [INFO] [stdout] | ------- ^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | field in this variant [INFO] [stdout] | [INFO] [stdout] = note: `ArcType` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] help: consider changing the field to be of unit type to suppress this warning while preserving the field numbering, or remove the field [INFO] [stdout] | [INFO] [stdout] 586 - Unknown(String), [INFO] [stdout] 586 + Unknown(()), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `arc_type`, `from_pin`, `to_pin`, `delay_model`, `constraint_model`, and `slew_model` are never read [INFO] [stdout] --> src/target.rs:624:5 [INFO] [stdout] | [INFO] [stdout] 623 | pub struct Arc { [INFO] [stdout] | --- fields in this struct [INFO] [stdout] 624 | arc_type: ArcType, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] 625 | from_pin: LibraryPortIndex, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] 626 | to_pin: LibraryPortIndex, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] 627 | delay_model: Option, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] 628 | constraint_model: Option, [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] 629 | slew_model: Option, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `Arc` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `cap`, `rise_cap`, and `fall_cap` are never read [INFO] [stdout] --> src/target.rs:645:5 [INFO] [stdout] | [INFO] [stdout] 641 | pub struct LibraryPort { [INFO] [stdout] | ----------- fields in this struct [INFO] [stdout] ... [INFO] [stdout] 645 | cap: f32, [INFO] [stdout] | ^^^ [INFO] [stdout] 646 | rise_cap: f32, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] 647 | fall_cap: f32, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `LibraryPort` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `unwrap` on `tie_hilo` after checking its variant with `is_some` [INFO] [stdout] --> src/cm.rs:96:42 [INFO] [stdout] | [INFO] [stdout] 91 | if tie_hilo.is_some() [INFO] [stdout] | ------------------ the check is happening here [INFO] [stdout] ... [INFO] [stdout] 96 | let (cell, hi_pin, lo_pin) = tie_hilo.unwrap(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: try using `match` [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_unwrap [INFO] [stdout] = note: `#[warn(clippy::unnecessary_unwrap)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/cm.rs:57:17 [INFO] [stdout] | [INFO] [stdout] 57 | / if cell.prototype.inputs.len() == 1 && *function == 1 { [INFO] [stdout] 58 | | if inverter.is_none() || cell.area < inverter.unwrap().area { [INFO] [stdout] 59 | | inverter = Some(cell); [INFO] [stdout] 60 | | } [INFO] [stdout] 61 | | } [INFO] [stdout] | |_________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] = note: `#[warn(clippy::collapsible_if)]` on by default [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 57 ~ if cell.prototype.inputs.len() == 1 && *function == 1 [INFO] [stdout] 58 ~ && (inverter.is_none() || cell.area < inverter.unwrap().area) { [INFO] [stdout] 59 | inverter = Some(cell); [INFO] [stdout] 60 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` can be collapsed into the outer `match` [INFO] [stdout] --> src/cm.rs:67:25 [INFO] [stdout] | [INFO] [stdout] 67 | / if tie_hilo.is_none() || cell.area < tie_hilo.unwrap().0.area { [INFO] [stdout] 68 | | tie_hilo = Some((cell, 1, 0)); [INFO] [stdout] 69 | | } [INFO] [stdout] | |_________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_match [INFO] [stdout] = note: `#[warn(clippy::collapsible_match)]` on by default [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 66 ~ [Some(0), Some(1)] [INFO] [stdout] 67 ~ if (tie_hilo.is_none() || cell.area < tie_hilo.unwrap().0.area) => { [INFO] [stdout] 68 | tie_hilo = Some((cell, 1, 0)); [INFO] [stdout] 69 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` can be collapsed into the outer `match` [INFO] [stdout] --> src/cm.rs:72:25 [INFO] [stdout] | [INFO] [stdout] 72 | / if tie_hilo.is_none() || cell.area < tie_hilo.unwrap().0.area { [INFO] [stdout] 73 | | tie_hilo = Some((cell, 0, 1)); [INFO] [stdout] 74 | | } [INFO] [stdout] | |_________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_match [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 71 ~ [Some(1), Some(0)] [INFO] [stdout] 72 ~ if (tie_hilo.is_none() || cell.area < tie_hilo.unwrap().0.area) => { [INFO] [stdout] 73 | tie_hilo = Some((cell, 0, 1)); [INFO] [stdout] 74 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` can be collapsed into the outer `match` [INFO] [stdout] --> src/cm.rs:77:25 [INFO] [stdout] | [INFO] [stdout] 77 | / if tie_hi.is_none() || cell.area < tie_hi.unwrap().0.area { [INFO] [stdout] 78 | | tie_hi = Some((cell, 0)); [INFO] [stdout] 79 | | } [INFO] [stdout] | |_________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_match [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 76 ~ [Some(1)] [INFO] [stdout] 77 ~ if (tie_hi.is_none() || cell.area < tie_hi.unwrap().0.area) => { [INFO] [stdout] 78 | tie_hi = Some((cell, 0)); [INFO] [stdout] 79 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` can be collapsed into the outer `match` [INFO] [stdout] --> src/cm.rs:82:25 [INFO] [stdout] | [INFO] [stdout] 82 | / if tie_lo.is_none() || cell.area < tie_lo.unwrap().0.area { [INFO] [stdout] 83 | | tie_lo = Some((cell, 0)); [INFO] [stdout] 84 | | } [INFO] [stdout] | |_________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_match [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 81 ~ [Some(0)] [INFO] [stdout] 82 ~ if (tie_lo.is_none() || cell.area < tie_lo.unwrap().0.area) => { [INFO] [stdout] 83 | tie_lo = Some((cell, 0)); [INFO] [stdout] 84 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `Box>`. Consider using just `Vec<..>` [INFO] [stdout] --> src/cm.rs:141:32 [INFO] [stdout] | [INFO] [stdout] 141 | eliminated_support: Option>>, [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: `Vec<..>` is already on the heap, `Box>` makes an extra allocation [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#box_collection [INFO] [stdout] = note: `#[warn(clippy::box_collection)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/cm.rs:281:5 [INFO] [stdout] | [INFO] [stdout] 281 | return true; [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] = note: `#[warn(clippy::needless_return)]` on by default [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 281 - return true; [INFO] [stdout] 281 + true [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/cm.rs:371:13 [INFO] [stdout] | [INFO] [stdout] 371 | return (NodeFunction::And, vec![net1, net2]); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 371 - return (NodeFunction::And, vec![net1, net2]); [INFO] [stdout] 371 + (NodeFunction::And, vec![net1, net2]) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/cm.rs:382:13 [INFO] [stdout] | [INFO] [stdout] 382 | return (NodeFunction::And, vec![net1, net2]); [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] 382 - return (NodeFunction::And, vec![net1, net2]); [INFO] [stdout] 382 + (NodeFunction::And, vec![net1, net2]) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/cm.rs:387:13 [INFO] [stdout] | [INFO] [stdout] 387 | return (NodeFunction::Nand, vec![!net1, !net2]); [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] 387 - return (NodeFunction::Nand, vec![!net1, !net2]); [INFO] [stdout] 387 + (NodeFunction::Nand, vec![!net1, !net2]) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/cm.rs:392:13 [INFO] [stdout] | [INFO] [stdout] 392 | return (NodeFunction::Xor, vec![net1, net2]); [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] 392 - return (NodeFunction::Xor, vec![net1, net2]); [INFO] [stdout] 392 + (NodeFunction::Xor, vec![net1, net2]) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/cm.rs:398:13 [INFO] [stdout] | [INFO] [stdout] 398 | return (NodeFunction::Mux, vec![net1, net2, net3]); [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] 398 - return (NodeFunction::Mux, vec![net1, net2, net3]); [INFO] [stdout] 398 + (NodeFunction::Mux, vec![net1, net2, net3]) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/cm.rs:450:52 [INFO] [stdout] | [INFO] [stdout] 450 | let cnet = remove_invertor(&sm_index, design, net); [INFO] [stdout] | ^^^^^^^^^ help: change this to: `sm_index` [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/cm.rs:470:52 [INFO] [stdout] | [INFO] [stdout] 470 | let cnet = remove_invertor(&sm_index, design, net); [INFO] [stdout] | ^^^^^^^^^ help: change this to: `sm_index` [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/cm.rs:503:52 [INFO] [stdout] | [INFO] [stdout] 503 | let cnet = remove_invertor(&sm_index, design, net); [INFO] [stdout] | ^^^^^^^^^ help: change this to: `sm_index` [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 unit return type [INFO] [stdout] --> src/cm.rs:535:58 [INFO] [stdout] | [INFO] [stdout] 535 | fn index_nodes(&mut self, target_index: &TargetIndex) -> () { [INFO] [stdout] | ^^^^^^ help: remove the `-> ()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_unit [INFO] [stdout] = note: `#[warn(clippy::unused_unit)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual `RangeInclusive::contains` implementation [INFO] [stdout] --> src/cm.rs:611:17 [INFO] [stdout] | [INFO] [stdout] 611 | assert!(max_cut >= 3 && max_cut <= CUT_MAXIMUM); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use: `(3..=CUT_MAXIMUM).contains(&max_cut)` [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: you seem to be trying to use `Box>`. Consider using just `Vec<..>` [INFO] [stdout] --> src/cm.rs:619:40 [INFO] [stdout] | [INFO] [stdout] 619 | eliminated_support: Option>>, [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: `Vec<..>` is already on the heap, `Box>` makes an extra allocation [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#box_collection [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/cm.rs:724:13 [INFO] [stdout] | [INFO] [stdout] 724 | return false; [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] 724 - return false; [INFO] [stdout] 724 + false [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression borrows a value the compiler would automatically borrow [INFO] [stdout] --> src/cm.rs:775:21 [INFO] [stdout] | [INFO] [stdout] 775 | (&mut pcuts_all[..]).split_at_mut((node.fid as usize) * npriority_cuts); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: change this to: `pcuts_all[..]` [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: casting to the same type is unnecessary (`usize` -> `usize`) [INFO] [stdout] --> src/cm.rs:803:59 [INFO] [stdout] | [INFO] [stdout] 803 | ... &pcuts_below[base..base + (fanin_cache.ps_len as usize)] [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `fanin_cache.ps_len` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] = note: `#[warn(clippy::unnecessary_cast)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting to the same type is unnecessary (`usize` -> `usize`) [INFO] [stdout] --> src/cm.rs:807:59 [INFO] [stdout] | [INFO] [stdout] 807 | ... &pcuts_above[base..base + (fanin_cache.ps_len as usize)] [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `fanin_cache.ps_len` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/cm.rs:885:25 [INFO] [stdout] | [INFO] [stdout] 885 | return false; [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] 885 - return false; [INFO] [stdout] 885 + false [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `idx` is used to index `structural_cut` [INFO] [stdout] --> src/cm.rs:835:36 [INFO] [stdout] | [INFO] [stdout] 835 | for idx in 0..structural_cut.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 and enumerate() [INFO] [stdout] | [INFO] [stdout] 835 - for idx in 0..structural_cut.len() { [INFO] [stdout] 835 + for (idx, ) in structural_cut.iter().enumerate() { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant pattern matching, consider using `is_some()` [INFO] [stdout] --> src/cm.rs:856:32 [INFO] [stdout] | [INFO] [stdout] 856 | if let Some(_) = target_index.classes.get(&(cut.len(), semiclass)) { [INFO] [stdout] | -------^^^^^^^---------------------------------------------------- help: try: `if target_index.classes.get(&(cut.len(), semiclass)).is_some()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern_matching [INFO] [stdout] = note: `#[warn(clippy::redundant_pattern_matching)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/cm.rs:966:13 [INFO] [stdout] | [INFO] [stdout] 966 | / if cut_pol.map_fouts == 0 { [INFO] [stdout] 967 | | if !matches!(cut_node.role, Pi(_)) { [INFO] [stdout] 968 | | descend = true; [INFO] [stdout] 969 | | } [INFO] [stdout] 970 | | } [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 966 ~ if cut_pol.map_fouts == 0 [INFO] [stdout] 967 ~ && !matches!(cut_node.role, Pi(_)) { [INFO] [stdout] 968 | descend = true; [INFO] [stdout] 969 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for an equality check. Consider using `if` [INFO] [stdout] --> src/cm.rs:989:13 [INFO] [stdout] | [INFO] [stdout] 989 | / match node.role { [INFO] [stdout] 990 | | Guts => { [INFO] [stdout] 991 | | self.deref_cut(net, C); [INFO] [stdout] ... | [INFO] [stdout] 994 | | } [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] 989 ~ if node.role == Guts { [INFO] [stdout] 990 + self.deref_cut(net, C); [INFO] [stdout] 991 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `NPN` which implements the `Copy` trait [INFO] [stdout] --> src/cm.rs:1081:41 [INFO] [stdout] | [INFO] [stdout] 1081 | let match_npn = match_.npn.clone(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `match_.npn` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] = note: `#[warn(clippy::clone_on_copy)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `NPN` which implements the `Copy` trait [INFO] [stdout] --> src/cm.rs:1151:41 [INFO] [stdout] | [INFO] [stdout] 1151 | let match_npn = match_.npn.clone(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `match_.npn` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `map(..).flatten()` on `Iterator` [INFO] [stdout] --> src/cm.rs:1248:14 [INFO] [stdout] | [INFO] [stdout] 1248 | .map(|cell| { [INFO] [stdout] | ______________^ [INFO] [stdout] 1249 | | cell.metadata() [INFO] [stdout] 1250 | | .iter() [INFO] [stdout] 1251 | | .filter_map(|item_ref| match item_ref.get() { [INFO] [stdout] ... | [INFO] [stdout] 1256 | | }) [INFO] [stdout] 1257 | | .flatten() [INFO] [stdout] | |______________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_flatten [INFO] [stdout] = note: `#[warn(clippy::map_flatten)]` on by default [INFO] [stdout] help: try replacing `map` with `flat_map` and remove the `.flatten()` [INFO] [stdout] | [INFO] [stdout] 1248 ~ .flat_map(|cell| { [INFO] [stdout] 1249 + cell.metadata() [INFO] [stdout] 1250 + .iter() [INFO] [stdout] 1251 + .filter_map(|item_ref| match item_ref.get() { [INFO] [stdout] 1252 + NamedScope { .. } | IndexedScope { .. } => Some(item_ref), [INFO] [stdout] 1253 + MetaItem::Ident { scope, .. } => Some(scope), [INFO] [stdout] 1254 + _ => None, [INFO] [stdout] 1255 + }) [INFO] [stdout] 1256 + }) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/cm.rs:1364:54 [INFO] [stdout] | [INFO] [stdout] 1364 | .replace_value(*to, *complements.get(&from).unwrap()); [INFO] [stdout] | ^^^^^ help: change this to: `from` [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 `COFACTOR_MASKS` [INFO] [stdout] --> src/dar.rs:32:18 [INFO] [stdout] | [INFO] [stdout] 32 | for i in 0..(ninputs) { [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] 32 - for i in 0..(ninputs) { [INFO] [stdout] 32 + for in COFACTOR_MASKS.iter().take((ninputs)) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/dar.rs:188:5 [INFO] [stdout] | [INFO] [stdout] 188 | return true; [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 188 - return true; [INFO] [stdout] 188 + true [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: usage of `contains_key` followed by `insert` on a `HashMap` [INFO] [stdout] --> src/dar.rs:216:21 [INFO] [stdout] | [INFO] [stdout] 216 | / if !structural_index.contains_key(&key) { [INFO] [stdout] 217 | | structural_index.insert(key, out); [INFO] [stdout] 218 | | } [INFO] [stdout] | |_____________________^ help: try: `structural_index.entry(key).or_insert(out);` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_entry [INFO] [stdout] = note: `#[warn(clippy::map_entry)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/dar.rs:271:20 [INFO] [stdout] | [INFO] [stdout] 271 | if !leaves.binary_search(fanin).is_ok() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `leaves.binary_search(fanin).is_err()` [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: in an `if` condition, avoid complex blocks or closures with blocks; instead, move the block or closure higher and bind it with a `let` [INFO] [stdout] --> src/dar.rs:264:13 [INFO] [stdout] | [INFO] [stdout] 264 | / if { [INFO] [stdout] 265 | | let mut use_counts = self.use_counts.borrow_mut(); [INFO] [stdout] 266 | | let nrefs = use_counts.get_mut(fanin).unwrap(); [INFO] [stdout] 267 | | *nrefs -= 1; [INFO] [stdout] 268 | | assert!(*nrefs >= 0); [INFO] [stdout] 269 | | *nrefs == 0 [INFO] [stdout] 270 | | } { [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#blocks_in_conditions [INFO] [stdout] = note: `#[warn(clippy::blocks_in_conditions)]` on by default [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 264 ~ let res = { [INFO] [stdout] 265 + let mut use_counts = self.use_counts.borrow_mut(); [INFO] [stdout] 266 + let nrefs = use_counts.get_mut(fanin).unwrap(); [INFO] [stdout] 267 + *nrefs -= 1; [INFO] [stdout] 268 + assert!(*nrefs >= 0); [INFO] [stdout] 269 + *nrefs == 0 [INFO] [stdout] 270 ~ }; if res { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/dar.rs:264:13 [INFO] [stdout] | [INFO] [stdout] 264 | / if { [INFO] [stdout] 265 | | let mut use_counts = self.use_counts.borrow_mut(); [INFO] [stdout] 266 | | let nrefs = use_counts.get_mut(fanin).unwrap(); [INFO] [stdout] 267 | | *nrefs -= 1; [INFO] [stdout] ... | [INFO] [stdout] 274 | | } [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 270 ~ } [INFO] [stdout] 271 ~ && !leaves.binary_search(fanin).is_ok() { [INFO] [stdout] 272 | nnodes += self.unref(*fanin, leaves); [INFO] [stdout] 273 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/dar.rs:311:20 [INFO] [stdout] | [INFO] [stdout] 311 | if !leaves.binary_search(fanin).is_ok() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `leaves.binary_search(fanin).is_err()` [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: in an `if` condition, avoid complex blocks or closures with blocks; instead, move the block or closure higher and bind it with a `let` [INFO] [stdout] --> src/dar.rs:304:13 [INFO] [stdout] | [INFO] [stdout] 304 | / if { [INFO] [stdout] 305 | | let mut use_counts = self.use_counts.borrow_mut(); [INFO] [stdout] 306 | | let nrefs = use_counts.get_mut(fanin).unwrap(); [INFO] [stdout] 307 | | *nrefs += 1; [INFO] [stdout] 308 | | assert!(*nrefs >= 1); [INFO] [stdout] 309 | | *nrefs == 1 [INFO] [stdout] 310 | | } { [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#blocks_in_conditions [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 304 ~ let res = { [INFO] [stdout] 305 + let mut use_counts = self.use_counts.borrow_mut(); [INFO] [stdout] 306 + let nrefs = use_counts.get_mut(fanin).unwrap(); [INFO] [stdout] 307 + *nrefs += 1; [INFO] [stdout] 308 + assert!(*nrefs >= 1); [INFO] [stdout] 309 + *nrefs == 1 [INFO] [stdout] 310 ~ }; if res { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/dar.rs:304:13 [INFO] [stdout] | [INFO] [stdout] 304 | / if { [INFO] [stdout] 305 | | let mut use_counts = self.use_counts.borrow_mut(); [INFO] [stdout] 306 | | let nrefs = use_counts.get_mut(fanin).unwrap(); [INFO] [stdout] 307 | | *nrefs += 1; [INFO] [stdout] ... | [INFO] [stdout] 314 | | } [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 310 ~ } [INFO] [stdout] 311 ~ && !leaves.binary_search(fanin).is_ok() { [INFO] [stdout] 312 | self.ref_(*fanin, leaves); [INFO] [stdout] 313 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/dar.rs:347:51 [INFO] [stdout] | [INFO] [stdout] 347 | || stopping_set.binary_search(&inet).is_ok() [INFO] [stdout] | ^^^^^ help: change this to: `inet` [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/dar.rs:348:38 [INFO] [stdout] | [INFO] [stdout] 348 | || seen.contains(&inet) [INFO] [stdout] | ^^^^^ help: change this to: `inet` [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 boolean expression can be simplified [INFO] [stdout] --> src/dar.rs:557:12 [INFO] [stdout] | [INFO] [stdout] 557 | if !best.is_none() { [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: try: `best.is_some()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `unwrap` on `best` after checking its variant with `is_none` [INFO] [stdout] --> src/dar.rs:558:29 [INFO] [stdout] | [INFO] [stdout] 557 | if !best.is_none() { [INFO] [stdout] | -------------- the check is happening here [INFO] [stdout] 558 | let candidate = best.unwrap(); [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: try using `match` [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_unwrap [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `idx` is used to index `structural_cut` [INFO] [stdout] --> src/dar.rs:453:28 [INFO] [stdout] | [INFO] [stdout] 453 | for idx in 0..structural_cut.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 and enumerate() [INFO] [stdout] | [INFO] [stdout] 453 - for idx in 0..structural_cut.len() { [INFO] [stdout] 453 + for (idx, ) in structural_cut.iter().enumerate() { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting to the same type is unnecessary (`usize` -> `usize`) [INFO] [stdout] --> src/dar.rs:483:63 [INFO] [stdout] | [INFO] [stdout] 483 | ... let net = cut[struct_to_cut.p[idx as usize] as usize]; [INFO] [stdout] | ^^^^^^^^^^^^ help: try: `idx` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting to the same type is unnecessary (`usize` -> `usize`) [INFO] [stdout] --> src/dar.rs:487:58 [INFO] [stdout] | [INFO] [stdout] 487 | ... struct_to_cut.ic[idx as usize], [INFO] [stdout] | ^^^^^^^^^^^^ help: try: `idx` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/dar.rs:525:47 [INFO] [stdout] | [INFO] [stdout] 525 | ... if use_counts.get(&out).copied().unwrap_or(0) == 0 || head == *out { [INFO] [stdout] | ^^^^ help: change this to: `out` [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: casting to the same type is unnecessary (`i32` -> `i32`) [INFO] [stdout] --> src/dar.rs:533:68 [INFO] [stdout] | [INFO] [stdout] 533 | let weight_delta = current_weight as i32 - repl_weight as i32; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: try: `repl_weight` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting to the same type is unnecessary (`usize` -> `usize`) [INFO] [stdout] --> src/dar.rs:571:55 [INFO] [stdout] | [INFO] [stdout] 571 | candidate.cut[candidate.map.p[idx as usize] as usize], [INFO] [stdout] | ^^^^^^^^^^^^ help: try: `idx` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting to the same type is unnecessary (`usize` -> `usize`) [INFO] [stdout] --> src/dar.rs:572:42 [INFO] [stdout] | [INFO] [stdout] 572 | candidate.map.ic[idx as usize], [INFO] [stdout] | ^^^^^^^^^^^^ help: try: `idx` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/dar.rs:596:39 [INFO] [stdout] | [INFO] [stdout] 596 | if use_counts.get(&out).copied().unwrap_or(0) != 0 { [INFO] [stdout] | ^^^^ help: change this to: `out` [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/dar.rs:625:45 [INFO] [stdout] | [INFO] [stdout] 625 | let new_net = new_head.into_pos(&self.design); [INFO] [stdout] | ^^^^^^^^^^^^ help: change this to: `self.design` [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: in an `if` condition, avoid complex blocks or closures with blocks; instead, move the block or closure higher and bind it with a `let` [INFO] [stdout] --> src/dar.rs:631:17 [INFO] [stdout] | [INFO] [stdout] 631 | / if { [INFO] [stdout] 632 | | let use_counts = self.use_counts.borrow(); [INFO] [stdout] 633 | | use_counts.get(&node).copied().unwrap_or(0) == 0 [INFO] [stdout] 634 | | && !self.substituted.contains(&node) [INFO] [stdout] 635 | | } { [INFO] [stdout] | |_________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#blocks_in_conditions [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 631 ~ let res = { [INFO] [stdout] 632 + let use_counts = self.use_counts.borrow(); [INFO] [stdout] 633 + use_counts.get(&node).copied().unwrap_or(0) == 0 [INFO] [stdout] 634 + && !self.substituted.contains(&node) [INFO] [stdout] 635 ~ }; if res { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` can be collapsed into the outer `match` [INFO] [stdout] --> src/dar.rs:690:21 [INFO] [stdout] | [INFO] [stdout] 690 | / if { [INFO] [stdout] 691 | | let use_counts = self.use_counts.borrow_mut(); [INFO] [stdout] 692 | | use_counts [INFO] [stdout] 693 | | .get(&cell_ref.output().unwrap_net()) [INFO] [stdout] ... | [INFO] [stdout] 698 | | self.rewrite(cell_ref.output().unwrap_net()) [INFO] [stdout] 699 | | } [INFO] [stdout] | |_____________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_match [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 689 ~ Cell::Aig(_, _) | Cell::Xor(_, _) [INFO] [stdout] 690 | if { [INFO] [stdout] ... [INFO] [stdout] 696 | != 0 [INFO] [stdout] 697 ~ } => { [INFO] [stdout] 698 | self.rewrite(cell_ref.output().unwrap_net()) [INFO] [stdout] 699 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: in an `if` condition, avoid complex blocks or closures with blocks; instead, move the block or closure higher and bind it with a `let` [INFO] [stdout] --> src/dar.rs:690:21 [INFO] [stdout] | [INFO] [stdout] 690 | / if { [INFO] [stdout] 691 | | let use_counts = self.use_counts.borrow_mut(); [INFO] [stdout] 692 | | use_counts [INFO] [stdout] 693 | | .get(&cell_ref.output().unwrap_net()) [INFO] [stdout] ... | [INFO] [stdout] 696 | | != 0 [INFO] [stdout] 697 | | } { [INFO] [stdout] | |_____________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#blocks_in_conditions [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 690 ~ let res = { [INFO] [stdout] 691 + let use_counts = self.use_counts.borrow_mut(); [INFO] [stdout] 692 + use_counts [INFO] [stdout] 693 + .get(&cell_ref.output().unwrap_net()) [INFO] [stdout] 694 + .copied() [INFO] [stdout] 695 + .unwrap_or(0) [INFO] [stdout] 696 + != 0 [INFO] [stdout] 697 ~ }; if res { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `i` is used to index `p` [INFO] [stdout] --> src/npn.rs:23:18 [INFO] [stdout] | [INFO] [stdout] 23 | for i in 0..ninputs { [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 and enumerate() [INFO] [stdout] | [INFO] [stdout] 23 - for i in 0..ninputs { [INFO] [stdout] 23 + for (i, ) in p.iter_mut().enumerate().take(ninputs) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/npn.rs:80:9 [INFO] [stdout] | [INFO] [stdout] 80 | return ret; [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] 80 - return ret; [INFO] [stdout] 80 + ret [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/npn.rs:98:9 [INFO] [stdout] | [INFO] [stdout] 98 | return true; [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 98 - return true; [INFO] [stdout] 98 + true [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded unit return type [INFO] [stdout] --> src/npn.rs:208:19 [INFO] [stdout] | [INFO] [stdout] 208 | F: FnMut(&NPN) -> (), [INFO] [stdout] | ^^^^^^ help: remove the `-> ()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_unit [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/npn.rs:286:21 [INFO] [stdout] | [INFO] [stdout] 286 | / if tied[j as usize] != 0 { [INFO] [stdout] 287 | | if next_permutation(&mut order[j..(j + tied[j] + 1)]) { [INFO] [stdout] 288 | | continue 'permute; [INFO] [stdout] 289 | | } [INFO] [stdout] 290 | | } [INFO] [stdout] | |_____________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 286 ~ if tied[j as usize] != 0 [INFO] [stdout] 287 ~ && next_permutation(&mut order[j..(j + tied[j] + 1)]) { [INFO] [stdout] 288 | continue 'permute; [INFO] [stdout] 289 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting to the same type is unnecessary (`usize` -> `usize`) [INFO] [stdout] --> src/npn.rs:286:29 [INFO] [stdout] | [INFO] [stdout] 286 | if tied[j as usize] != 0 { [INFO] [stdout] | ^^^^^^^^^^ help: try: `j` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `FeatureSet` which implements the `Copy` trait [INFO] [stdout] --> src/sm.rs:22:23 [INFO] [stdout] | [INFO] [stdout] 22 | let mut ret = self.clone(); [INFO] [stdout] | ^^^^^^^^^^^^ help: try dereferencing it: `*self` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `FeatureSet` which implements the `Copy` trait [INFO] [stdout] --> src/sm.rs:29:23 [INFO] [stdout] | [INFO] [stdout] 29 | let mut ret = self.clone(); [INFO] [stdout] | ^^^^^^^^^^^^ help: try dereferencing it: `*self` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `FeatureSet` which implements the `Copy` trait [INFO] [stdout] --> src/sm.rs:36:23 [INFO] [stdout] | [INFO] [stdout] 36 | let mut ret = self.clone(); [INFO] [stdout] | ^^^^^^^^^^^^ help: try dereferencing it: `*self` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `FeatureSet` which implements the `Copy` trait [INFO] [stdout] --> src/sm.rs:43:23 [INFO] [stdout] | [INFO] [stdout] 43 | let mut ret = self.clone(); [INFO] [stdout] | ^^^^^^^^^^^^ help: try dereferencing it: `*self` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/sm.rs:170:9 [INFO] [stdout] | [INFO] [stdout] 170 | return !negated && pin == *ff_pin_expr; [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] 170 - return !negated && pin == *ff_pin_expr; [INFO] [stdout] 170 + !negated && pin == *ff_pin_expr [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/sm.rs:180:9 [INFO] [stdout] | [INFO] [stdout] 180 | return (negated && pin == *ff_pin_expr) || (!negated && pin == *ff_pin_negated_expr); [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] 180 - return (negated && pin == *ff_pin_expr) || (!negated && pin == *ff_pin_negated_expr); [INFO] [stdout] 180 + (negated && pin == *ff_pin_expr) || (!negated && pin == *ff_pin_negated_expr) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field assignment outside of initializer for an instance created with Default::default() [INFO] [stdout] --> src/sm.rs:280:13 [INFO] [stdout] | [INFO] [stdout] 280 | feats.clocked = true; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] note: consider initializing the variable with `sm::FeatureSet { clocked: true, clock_polarity: slice.clock.is_positive(), ..Default::default() }` and removing relevant reassignments [INFO] [stdout] --> src/sm.rs:279:13 [INFO] [stdout] | [INFO] [stdout] 279 | let mut feats = FeatureSet::default(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#field_reassign_with_default [INFO] [stdout] = note: `#[warn(clippy::field_reassign_with_default)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: name `EOF` contains a capitalized acronym [INFO] [stdout] --> src/target.rs:28:5 [INFO] [stdout] | [INFO] [stdout] 28 | EOF, [INFO] [stdout] | ^^^ help: consider making the acronym lowercase, except the initial letter (notice the capitalization): `Eof` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#upper_case_acronyms [INFO] [stdout] = note: `#[warn(clippy::upper_case_acronyms)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual check for common ascii range [INFO] [stdout] --> src/target.rs:52:9 [INFO] [stdout] | [INFO] [stdout] 52 | matches!(ch, '0'..='9') [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_is_ascii_check [INFO] [stdout] = note: `#[warn(clippy::manual_is_ascii_check)]` on by default [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 52 - matches!(ch, '0'..='9') [INFO] [stdout] 52 + ch.is_ascii_digit() [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: replacing a value of type `T` with `T::default()` is better expressed using `std::mem::take` [INFO] [stdout] --> src/target.rs:90:9 [INFO] [stdout] | [INFO] [stdout] 90 | std::mem::replace(&mut self.staging, String::new()) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using: `std::mem::take(&mut self.staging)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#mem_replace_with_default [INFO] [stdout] = note: `#[warn(clippy::mem_replace_with_default)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: binary comparison to literal `Option::None` [INFO] [stdout] --> src/target.rs:94:17 [INFO] [stdout] | [INFO] [stdout] 94 | assert!(self.inject == None); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ help: use `Option::is_none()` instead: `self.inject.is_none()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#partialeq_to_none [INFO] [stdout] = note: `#[warn(clippy::partialeq_to_none)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant pattern matching, consider using `is_some()` [INFO] [stdout] --> src/target.rs:99:16 [INFO] [stdout] | [INFO] [stdout] 99 | if let Some(_) = &self.inject { [INFO] [stdout] | -------^^^^^^^--------------- help: try: `if self.inject.is_some()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern_matching [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: replacing an `Option` with `None` [INFO] [stdout] --> src/target.rs:100:20 [INFO] [stdout] | [INFO] [stdout] 100 | return std::mem::replace(&mut self.inject, None).unwrap(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider `Option::take()` instead: `self.inject.take()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#mem_replace_option_with_none [INFO] [stdout] = note: `#[warn(clippy::mem_replace_option_with_none)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/target.rs:190:13 [INFO] [stdout] | [INFO] [stdout] 190 | return true; [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 190 - return true; [INFO] [stdout] 190 + true [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/target.rs:193:13 [INFO] [stdout] | [INFO] [stdout] 193 | return false; [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] 193 - return false; [INFO] [stdout] 193 + false [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/target.rs:226:9 [INFO] [stdout] | [INFO] [stdout] 226 | / match self { [INFO] [stdout] 227 | | Statement::Group(_, _, stmts @ _) => { [INFO] [stdout] 228 | | for stmt in &mut *stmts { [INFO] [stdout] 229 | | stmt.sort(); [INFO] [stdout] ... | [INFO] [stdout] 233 | | _ => {} [INFO] [stdout] 234 | | } [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] 226 ~ if let Statement::Group(_, _, stmts @ _) = self { [INFO] [stdout] 227 + for stmt in &mut *stmts { [INFO] [stdout] 228 + stmt.sort(); [INFO] [stdout] 229 + } [INFO] [stdout] 230 + stmts.sort_by(|a, b| a.key().cmp(b.key())); [INFO] [stdout] 231 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/target.rs:285:58 [INFO] [stdout] | [INFO] [stdout] 285 | Token::Id(text @ _) | Token::String(text @ _) => return text, [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] 285 - Token::Id(text @ _) | Token::String(text @ _) => return text, [INFO] [stdout] 285 + Token::Id(text @ _) | Token::String(text @ _) => text, [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/target.rs:349:9 [INFO] [stdout] | [INFO] [stdout] 349 | return Statement::Group(label, attrs, statements); [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] 349 - return Statement::Group(label, attrs, statements); [INFO] [stdout] 349 + Statement::Group(label, attrs, statements) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/target.rs:352:9 [INFO] [stdout] | [INFO] [stdout] 352 | return Statement::ComplexAttr(label, attrs); [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] 352 - return Statement::ComplexAttr(label, attrs); [INFO] [stdout] 352 + Statement::ComplexAttr(label, attrs) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/target.rs:400:5 [INFO] [stdout] | [INFO] [stdout] 400 | return Some((negated, pin)); [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] 400 - return Some((negated, pin)); [INFO] [stdout] 400 + Some((negated, pin)) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: binary comparison to literal `Option::None` [INFO] [stdout] --> src/target.rs:363:13 [INFO] [stdout] | [INFO] [stdout] 363 | assert!(chars.peek() != None); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: use `Option::is_some()` instead: `chars.peek().is_some()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#partialeq_to_none [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: binary comparison to literal `Option::None` [INFO] [stdout] --> src/target.rs:406:8 [INFO] [stdout] | [INFO] [stdout] 406 | if chars.peek() != None { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: use `Option::is_some()` instead: `chars.peek().is_some()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#partialeq_to_none [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/target.rs:527:5 [INFO] [stdout] | [INFO] [stdout] 527 | return Some(lhs); [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] 527 - return Some(lhs); [INFO] [stdout] 527 + Some(lhs) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: binary comparison to literal `Option::None` [INFO] [stdout] --> src/target.rs:424:13 [INFO] [stdout] | [INFO] [stdout] 424 | assert!(chars.peek() != None); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: use `Option::is_some()` instead: `chars.peek().is_some()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#partialeq_to_none [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: binary comparison to literal `Option::None` [INFO] [stdout] --> src/target.rs:477:12 [INFO] [stdout] | [INFO] [stdout] 477 | if chars.peek() == None { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: use `Option::is_none()` instead: `chars.peek().is_none()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#partialeq_to_none [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/target.rs:680:13 [INFO] [stdout] | [INFO] [stdout] 680 | / return match sense { [INFO] [stdout] 681 | | Some("positive_unate") => vec![Comb(Rise, Rise), Comb(Fall, Fall)], [INFO] [stdout] 682 | | Some("negative_unate") => vec![Comb(Rise, Fall), Comb(Fall, Rise)], [INFO] [stdout] 683 | | Some("non_unate") => vec![ [INFO] [stdout] ... | [INFO] [stdout] 692 | | } [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] 680 ~ match sense { [INFO] [stdout] 681 + Some("positive_unate") => vec![Comb(Rise, Rise), Comb(Fall, Fall)], [INFO] [stdout] 682 + Some("negative_unate") => vec![Comb(Rise, Fall), Comb(Fall, Rise)], [INFO] [stdout] 683 + Some("non_unate") => vec![ [INFO] [stdout] 684 + Comb(Rise, Rise), [INFO] [stdout] 685 + Comb(Rise, Fall), [INFO] [stdout] 686 + Comb(Fall, Rise), [INFO] [stdout] 687 + Comb(Fall, Fall), [INFO] [stdout] 688 + ], [INFO] [stdout] 689 + _ => { [INFO] [stdout] 690 + panic!("bad timing_sense value {:?}", sense) [INFO] [stdout] 691 + } [INFO] [stdout] 692 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/target.rs:695:13 [INFO] [stdout] | [INFO] [stdout] 695 | / return match sense { [INFO] [stdout] 696 | | Some("positive_unate") => vec![Comb(Rise, Rise)], [INFO] [stdout] 697 | | Some("negative_unate") => vec![Comb(Fall, Rise)], [INFO] [stdout] 698 | | Some("non_unate") => vec![Comb(Rise, Rise), Comb(Fall, Rise)], [INFO] [stdout] ... | [INFO] [stdout] 702 | | } [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] 695 ~ match sense { [INFO] [stdout] 696 + Some("positive_unate") => vec![Comb(Rise, Rise)], [INFO] [stdout] 697 + Some("negative_unate") => vec![Comb(Fall, Rise)], [INFO] [stdout] 698 + Some("non_unate") => vec![Comb(Rise, Rise), Comb(Fall, Rise)], [INFO] [stdout] 699 + _ => { [INFO] [stdout] 700 + panic!("unknown timing_sense value {:?}", sense) [INFO] [stdout] 701 + } [INFO] [stdout] 702 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/target.rs:705:13 [INFO] [stdout] | [INFO] [stdout] 705 | / return match sense { [INFO] [stdout] 706 | | Some("positive_unate") => vec![Comb(Fall, Fall)], [INFO] [stdout] 707 | | Some("negative_unate") => vec![Comb(Rise, Fall)], [INFO] [stdout] 708 | | Some("non_unate") => vec![Comb(Rise, Fall), Comb(Fall, Fall)], [INFO] [stdout] ... | [INFO] [stdout] 712 | | } [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] 705 ~ match sense { [INFO] [stdout] 706 + Some("positive_unate") => vec![Comb(Fall, Fall)], [INFO] [stdout] 707 + Some("negative_unate") => vec![Comb(Rise, Fall)], [INFO] [stdout] 708 + Some("non_unate") => vec![Comb(Rise, Fall), Comb(Fall, Fall)], [INFO] [stdout] 709 + _ => { [INFO] [stdout] 710 + panic!("unknown timing_sense value {:?}", sense) [INFO] [stdout] 711 + } [INFO] [stdout] 712 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/target.rs:740:13 [INFO] [stdout] | [INFO] [stdout] 740 | / return match sense { [INFO] [stdout] 741 | | Some("positive_unate") => { [INFO] [stdout] 742 | | vec![ThreeStateEnable(Rise, Rise), ThreeStateEnable(Rise, Fall)] [INFO] [stdout] ... | [INFO] [stdout] 756 | | } [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] 740 ~ match sense { [INFO] [stdout] 741 + Some("positive_unate") => { [INFO] [stdout] 742 + vec![ThreeStateEnable(Rise, Rise), ThreeStateEnable(Rise, Fall)] [INFO] [stdout] 743 + } [INFO] [stdout] 744 + Some("negative_unate") => { [INFO] [stdout] 745 + vec![ThreeStateEnable(Fall, Rise), ThreeStateEnable(Fall, Fall)] [INFO] [stdout] 746 + } [INFO] [stdout] 747 + Some("non_unate") => vec![ [INFO] [stdout] 748 + ThreeStateEnable(Rise, Rise), [INFO] [stdout] 749 + ThreeStateEnable(Rise, Fall), [INFO] [stdout] 750 + ThreeStateEnable(Fall, Rise), [INFO] [stdout] 751 + ThreeStateEnable(Fall, Fall), [INFO] [stdout] 752 + ], [INFO] [stdout] 753 + _ => { [INFO] [stdout] 754 + panic!("bad timing_sense value {:?}", sense) [INFO] [stdout] 755 + } [INFO] [stdout] 756 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/target.rs:759:13 [INFO] [stdout] | [INFO] [stdout] 759 | / return match sense { [INFO] [stdout] 760 | | Some("positive_unate") => { [INFO] [stdout] 761 | | vec![ThreeStateDisable(Rise, Rise), ThreeStateDisable(Rise, Fall)] [INFO] [stdout] ... | [INFO] [stdout] 775 | | } [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] 759 ~ match sense { [INFO] [stdout] 760 + Some("positive_unate") => { [INFO] [stdout] 761 + vec![ThreeStateDisable(Rise, Rise), ThreeStateDisable(Rise, Fall)] [INFO] [stdout] 762 + } [INFO] [stdout] 763 + Some("negative_unate") => { [INFO] [stdout] 764 + vec![ThreeStateDisable(Fall, Rise), ThreeStateDisable(Fall, Fall)] [INFO] [stdout] 765 + } [INFO] [stdout] 766 + Some("non_unate") => vec![ [INFO] [stdout] 767 + ThreeStateDisable(Rise, Rise), [INFO] [stdout] 768 + ThreeStateDisable(Rise, Fall), [INFO] [stdout] 769 + ThreeStateDisable(Fall, Rise), [INFO] [stdout] 770 + ThreeStateDisable(Fall, Fall), [INFO] [stdout] 771 + ], [INFO] [stdout] 772 + _ => { [INFO] [stdout] 773 + panic!("bad timing_sense value {:?}", sense) [INFO] [stdout] 774 + } [INFO] [stdout] 775 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/target.rs:778:13 [INFO] [stdout] | [INFO] [stdout] 778 | / return match sense { [INFO] [stdout] 779 | | Some("positive_unate") => vec![ThreeStateEnable(Rise, Rise)], [INFO] [stdout] 780 | | Some("negative_unate") => vec![ThreeStateEnable(Fall, Rise)], [INFO] [stdout] 781 | | Some("non_unate") => { [INFO] [stdout] ... | [INFO] [stdout] 787 | | } [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] 778 ~ match sense { [INFO] [stdout] 779 + Some("positive_unate") => vec![ThreeStateEnable(Rise, Rise)], [INFO] [stdout] 780 + Some("negative_unate") => vec![ThreeStateEnable(Fall, Rise)], [INFO] [stdout] 781 + Some("non_unate") => { [INFO] [stdout] 782 + vec![ThreeStateEnable(Rise, Rise), ThreeStateEnable(Fall, Rise)] [INFO] [stdout] 783 + } [INFO] [stdout] 784 + _ => { [INFO] [stdout] 785 + panic!("unknown timing_sense value {:?}", sense) [INFO] [stdout] 786 + } [INFO] [stdout] 787 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/target.rs:790:13 [INFO] [stdout] | [INFO] [stdout] 790 | / return match sense { [INFO] [stdout] 791 | | Some("positive_unate") => vec![ThreeStateEnable(Rise, Fall)], [INFO] [stdout] 792 | | Some("negative_unate") => vec![ThreeStateEnable(Fall, Fall)], [INFO] [stdout] 793 | | Some("non_unate") => { [INFO] [stdout] ... | [INFO] [stdout] 799 | | } [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] 790 ~ match sense { [INFO] [stdout] 791 + Some("positive_unate") => vec![ThreeStateEnable(Rise, Fall)], [INFO] [stdout] 792 + Some("negative_unate") => vec![ThreeStateEnable(Fall, Fall)], [INFO] [stdout] 793 + Some("non_unate") => { [INFO] [stdout] 794 + vec![ThreeStateEnable(Rise, Fall), ThreeStateEnable(Fall, Fall)] [INFO] [stdout] 795 + } [INFO] [stdout] 796 + _ => { [INFO] [stdout] 797 + panic!("unknown timing_sense value {:?}", sense) [INFO] [stdout] 798 + } [INFO] [stdout] 799 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/target.rs:802:13 [INFO] [stdout] | [INFO] [stdout] 802 | / return match sense { [INFO] [stdout] 803 | | Some("positive_unate") => vec![ThreeStateDisable(Rise, Rise)], [INFO] [stdout] 804 | | Some("negative_unate") => vec![ThreeStateDisable(Fall, Rise)], [INFO] [stdout] 805 | | Some("non_unate") => { [INFO] [stdout] ... | [INFO] [stdout] 811 | | } [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] 802 ~ match sense { [INFO] [stdout] 803 + Some("positive_unate") => vec![ThreeStateDisable(Rise, Rise)], [INFO] [stdout] 804 + Some("negative_unate") => vec![ThreeStateDisable(Fall, Rise)], [INFO] [stdout] 805 + Some("non_unate") => { [INFO] [stdout] 806 + vec![ThreeStateDisable(Rise, Rise), ThreeStateDisable(Fall, Rise)] [INFO] [stdout] 807 + } [INFO] [stdout] 808 + _ => { [INFO] [stdout] 809 + panic!("unknown timing_sense value {:?}", sense) [INFO] [stdout] 810 + } [INFO] [stdout] 811 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/target.rs:814:13 [INFO] [stdout] | [INFO] [stdout] 814 | / return match sense { [INFO] [stdout] 815 | | Some("positive_unate") => vec![ThreeStateDisable(Rise, Fall)], [INFO] [stdout] 816 | | Some("negative_unate") => vec![ThreeStateDisable(Fall, Fall)], [INFO] [stdout] 817 | | Some("non_unate") => { [INFO] [stdout] ... | [INFO] [stdout] 823 | | } [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] 814 ~ match sense { [INFO] [stdout] 815 + Some("positive_unate") => vec![ThreeStateDisable(Rise, Fall)], [INFO] [stdout] 816 + Some("negative_unate") => vec![ThreeStateDisable(Fall, Fall)], [INFO] [stdout] 817 + Some("non_unate") => { [INFO] [stdout] 818 + vec![ThreeStateDisable(Rise, Fall), ThreeStateDisable(Fall, Fall)] [INFO] [stdout] 819 + } [INFO] [stdout] 820 + _ => { [INFO] [stdout] 821 + panic!("unknown timing_sense value {:?}", sense) [INFO] [stdout] 822 + } [INFO] [stdout] 823 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/target.rs:826:23 [INFO] [stdout] | [INFO] [stdout] 826 | Some(kind) => return vec![ArcType::Unknown(kind.to_owned())], [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] 826 - Some(kind) => return vec![ArcType::Unknown(kind.to_owned())], [INFO] [stdout] 826 + Some(kind) => vec![ArcType::Unknown(kind.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/target.rs:836:40 [INFO] [stdout] | [INFO] [stdout] 836 | for template in library.lookup_all(&"lu_table_template") { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: change this to: `"lu_table_template"` [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 loop could be written as a `while let` loop [INFO] [stdout] --> src/target.rs:840:13 [INFO] [stdout] | [INFO] [stdout] 840 | / loop { [INFO] [stdout] 841 | | let Some(variable_text) = template.find_attribute(&format!("variable_{}", var_idx)) [INFO] [stdout] 842 | | else { [INFO] [stdout] 843 | | break; [INFO] [stdout] ... | [INFO] [stdout] 874 | | var_idx += 1; [INFO] [stdout] 875 | | } [INFO] [stdout] | |_____________^ help: try: `while let Some(variable_text) = template.find_attribute(&format!("variable_{}", var_idx)) { .. }` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#while_let_loop [INFO] [stdout] = note: `#[warn(clippy::while_let_loop)]` 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/target.rs:890:41 [INFO] [stdout] | [INFO] [stdout] 890 | let Some(values) = statement.lookup(&"values").and_then(|stmt| { [INFO] [stdout] | ^^^^^^^^^ help: change this to: `"values"` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `map(..).flatten()` on `Iterator` [INFO] [stdout] --> src/target.rs:893:14 [INFO] [stdout] | [INFO] [stdout] 893 | .map(|text| text.split(",").map(|v| v.trim().parse::())) [INFO] [stdout] | ______________^ [INFO] [stdout] 894 | | .flatten() [INFO] [stdout] | |______________________^ help: try replacing `map` with `flat_map` and remove the `.flatten()`: `flat_map(|text| text.split(",").map(|v| v.trim().parse::()))` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_flatten [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you should consider adding a `Default` implementation for `SCLTarget` [INFO] [stdout] --> src/target.rs:905:5 [INFO] [stdout] | [INFO] [stdout] 905 | / pub fn new() -> Self { [INFO] [stdout] 906 | | SCLTarget { [INFO] [stdout] 907 | | cells: BTreeMap::new(), [INFO] [stdout] 908 | | } [INFO] [stdout] 909 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default [INFO] [stdout] = note: `#[warn(clippy::new_without_default)]` on by default [INFO] [stdout] help: try adding this [INFO] [stdout] | [INFO] [stdout] 904 + impl Default for SCLTarget { [INFO] [stdout] 905 + fn default() -> Self { [INFO] [stdout] 906 + Self::new() [INFO] [stdout] 907 + } [INFO] [stdout] 908 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/target.rs:977:51 [INFO] [stdout] | [INFO] [stdout] 977 | for pin_statement in statement.lookup_all(&"pin") { [INFO] [stdout] | ^^^^^^ help: change this to: `"pin"` [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/target.rs:1011:46 [INFO] [stdout] | [INFO] [stdout] 1011 | for pin_stmt in statement.lookup_all(&"pin") { [INFO] [stdout] | ^^^^^^ help: change this to: `"pin"` [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/target.rs:1017:52 [INFO] [stdout] | [INFO] [stdout] 1017 | for timing_stmt in pin_stmt.lookup_all(&"timing") { [INFO] [stdout] | ^^^^^^^^^ help: change this to: `"timing"` [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/target.rs:1112:48 [INFO] [stdout] | [INFO] [stdout] 1112 | self.read_cell(&top_group, &statement) [INFO] [stdout] | ^^^^^^^^^^ help: change this to: `statement` [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/target.rs:1142:54 [INFO] [stdout] | [INFO] [stdout] 1142 | .instance_to_target_cell(design, &instance, cell_ref.output()) [INFO] [stdout] | ^^^^^^^^^ help: change this to: `instance` [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: function `test_classify_all_K4` should have a snake case name [INFO] [stdout] --> src/npn.rs:315:8 [INFO] [stdout] | [INFO] [stdout] 315 | fn test_classify_all_K4() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case (notice the capitalization): `test_classify_all_k4` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(non_snake_case)]` (part of `#[warn(nonstandard_style)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `K` should have a snake case name [INFO] [stdout] --> src/npn.rs:316:13 [INFO] [stdout] | [INFO] [stdout] 316 | let K = 4; [INFO] [stdout] | ^ help: convert the identifier to snake case (notice the capitalization): `k` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `test_K1_expected` should have a snake case name [INFO] [stdout] --> src/npn.rs:346:8 [INFO] [stdout] | [INFO] [stdout] 346 | fn test_K1_expected() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: convert the identifier to snake case (notice the capitalization): `test_k1_expected` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `out_lo` is assigned to, but never used [INFO] [stdout] --> src/cm.rs:1262:17 [INFO] [stdout] | [INFO] [stdout] 1262 | let out_lo: Net; [INFO] [stdout] | ^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: consider using `_out_lo` instead [INFO] [stdout] = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `out_hi` is assigned to, but never used [INFO] [stdout] --> src/cm.rs:1263:17 [INFO] [stdout] | [INFO] [stdout] 1263 | let out_hi: Net; [INFO] [stdout] | ^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: consider using `_out_hi` instead [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: value assigned to `out_lo` is never read [INFO] [stdout] --> src/cm.rs:1271:17 [INFO] [stdout] | [INFO] [stdout] 1271 | out_lo = self.design.add_target(tie_lo)[index.tie_lo.1]; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: maybe it is overwritten before being read? [INFO] [stdout] = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: value assigned to `out_lo` is never read [INFO] [stdout] --> src/cm.rs:1267:17 [INFO] [stdout] | [INFO] [stdout] 1267 | out_lo = out[index.tie_lo.1]; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: maybe it is overwritten before being read? [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: value assigned to `out_hi` is never read [INFO] [stdout] --> src/cm.rs:1273:17 [INFO] [stdout] | [INFO] [stdout] 1273 | out_hi = self.design.add_target(tie_hi)[index.tie_hi.1]; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: maybe it is overwritten before being read? [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: value assigned to `out_hi` is never read [INFO] [stdout] --> src/cm.rs:1268:17 [INFO] [stdout] | [INFO] [stdout] 1268 | out_hi = out[index.tie_hi.1]; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: maybe it is overwritten before being read? [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unreachable pattern [INFO] [stdout] --> src/target.rs:739:38 [INFO] [stdout] | [INFO] [stdout] 679 | Some("combinational") | None => { [INFO] [stdout] | ---- matches all the relevant values [INFO] [stdout] ... [INFO] [stdout] 739 | Some("three_state_enable") | None => { [INFO] [stdout] | ^^^^ no value can reach this [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unreachable_patterns)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unreachable pattern [INFO] [stdout] --> src/target.rs:758:39 [INFO] [stdout] | [INFO] [stdout] 679 | Some("combinational") | None => { [INFO] [stdout] | ---- matches all the relevant values [INFO] [stdout] ... [INFO] [stdout] 758 | Some("three_state_disable") | None => { [INFO] [stdout] | ^^^^ no value can reach this [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unreachable pattern [INFO] [stdout] --> src/target.rs:734:9 [INFO] [stdout] | [INFO] [stdout] 732 | Some("clear") => vec![Clear(Rise), Clear(Fall)], [INFO] [stdout] | ------------- matches all the relevant values [INFO] [stdout] 733 | Some("preset") => vec![Preset(Rise), Preset(Fall)], [INFO] [stdout] 734 | Some("clear") => vec![Clear(Rise), Clear(Fall)], [INFO] [stdout] | ^^^^^^^^^^^^^ no value can reach this [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variants `Float`, `None`, and `Invalid` are never constructed [INFO] [stdout] --> src/target.rs:24:5 [INFO] [stdout] | [INFO] [stdout] 22 | enum Token { [INFO] [stdout] | ----- variants in this enum [INFO] [stdout] 23 | Punctuation(char), [INFO] [stdout] 24 | Float(f64), [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 27 | None, [INFO] [stdout] | ^^^^ [INFO] [stdout] 28 | EOF, [INFO] [stdout] 29 | Invalid, [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `Token` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `peek_is_digit` and `expect` are never used [INFO] [stdout] --> src/target.rs:48:8 [INFO] [stdout] | [INFO] [stdout] 32 | impl> Scanner { [INFO] [stdout] | ----------------------------------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 48 | fn peek_is_digit(&mut self) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 197 | fn expect(&mut self, expected: Token) { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variant `Unknown` is never constructed [INFO] [stdout] --> src/target.rs:551:5 [INFO] [stdout] | [INFO] [stdout] 546 | enum TableModelVariable { [INFO] [stdout] | ------------------ variant in this enum [INFO] [stdout] ... [INFO] [stdout] 551 | Unknown(String), [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `TableModelVariable` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `variable` and `indices` are never read [INFO] [stdout] --> src/target.rs:556:5 [INFO] [stdout] | [INFO] [stdout] 555 | struct TableModelAxis { [INFO] [stdout] | -------------- fields in this struct [INFO] [stdout] 556 | variable: TableModelVariable, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] 557 | indices: Vec, [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `TableModelAxis` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `axes` and `values` are never read [INFO] [stdout] --> src/target.rs:562:5 [INFO] [stdout] | [INFO] [stdout] 561 | struct TableModel { [INFO] [stdout] | ---------- fields in this struct [INFO] [stdout] 562 | axes: Vec, [INFO] [stdout] | ^^^^ [INFO] [stdout] 563 | values: Vec, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `TableModel` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `0` is never read [INFO] [stdout] --> src/target.rs:568:11 [INFO] [stdout] | [INFO] [stdout] 568 | Table(TableModel), [INFO] [stdout] | ----- ^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | field in this variant [INFO] [stdout] | [INFO] [stdout] = note: `ArcDelayModel` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] help: consider changing the field to be of unit type to suppress this warning while preserving the field numbering, or remove the field [INFO] [stdout] | [INFO] [stdout] 568 - Table(TableModel), [INFO] [stdout] 568 + Table(()), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `0` is never read [INFO] [stdout] --> src/target.rs:573:19 [INFO] [stdout] | [INFO] [stdout] 573 | Combinational(RiseFall, RiseFall), [INFO] [stdout] | ------------- ^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | field in this variant [INFO] [stdout] | [INFO] [stdout] = note: `ArcType` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] help: consider changing the field to be of unit type to suppress this warning while preserving the field numbering, or remove the field [INFO] [stdout] | [INFO] [stdout] 573 - Combinational(RiseFall, RiseFall), [INFO] [stdout] 573 + Combinational((), RiseFall), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `0` is never read [INFO] [stdout] --> src/target.rs:574:22 [INFO] [stdout] | [INFO] [stdout] 574 | ThreeStateEnable(RiseFall, RiseFall), [INFO] [stdout] | ---------------- ^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | field in this variant [INFO] [stdout] | [INFO] [stdout] = note: `ArcType` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] help: consider changing the field to be of unit type to suppress this warning while preserving the field numbering, or remove the field [INFO] [stdout] | [INFO] [stdout] 574 - ThreeStateEnable(RiseFall, RiseFall), [INFO] [stdout] 574 + ThreeStateEnable((), RiseFall), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `0` is never read [INFO] [stdout] --> src/target.rs:575:23 [INFO] [stdout] | [INFO] [stdout] 575 | ThreeStateDisable(RiseFall, RiseFall), [INFO] [stdout] | ----------------- ^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | field in this variant [INFO] [stdout] | [INFO] [stdout] = note: `ArcType` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] help: consider changing the field to be of unit type to suppress this warning while preserving the field numbering, or remove the field [INFO] [stdout] | [INFO] [stdout] 575 - ThreeStateDisable(RiseFall, RiseFall), [INFO] [stdout] 575 + ThreeStateDisable((), RiseFall), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `0` is never read [INFO] [stdout] --> src/target.rs:576:12 [INFO] [stdout] | [INFO] [stdout] 576 | Launch(RiseFall, RiseFall), [INFO] [stdout] | ------ ^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | field in this variant [INFO] [stdout] | [INFO] [stdout] = note: `ArcType` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] help: consider changing the field to be of unit type to suppress this warning while preserving the field numbering, or remove the field [INFO] [stdout] | [INFO] [stdout] 576 - Launch(RiseFall, RiseFall), [INFO] [stdout] 576 + Launch((), RiseFall), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `0` is never read [INFO] [stdout] --> src/target.rs:577:15 [INFO] [stdout] | [INFO] [stdout] 577 | HoldCheck(RiseFall, RiseFall), [INFO] [stdout] | --------- ^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | field in this variant [INFO] [stdout] | [INFO] [stdout] = note: `ArcType` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] help: consider changing the field to be of unit type to suppress this warning while preserving the field numbering, or remove the field [INFO] [stdout] | [INFO] [stdout] 577 - HoldCheck(RiseFall, RiseFall), [INFO] [stdout] 577 + HoldCheck((), RiseFall), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `0` is never read [INFO] [stdout] --> src/target.rs:578:16 [INFO] [stdout] | [INFO] [stdout] 578 | SetupCheck(RiseFall, RiseFall), [INFO] [stdout] | ---------- ^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | field in this variant [INFO] [stdout] | [INFO] [stdout] = note: `ArcType` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] help: consider changing the field to be of unit type to suppress this warning while preserving the field numbering, or remove the field [INFO] [stdout] | [INFO] [stdout] 578 - SetupCheck(RiseFall, RiseFall), [INFO] [stdout] 578 + SetupCheck((), RiseFall), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `0` is never read [INFO] [stdout] --> src/target.rs:579:21 [INFO] [stdout] | [INFO] [stdout] 579 | NonSeqHoldCheck(RiseFall, RiseFall), [INFO] [stdout] | --------------- ^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | field in this variant [INFO] [stdout] | [INFO] [stdout] = note: `ArcType` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] help: consider changing the field to be of unit type to suppress this warning while preserving the field numbering, or remove the field [INFO] [stdout] | [INFO] [stdout] 579 - NonSeqHoldCheck(RiseFall, RiseFall), [INFO] [stdout] 579 + NonSeqHoldCheck((), RiseFall), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `0` is never read [INFO] [stdout] --> src/target.rs:580:22 [INFO] [stdout] | [INFO] [stdout] 580 | NonSeqSetupCheck(RiseFall, RiseFall), [INFO] [stdout] | ---------------- ^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | field in this variant [INFO] [stdout] | [INFO] [stdout] = note: `ArcType` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] help: consider changing the field to be of unit type to suppress this warning while preserving the field numbering, or remove the field [INFO] [stdout] | [INFO] [stdout] 580 - NonSeqSetupCheck(RiseFall, RiseFall), [INFO] [stdout] 580 + NonSeqSetupCheck((), RiseFall), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `0` is never read [INFO] [stdout] --> src/target.rs:583:19 [INFO] [stdout] | [INFO] [stdout] 583 | RecoveryCheck(RiseFall, RiseFall), [INFO] [stdout] | ------------- ^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | field in this variant [INFO] [stdout] | [INFO] [stdout] = note: `ArcType` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] help: consider changing the field to be of unit type to suppress this warning while preserving the field numbering, or remove the field [INFO] [stdout] | [INFO] [stdout] 583 - RecoveryCheck(RiseFall, RiseFall), [INFO] [stdout] 583 + RecoveryCheck((), RiseFall), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `0` is never read [INFO] [stdout] --> src/target.rs:584:18 [INFO] [stdout] | [INFO] [stdout] 584 | RemovalCheck(RiseFall, RiseFall), [INFO] [stdout] | ------------ ^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | field in this variant [INFO] [stdout] | [INFO] [stdout] = note: `ArcType` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] help: consider changing the field to be of unit type to suppress this warning while preserving the field numbering, or remove the field [INFO] [stdout] | [INFO] [stdout] 584 - RemovalCheck(RiseFall, RiseFall), [INFO] [stdout] 584 + RemovalCheck((), RiseFall), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `0` is never read [INFO] [stdout] --> src/target.rs:586:13 [INFO] [stdout] | [INFO] [stdout] 586 | Unknown(String), [INFO] [stdout] | ------- ^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | field in this variant [INFO] [stdout] | [INFO] [stdout] = note: `ArcType` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] help: consider changing the field to be of unit type to suppress this warning while preserving the field numbering, or remove the field [INFO] [stdout] | [INFO] [stdout] 586 - Unknown(String), [INFO] [stdout] 586 + Unknown(()), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `arc_type`, `from_pin`, `to_pin`, `delay_model`, `constraint_model`, and `slew_model` are never read [INFO] [stdout] --> src/target.rs:624:5 [INFO] [stdout] | [INFO] [stdout] 623 | pub struct Arc { [INFO] [stdout] | --- fields in this struct [INFO] [stdout] 624 | arc_type: ArcType, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] 625 | from_pin: LibraryPortIndex, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] 626 | to_pin: LibraryPortIndex, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] 627 | delay_model: Option, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] 628 | constraint_model: Option, [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] 629 | slew_model: Option, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `Arc` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `cap`, `rise_cap`, and `fall_cap` are never read [INFO] [stdout] --> src/target.rs:645:5 [INFO] [stdout] | [INFO] [stdout] 641 | pub struct LibraryPort { [INFO] [stdout] | ----------- fields in this struct [INFO] [stdout] ... [INFO] [stdout] 645 | cap: f32, [INFO] [stdout] | ^^^ [INFO] [stdout] 646 | rise_cap: f32, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] 647 | fall_cap: f32, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `LibraryPort` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `unwrap` on `tie_hilo` after checking its variant with `is_some` [INFO] [stdout] --> src/cm.rs:96:42 [INFO] [stdout] | [INFO] [stdout] 91 | if tie_hilo.is_some() [INFO] [stdout] | ------------------ the check is happening here [INFO] [stdout] ... [INFO] [stdout] 96 | let (cell, hi_pin, lo_pin) = tie_hilo.unwrap(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: try using `match` [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_unwrap [INFO] [stdout] = note: `#[warn(clippy::unnecessary_unwrap)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/cm.rs:57:17 [INFO] [stdout] | [INFO] [stdout] 57 | / if cell.prototype.inputs.len() == 1 && *function == 1 { [INFO] [stdout] 58 | | if inverter.is_none() || cell.area < inverter.unwrap().area { [INFO] [stdout] 59 | | inverter = Some(cell); [INFO] [stdout] 60 | | } [INFO] [stdout] 61 | | } [INFO] [stdout] | |_________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] = note: `#[warn(clippy::collapsible_if)]` on by default [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 57 ~ if cell.prototype.inputs.len() == 1 && *function == 1 [INFO] [stdout] 58 ~ && (inverter.is_none() || cell.area < inverter.unwrap().area) { [INFO] [stdout] 59 | inverter = Some(cell); [INFO] [stdout] 60 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` can be collapsed into the outer `match` [INFO] [stdout] --> src/cm.rs:67:25 [INFO] [stdout] | [INFO] [stdout] 67 | / if tie_hilo.is_none() || cell.area < tie_hilo.unwrap().0.area { [INFO] [stdout] 68 | | tie_hilo = Some((cell, 1, 0)); [INFO] [stdout] 69 | | } [INFO] [stdout] | |_________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_match [INFO] [stdout] = note: `#[warn(clippy::collapsible_match)]` on by default [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 66 ~ [Some(0), Some(1)] [INFO] [stdout] 67 ~ if (tie_hilo.is_none() || cell.area < tie_hilo.unwrap().0.area) => { [INFO] [stdout] 68 | tie_hilo = Some((cell, 1, 0)); [INFO] [stdout] 69 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` can be collapsed into the outer `match` [INFO] [stdout] --> src/cm.rs:72:25 [INFO] [stdout] | [INFO] [stdout] 72 | / if tie_hilo.is_none() || cell.area < tie_hilo.unwrap().0.area { [INFO] [stdout] 73 | | tie_hilo = Some((cell, 0, 1)); [INFO] [stdout] 74 | | } [INFO] [stdout] | |_________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_match [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 71 ~ [Some(1), Some(0)] [INFO] [stdout] 72 ~ if (tie_hilo.is_none() || cell.area < tie_hilo.unwrap().0.area) => { [INFO] [stdout] 73 | tie_hilo = Some((cell, 0, 1)); [INFO] [stdout] 74 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` can be collapsed into the outer `match` [INFO] [stdout] --> src/cm.rs:77:25 [INFO] [stdout] | [INFO] [stdout] 77 | / if tie_hi.is_none() || cell.area < tie_hi.unwrap().0.area { [INFO] [stdout] 78 | | tie_hi = Some((cell, 0)); [INFO] [stdout] 79 | | } [INFO] [stdout] | |_________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_match [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 76 ~ [Some(1)] [INFO] [stdout] 77 ~ if (tie_hi.is_none() || cell.area < tie_hi.unwrap().0.area) => { [INFO] [stdout] 78 | tie_hi = Some((cell, 0)); [INFO] [stdout] 79 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` can be collapsed into the outer `match` [INFO] [stdout] --> src/cm.rs:82:25 [INFO] [stdout] | [INFO] [stdout] 82 | / if tie_lo.is_none() || cell.area < tie_lo.unwrap().0.area { [INFO] [stdout] 83 | | tie_lo = Some((cell, 0)); [INFO] [stdout] 84 | | } [INFO] [stdout] | |_________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_match [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 81 ~ [Some(0)] [INFO] [stdout] 82 ~ if (tie_lo.is_none() || cell.area < tie_lo.unwrap().0.area) => { [INFO] [stdout] 83 | tie_lo = Some((cell, 0)); [INFO] [stdout] 84 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `Box>`. Consider using just `Vec<..>` [INFO] [stdout] --> src/cm.rs:141:32 [INFO] [stdout] | [INFO] [stdout] 141 | eliminated_support: Option>>, [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: `Vec<..>` is already on the heap, `Box>` makes an extra allocation [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#box_collection [INFO] [stdout] = note: `#[warn(clippy::box_collection)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/cm.rs:281:5 [INFO] [stdout] | [INFO] [stdout] 281 | return true; [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] = note: `#[warn(clippy::needless_return)]` on by default [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 281 - return true; [INFO] [stdout] 281 + true [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/cm.rs:371:13 [INFO] [stdout] | [INFO] [stdout] 371 | return (NodeFunction::And, vec![net1, net2]); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 371 - return (NodeFunction::And, vec![net1, net2]); [INFO] [stdout] 371 + (NodeFunction::And, vec![net1, net2]) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/cm.rs:382:13 [INFO] [stdout] | [INFO] [stdout] 382 | return (NodeFunction::And, vec![net1, net2]); [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] 382 - return (NodeFunction::And, vec![net1, net2]); [INFO] [stdout] 382 + (NodeFunction::And, vec![net1, net2]) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/cm.rs:387:13 [INFO] [stdout] | [INFO] [stdout] 387 | return (NodeFunction::Nand, vec![!net1, !net2]); [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] 387 - return (NodeFunction::Nand, vec![!net1, !net2]); [INFO] [stdout] 387 + (NodeFunction::Nand, vec![!net1, !net2]) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/cm.rs:392:13 [INFO] [stdout] | [INFO] [stdout] 392 | return (NodeFunction::Xor, vec![net1, net2]); [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] 392 - return (NodeFunction::Xor, vec![net1, net2]); [INFO] [stdout] 392 + (NodeFunction::Xor, vec![net1, net2]) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/cm.rs:398:13 [INFO] [stdout] | [INFO] [stdout] 398 | return (NodeFunction::Mux, vec![net1, net2, net3]); [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] 398 - return (NodeFunction::Mux, vec![net1, net2, net3]); [INFO] [stdout] 398 + (NodeFunction::Mux, vec![net1, net2, net3]) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/cm.rs:450:52 [INFO] [stdout] | [INFO] [stdout] 450 | let cnet = remove_invertor(&sm_index, design, net); [INFO] [stdout] | ^^^^^^^^^ help: change this to: `sm_index` [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/cm.rs:470:52 [INFO] [stdout] | [INFO] [stdout] 470 | let cnet = remove_invertor(&sm_index, design, net); [INFO] [stdout] | ^^^^^^^^^ help: change this to: `sm_index` [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/cm.rs:503:52 [INFO] [stdout] | [INFO] [stdout] 503 | let cnet = remove_invertor(&sm_index, design, net); [INFO] [stdout] | ^^^^^^^^^ help: change this to: `sm_index` [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 unit return type [INFO] [stdout] --> src/cm.rs:535:58 [INFO] [stdout] | [INFO] [stdout] 535 | fn index_nodes(&mut self, target_index: &TargetIndex) -> () { [INFO] [stdout] | ^^^^^^ help: remove the `-> ()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_unit [INFO] [stdout] = note: `#[warn(clippy::unused_unit)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual `RangeInclusive::contains` implementation [INFO] [stdout] --> src/cm.rs:611:17 [INFO] [stdout] | [INFO] [stdout] 611 | assert!(max_cut >= 3 && max_cut <= CUT_MAXIMUM); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use: `(3..=CUT_MAXIMUM).contains(&max_cut)` [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: you seem to be trying to use `Box>`. Consider using just `Vec<..>` [INFO] [stdout] --> src/cm.rs:619:40 [INFO] [stdout] | [INFO] [stdout] 619 | eliminated_support: Option>>, [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: `Vec<..>` is already on the heap, `Box>` makes an extra allocation [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#box_collection [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/cm.rs:724:13 [INFO] [stdout] | [INFO] [stdout] 724 | return false; [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] 724 - return false; [INFO] [stdout] 724 + false [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression borrows a value the compiler would automatically borrow [INFO] [stdout] --> src/cm.rs:775:21 [INFO] [stdout] | [INFO] [stdout] 775 | (&mut pcuts_all[..]).split_at_mut((node.fid as usize) * npriority_cuts); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: change this to: `pcuts_all[..]` [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: casting to the same type is unnecessary (`usize` -> `usize`) [INFO] [stdout] --> src/cm.rs:803:59 [INFO] [stdout] | [INFO] [stdout] 803 | ... &pcuts_below[base..base + (fanin_cache.ps_len as usize)] [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `fanin_cache.ps_len` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] = note: `#[warn(clippy::unnecessary_cast)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting to the same type is unnecessary (`usize` -> `usize`) [INFO] [stdout] --> src/cm.rs:807:59 [INFO] [stdout] | [INFO] [stdout] 807 | ... &pcuts_above[base..base + (fanin_cache.ps_len as usize)] [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `fanin_cache.ps_len` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/cm.rs:885:25 [INFO] [stdout] | [INFO] [stdout] 885 | return false; [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] 885 - return false; [INFO] [stdout] 885 + false [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `idx` is used to index `structural_cut` [INFO] [stdout] --> src/cm.rs:835:36 [INFO] [stdout] | [INFO] [stdout] 835 | for idx in 0..structural_cut.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 and enumerate() [INFO] [stdout] | [INFO] [stdout] 835 - for idx in 0..structural_cut.len() { [INFO] [stdout] 835 + for (idx, ) in structural_cut.iter().enumerate() { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant pattern matching, consider using `is_some()` [INFO] [stdout] --> src/cm.rs:856:32 [INFO] [stdout] | [INFO] [stdout] 856 | if let Some(_) = target_index.classes.get(&(cut.len(), semiclass)) { [INFO] [stdout] | -------^^^^^^^---------------------------------------------------- help: try: `if target_index.classes.get(&(cut.len(), semiclass)).is_some()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern_matching [INFO] [stdout] = note: `#[warn(clippy::redundant_pattern_matching)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/cm.rs:966:13 [INFO] [stdout] | [INFO] [stdout] 966 | / if cut_pol.map_fouts == 0 { [INFO] [stdout] 967 | | if !matches!(cut_node.role, Pi(_)) { [INFO] [stdout] 968 | | descend = true; [INFO] [stdout] 969 | | } [INFO] [stdout] 970 | | } [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 966 ~ if cut_pol.map_fouts == 0 [INFO] [stdout] 967 ~ && !matches!(cut_node.role, Pi(_)) { [INFO] [stdout] 968 | descend = true; [INFO] [stdout] 969 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for an equality check. Consider using `if` [INFO] [stdout] --> src/cm.rs:989:13 [INFO] [stdout] | [INFO] [stdout] 989 | / match node.role { [INFO] [stdout] 990 | | Guts => { [INFO] [stdout] 991 | | self.deref_cut(net, C); [INFO] [stdout] ... | [INFO] [stdout] 994 | | } [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] 989 ~ if node.role == Guts { [INFO] [stdout] 990 + self.deref_cut(net, C); [INFO] [stdout] 991 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `NPN` which implements the `Copy` trait [INFO] [stdout] --> src/cm.rs:1081:41 [INFO] [stdout] | [INFO] [stdout] 1081 | let match_npn = match_.npn.clone(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `match_.npn` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] = note: `#[warn(clippy::clone_on_copy)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `NPN` which implements the `Copy` trait [INFO] [stdout] --> src/cm.rs:1151:41 [INFO] [stdout] | [INFO] [stdout] 1151 | let match_npn = match_.npn.clone(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `match_.npn` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `map(..).flatten()` on `Iterator` [INFO] [stdout] --> src/cm.rs:1248:14 [INFO] [stdout] | [INFO] [stdout] 1248 | .map(|cell| { [INFO] [stdout] | ______________^ [INFO] [stdout] 1249 | | cell.metadata() [INFO] [stdout] 1250 | | .iter() [INFO] [stdout] 1251 | | .filter_map(|item_ref| match item_ref.get() { [INFO] [stdout] ... | [INFO] [stdout] 1256 | | }) [INFO] [stdout] 1257 | | .flatten() [INFO] [stdout] | |______________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_flatten [INFO] [stdout] = note: `#[warn(clippy::map_flatten)]` on by default [INFO] [stdout] help: try replacing `map` with `flat_map` and remove the `.flatten()` [INFO] [stdout] | [INFO] [stdout] 1248 ~ .flat_map(|cell| { [INFO] [stdout] 1249 + cell.metadata() [INFO] [stdout] 1250 + .iter() [INFO] [stdout] 1251 + .filter_map(|item_ref| match item_ref.get() { [INFO] [stdout] 1252 + NamedScope { .. } | IndexedScope { .. } => Some(item_ref), [INFO] [stdout] 1253 + MetaItem::Ident { scope, .. } => Some(scope), [INFO] [stdout] 1254 + _ => None, [INFO] [stdout] 1255 + }) [INFO] [stdout] 1256 + }) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/cm.rs:1364:54 [INFO] [stdout] | [INFO] [stdout] 1364 | .replace_value(*to, *complements.get(&from).unwrap()); [INFO] [stdout] | ^^^^^ help: change this to: `from` [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 `COFACTOR_MASKS` [INFO] [stdout] --> src/dar.rs:32:18 [INFO] [stdout] | [INFO] [stdout] 32 | for i in 0..(ninputs) { [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] 32 - for i in 0..(ninputs) { [INFO] [stdout] 32 + for in COFACTOR_MASKS.iter().take((ninputs)) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/dar.rs:188:5 [INFO] [stdout] | [INFO] [stdout] 188 | return true; [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 188 - return true; [INFO] [stdout] 188 + true [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: usage of `contains_key` followed by `insert` on a `HashMap` [INFO] [stdout] --> src/dar.rs:216:21 [INFO] [stdout] | [INFO] [stdout] 216 | / if !structural_index.contains_key(&key) { [INFO] [stdout] 217 | | structural_index.insert(key, out); [INFO] [stdout] 218 | | } [INFO] [stdout] | |_____________________^ help: try: `structural_index.entry(key).or_insert(out);` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_entry [INFO] [stdout] = note: `#[warn(clippy::map_entry)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/dar.rs:271:20 [INFO] [stdout] | [INFO] [stdout] 271 | if !leaves.binary_search(fanin).is_ok() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `leaves.binary_search(fanin).is_err()` [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: in an `if` condition, avoid complex blocks or closures with blocks; instead, move the block or closure higher and bind it with a `let` [INFO] [stdout] --> src/dar.rs:264:13 [INFO] [stdout] | [INFO] [stdout] 264 | / if { [INFO] [stdout] 265 | | let mut use_counts = self.use_counts.borrow_mut(); [INFO] [stdout] 266 | | let nrefs = use_counts.get_mut(fanin).unwrap(); [INFO] [stdout] 267 | | *nrefs -= 1; [INFO] [stdout] 268 | | assert!(*nrefs >= 0); [INFO] [stdout] 269 | | *nrefs == 0 [INFO] [stdout] 270 | | } { [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#blocks_in_conditions [INFO] [stdout] = note: `#[warn(clippy::blocks_in_conditions)]` on by default [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 264 ~ let res = { [INFO] [stdout] 265 + let mut use_counts = self.use_counts.borrow_mut(); [INFO] [stdout] 266 + let nrefs = use_counts.get_mut(fanin).unwrap(); [INFO] [stdout] 267 + *nrefs -= 1; [INFO] [stdout] 268 + assert!(*nrefs >= 0); [INFO] [stdout] 269 + *nrefs == 0 [INFO] [stdout] 270 ~ }; if res { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/dar.rs:264:13 [INFO] [stdout] | [INFO] [stdout] 264 | / if { [INFO] [stdout] 265 | | let mut use_counts = self.use_counts.borrow_mut(); [INFO] [stdout] 266 | | let nrefs = use_counts.get_mut(fanin).unwrap(); [INFO] [stdout] 267 | | *nrefs -= 1; [INFO] [stdout] ... | [INFO] [stdout] 274 | | } [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 270 ~ } [INFO] [stdout] 271 ~ && !leaves.binary_search(fanin).is_ok() { [INFO] [stdout] 272 | nnodes += self.unref(*fanin, leaves); [INFO] [stdout] 273 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/dar.rs:311:20 [INFO] [stdout] | [INFO] [stdout] 311 | if !leaves.binary_search(fanin).is_ok() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `leaves.binary_search(fanin).is_err()` [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: in an `if` condition, avoid complex blocks or closures with blocks; instead, move the block or closure higher and bind it with a `let` [INFO] [stdout] --> src/dar.rs:304:13 [INFO] [stdout] | [INFO] [stdout] 304 | / if { [INFO] [stdout] 305 | | let mut use_counts = self.use_counts.borrow_mut(); [INFO] [stdout] 306 | | let nrefs = use_counts.get_mut(fanin).unwrap(); [INFO] [stdout] 307 | | *nrefs += 1; [INFO] [stdout] 308 | | assert!(*nrefs >= 1); [INFO] [stdout] 309 | | *nrefs == 1 [INFO] [stdout] 310 | | } { [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#blocks_in_conditions [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 304 ~ let res = { [INFO] [stdout] 305 + let mut use_counts = self.use_counts.borrow_mut(); [INFO] [stdout] 306 + let nrefs = use_counts.get_mut(fanin).unwrap(); [INFO] [stdout] 307 + *nrefs += 1; [INFO] [stdout] 308 + assert!(*nrefs >= 1); [INFO] [stdout] 309 + *nrefs == 1 [INFO] [stdout] 310 ~ }; if res { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/dar.rs:304:13 [INFO] [stdout] | [INFO] [stdout] 304 | / if { [INFO] [stdout] 305 | | let mut use_counts = self.use_counts.borrow_mut(); [INFO] [stdout] 306 | | let nrefs = use_counts.get_mut(fanin).unwrap(); [INFO] [stdout] 307 | | *nrefs += 1; [INFO] [stdout] ... | [INFO] [stdout] 314 | | } [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 310 ~ } [INFO] [stdout] 311 ~ && !leaves.binary_search(fanin).is_ok() { [INFO] [stdout] 312 | self.ref_(*fanin, leaves); [INFO] [stdout] 313 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/dar.rs:347:51 [INFO] [stdout] | [INFO] [stdout] 347 | || stopping_set.binary_search(&inet).is_ok() [INFO] [stdout] | ^^^^^ help: change this to: `inet` [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/dar.rs:348:38 [INFO] [stdout] | [INFO] [stdout] 348 | || seen.contains(&inet) [INFO] [stdout] | ^^^^^ help: change this to: `inet` [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 boolean expression can be simplified [INFO] [stdout] --> src/dar.rs:557:12 [INFO] [stdout] | [INFO] [stdout] 557 | if !best.is_none() { [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: try: `best.is_some()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `unwrap` on `best` after checking its variant with `is_none` [INFO] [stdout] --> src/dar.rs:558:29 [INFO] [stdout] | [INFO] [stdout] 557 | if !best.is_none() { [INFO] [stdout] | -------------- the check is happening here [INFO] [stdout] 558 | let candidate = best.unwrap(); [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: try using `match` [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_unwrap [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `idx` is used to index `structural_cut` [INFO] [stdout] --> src/dar.rs:453:28 [INFO] [stdout] | [INFO] [stdout] 453 | for idx in 0..structural_cut.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 and enumerate() [INFO] [stdout] | [INFO] [stdout] 453 - for idx in 0..structural_cut.len() { [INFO] [stdout] 453 + for (idx, ) in structural_cut.iter().enumerate() { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting to the same type is unnecessary (`usize` -> `usize`) [INFO] [stdout] --> src/dar.rs:483:63 [INFO] [stdout] | [INFO] [stdout] 483 | ... let net = cut[struct_to_cut.p[idx as usize] as usize]; [INFO] [stdout] | ^^^^^^^^^^^^ help: try: `idx` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting to the same type is unnecessary (`usize` -> `usize`) [INFO] [stdout] --> src/dar.rs:487:58 [INFO] [stdout] | [INFO] [stdout] 487 | ... struct_to_cut.ic[idx as usize], [INFO] [stdout] | ^^^^^^^^^^^^ help: try: `idx` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/dar.rs:525:47 [INFO] [stdout] | [INFO] [stdout] 525 | ... if use_counts.get(&out).copied().unwrap_or(0) == 0 || head == *out { [INFO] [stdout] | ^^^^ help: change this to: `out` [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: casting to the same type is unnecessary (`i32` -> `i32`) [INFO] [stdout] --> src/dar.rs:533:68 [INFO] [stdout] | [INFO] [stdout] 533 | let weight_delta = current_weight as i32 - repl_weight as i32; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: try: `repl_weight` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting to the same type is unnecessary (`usize` -> `usize`) [INFO] [stdout] --> src/dar.rs:571:55 [INFO] [stdout] | [INFO] [stdout] 571 | candidate.cut[candidate.map.p[idx as usize] as usize], [INFO] [stdout] | ^^^^^^^^^^^^ help: try: `idx` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting to the same type is unnecessary (`usize` -> `usize`) [INFO] [stdout] --> src/dar.rs:572:42 [INFO] [stdout] | [INFO] [stdout] 572 | candidate.map.ic[idx as usize], [INFO] [stdout] | ^^^^^^^^^^^^ help: try: `idx` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/dar.rs:596:39 [INFO] [stdout] | [INFO] [stdout] 596 | if use_counts.get(&out).copied().unwrap_or(0) != 0 { [INFO] [stdout] | ^^^^ help: change this to: `out` [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/dar.rs:625:45 [INFO] [stdout] | [INFO] [stdout] 625 | let new_net = new_head.into_pos(&self.design); [INFO] [stdout] | ^^^^^^^^^^^^ help: change this to: `self.design` [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: in an `if` condition, avoid complex blocks or closures with blocks; instead, move the block or closure higher and bind it with a `let` [INFO] [stdout] --> src/dar.rs:631:17 [INFO] [stdout] | [INFO] [stdout] 631 | / if { [INFO] [stdout] 632 | | let use_counts = self.use_counts.borrow(); [INFO] [stdout] 633 | | use_counts.get(&node).copied().unwrap_or(0) == 0 [INFO] [stdout] 634 | | && !self.substituted.contains(&node) [INFO] [stdout] 635 | | } { [INFO] [stdout] | |_________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#blocks_in_conditions [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 631 ~ let res = { [INFO] [stdout] 632 + let use_counts = self.use_counts.borrow(); [INFO] [stdout] 633 + use_counts.get(&node).copied().unwrap_or(0) == 0 [INFO] [stdout] 634 + && !self.substituted.contains(&node) [INFO] [stdout] 635 ~ }; if res { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` can be collapsed into the outer `match` [INFO] [stdout] --> src/dar.rs:690:21 [INFO] [stdout] | [INFO] [stdout] 690 | / if { [INFO] [stdout] 691 | | let use_counts = self.use_counts.borrow_mut(); [INFO] [stdout] 692 | | use_counts [INFO] [stdout] 693 | | .get(&cell_ref.output().unwrap_net()) [INFO] [stdout] ... | [INFO] [stdout] 698 | | self.rewrite(cell_ref.output().unwrap_net()) [INFO] [stdout] 699 | | } [INFO] [stdout] | |_____________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_match [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 689 ~ Cell::Aig(_, _) | Cell::Xor(_, _) [INFO] [stdout] 690 | if { [INFO] [stdout] ... [INFO] [stdout] 696 | != 0 [INFO] [stdout] 697 ~ } => { [INFO] [stdout] 698 | self.rewrite(cell_ref.output().unwrap_net()) [INFO] [stdout] 699 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: in an `if` condition, avoid complex blocks or closures with blocks; instead, move the block or closure higher and bind it with a `let` [INFO] [stdout] --> src/dar.rs:690:21 [INFO] [stdout] | [INFO] [stdout] 690 | / if { [INFO] [stdout] 691 | | let use_counts = self.use_counts.borrow_mut(); [INFO] [stdout] 692 | | use_counts [INFO] [stdout] 693 | | .get(&cell_ref.output().unwrap_net()) [INFO] [stdout] ... | [INFO] [stdout] 696 | | != 0 [INFO] [stdout] 697 | | } { [INFO] [stdout] | |_____________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#blocks_in_conditions [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 690 ~ let res = { [INFO] [stdout] 691 + let use_counts = self.use_counts.borrow_mut(); [INFO] [stdout] 692 + use_counts [INFO] [stdout] 693 + .get(&cell_ref.output().unwrap_net()) [INFO] [stdout] 694 + .copied() [INFO] [stdout] 695 + .unwrap_or(0) [INFO] [stdout] 696 + != 0 [INFO] [stdout] 697 ~ }; if res { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `i` is used to index `p` [INFO] [stdout] --> src/npn.rs:23:18 [INFO] [stdout] | [INFO] [stdout] 23 | for i in 0..ninputs { [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 and enumerate() [INFO] [stdout] | [INFO] [stdout] 23 - for i in 0..ninputs { [INFO] [stdout] 23 + for (i, ) in p.iter_mut().enumerate().take(ninputs) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/npn.rs:80:9 [INFO] [stdout] | [INFO] [stdout] 80 | return ret; [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] 80 - return ret; [INFO] [stdout] 80 + ret [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/npn.rs:98:9 [INFO] [stdout] | [INFO] [stdout] 98 | return true; [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 98 - return true; [INFO] [stdout] 98 + true [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded unit return type [INFO] [stdout] --> src/npn.rs:208:19 [INFO] [stdout] | [INFO] [stdout] 208 | F: FnMut(&NPN) -> (), [INFO] [stdout] | ^^^^^^ help: remove the `-> ()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_unit [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/npn.rs:286:21 [INFO] [stdout] | [INFO] [stdout] 286 | / if tied[j as usize] != 0 { [INFO] [stdout] 287 | | if next_permutation(&mut order[j..(j + tied[j] + 1)]) { [INFO] [stdout] 288 | | continue 'permute; [INFO] [stdout] 289 | | } [INFO] [stdout] 290 | | } [INFO] [stdout] | |_____________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 286 ~ if tied[j as usize] != 0 [INFO] [stdout] 287 ~ && next_permutation(&mut order[j..(j + tied[j] + 1)]) { [INFO] [stdout] 288 | continue 'permute; [INFO] [stdout] 289 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting to the same type is unnecessary (`usize` -> `usize`) [INFO] [stdout] --> src/npn.rs:286:29 [INFO] [stdout] | [INFO] [stdout] 286 | if tied[j as usize] != 0 { [INFO] [stdout] | ^^^^^^^^^^ help: try: `j` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `FeatureSet` which implements the `Copy` trait [INFO] [stdout] --> src/sm.rs:22:23 [INFO] [stdout] | [INFO] [stdout] 22 | let mut ret = self.clone(); [INFO] [stdout] | ^^^^^^^^^^^^ help: try dereferencing it: `*self` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `FeatureSet` which implements the `Copy` trait [INFO] [stdout] --> src/sm.rs:29:23 [INFO] [stdout] | [INFO] [stdout] 29 | let mut ret = self.clone(); [INFO] [stdout] | ^^^^^^^^^^^^ help: try dereferencing it: `*self` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `FeatureSet` which implements the `Copy` trait [INFO] [stdout] --> src/sm.rs:36:23 [INFO] [stdout] | [INFO] [stdout] 36 | let mut ret = self.clone(); [INFO] [stdout] | ^^^^^^^^^^^^ help: try dereferencing it: `*self` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `FeatureSet` which implements the `Copy` trait [INFO] [stdout] --> src/sm.rs:43:23 [INFO] [stdout] | [INFO] [stdout] 43 | let mut ret = self.clone(); [INFO] [stdout] | ^^^^^^^^^^^^ help: try dereferencing it: `*self` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/sm.rs:170:9 [INFO] [stdout] | [INFO] [stdout] 170 | return !negated && pin == *ff_pin_expr; [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] 170 - return !negated && pin == *ff_pin_expr; [INFO] [stdout] 170 + !negated && pin == *ff_pin_expr [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/sm.rs:180:9 [INFO] [stdout] | [INFO] [stdout] 180 | return (negated && pin == *ff_pin_expr) || (!negated && pin == *ff_pin_negated_expr); [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] 180 - return (negated && pin == *ff_pin_expr) || (!negated && pin == *ff_pin_negated_expr); [INFO] [stdout] 180 + (negated && pin == *ff_pin_expr) || (!negated && pin == *ff_pin_negated_expr) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field assignment outside of initializer for an instance created with Default::default() [INFO] [stdout] --> src/sm.rs:280:13 [INFO] [stdout] | [INFO] [stdout] 280 | feats.clocked = true; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] note: consider initializing the variable with `sm::FeatureSet { clocked: true, clock_polarity: slice.clock.is_positive(), ..Default::default() }` and removing relevant reassignments [INFO] [stdout] --> src/sm.rs:279:13 [INFO] [stdout] | [INFO] [stdout] 279 | let mut feats = FeatureSet::default(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#field_reassign_with_default [INFO] [stdout] = note: `#[warn(clippy::field_reassign_with_default)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: name `EOF` contains a capitalized acronym [INFO] [stdout] --> src/target.rs:28:5 [INFO] [stdout] | [INFO] [stdout] 28 | EOF, [INFO] [stdout] | ^^^ help: consider making the acronym lowercase, except the initial letter (notice the capitalization): `Eof` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#upper_case_acronyms [INFO] [stdout] = note: `#[warn(clippy::upper_case_acronyms)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual check for common ascii range [INFO] [stdout] --> src/target.rs:52:9 [INFO] [stdout] | [INFO] [stdout] 52 | matches!(ch, '0'..='9') [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_is_ascii_check [INFO] [stdout] = note: `#[warn(clippy::manual_is_ascii_check)]` on by default [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 52 - matches!(ch, '0'..='9') [INFO] [stdout] 52 + ch.is_ascii_digit() [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: replacing a value of type `T` with `T::default()` is better expressed using `std::mem::take` [INFO] [stdout] --> src/target.rs:90:9 [INFO] [stdout] | [INFO] [stdout] 90 | std::mem::replace(&mut self.staging, String::new()) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using: `std::mem::take(&mut self.staging)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#mem_replace_with_default [INFO] [stdout] = note: `#[warn(clippy::mem_replace_with_default)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: binary comparison to literal `Option::None` [INFO] [stdout] --> src/target.rs:94:17 [INFO] [stdout] | [INFO] [stdout] 94 | assert!(self.inject == None); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ help: use `Option::is_none()` instead: `self.inject.is_none()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#partialeq_to_none [INFO] [stdout] = note: `#[warn(clippy::partialeq_to_none)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant pattern matching, consider using `is_some()` [INFO] [stdout] --> src/target.rs:99:16 [INFO] [stdout] | [INFO] [stdout] 99 | if let Some(_) = &self.inject { [INFO] [stdout] | -------^^^^^^^--------------- help: try: `if self.inject.is_some()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern_matching [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: replacing an `Option` with `None` [INFO] [stdout] --> src/target.rs:100:20 [INFO] [stdout] | [INFO] [stdout] 100 | return std::mem::replace(&mut self.inject, None).unwrap(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider `Option::take()` instead: `self.inject.take()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#mem_replace_option_with_none [INFO] [stdout] = note: `#[warn(clippy::mem_replace_option_with_none)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/target.rs:190:13 [INFO] [stdout] | [INFO] [stdout] 190 | return true; [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 190 - return true; [INFO] [stdout] 190 + true [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/target.rs:193:13 [INFO] [stdout] | [INFO] [stdout] 193 | return false; [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] 193 - return false; [INFO] [stdout] 193 + false [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/target.rs:226:9 [INFO] [stdout] | [INFO] [stdout] 226 | / match self { [INFO] [stdout] 227 | | Statement::Group(_, _, stmts @ _) => { [INFO] [stdout] 228 | | for stmt in &mut *stmts { [INFO] [stdout] 229 | | stmt.sort(); [INFO] [stdout] ... | [INFO] [stdout] 233 | | _ => {} [INFO] [stdout] 234 | | } [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] 226 ~ if let Statement::Group(_, _, stmts @ _) = self { [INFO] [stdout] 227 + for stmt in &mut *stmts { [INFO] [stdout] 228 + stmt.sort(); [INFO] [stdout] 229 + } [INFO] [stdout] 230 + stmts.sort_by(|a, b| a.key().cmp(b.key())); [INFO] [stdout] 231 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/target.rs:285:58 [INFO] [stdout] | [INFO] [stdout] 285 | Token::Id(text @ _) | Token::String(text @ _) => return text, [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] 285 - Token::Id(text @ _) | Token::String(text @ _) => return text, [INFO] [stdout] 285 + Token::Id(text @ _) | Token::String(text @ _) => text, [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/target.rs:349:9 [INFO] [stdout] | [INFO] [stdout] 349 | return Statement::Group(label, attrs, statements); [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] 349 - return Statement::Group(label, attrs, statements); [INFO] [stdout] 349 + Statement::Group(label, attrs, statements) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/target.rs:352:9 [INFO] [stdout] | [INFO] [stdout] 352 | return Statement::ComplexAttr(label, attrs); [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] 352 - return Statement::ComplexAttr(label, attrs); [INFO] [stdout] 352 + Statement::ComplexAttr(label, attrs) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/target.rs:400:5 [INFO] [stdout] | [INFO] [stdout] 400 | return Some((negated, pin)); [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] 400 - return Some((negated, pin)); [INFO] [stdout] 400 + Some((negated, pin)) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: binary comparison to literal `Option::None` [INFO] [stdout] --> src/target.rs:363:13 [INFO] [stdout] | [INFO] [stdout] 363 | assert!(chars.peek() != None); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: use `Option::is_some()` instead: `chars.peek().is_some()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#partialeq_to_none [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: binary comparison to literal `Option::None` [INFO] [stdout] --> src/target.rs:406:8 [INFO] [stdout] | [INFO] [stdout] 406 | if chars.peek() != None { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: use `Option::is_some()` instead: `chars.peek().is_some()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#partialeq_to_none [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/target.rs:527:5 [INFO] [stdout] | [INFO] [stdout] 527 | return Some(lhs); [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] 527 - return Some(lhs); [INFO] [stdout] 527 + Some(lhs) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: binary comparison to literal `Option::None` [INFO] [stdout] --> src/target.rs:424:13 [INFO] [stdout] | [INFO] [stdout] 424 | assert!(chars.peek() != None); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: use `Option::is_some()` instead: `chars.peek().is_some()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#partialeq_to_none [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: binary comparison to literal `Option::None` [INFO] [stdout] --> src/target.rs:477:12 [INFO] [stdout] | [INFO] [stdout] 477 | if chars.peek() == None { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: use `Option::is_none()` instead: `chars.peek().is_none()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#partialeq_to_none [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/target.rs:680:13 [INFO] [stdout] | [INFO] [stdout] 680 | / return match sense { [INFO] [stdout] 681 | | Some("positive_unate") => vec![Comb(Rise, Rise), Comb(Fall, Fall)], [INFO] [stdout] 682 | | Some("negative_unate") => vec![Comb(Rise, Fall), Comb(Fall, Rise)], [INFO] [stdout] 683 | | Some("non_unate") => vec![ [INFO] [stdout] ... | [INFO] [stdout] 692 | | } [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] 680 ~ match sense { [INFO] [stdout] 681 + Some("positive_unate") => vec![Comb(Rise, Rise), Comb(Fall, Fall)], [INFO] [stdout] 682 + Some("negative_unate") => vec![Comb(Rise, Fall), Comb(Fall, Rise)], [INFO] [stdout] 683 + Some("non_unate") => vec![ [INFO] [stdout] 684 + Comb(Rise, Rise), [INFO] [stdout] 685 + Comb(Rise, Fall), [INFO] [stdout] 686 + Comb(Fall, Rise), [INFO] [stdout] 687 + Comb(Fall, Fall), [INFO] [stdout] 688 + ], [INFO] [stdout] 689 + _ => { [INFO] [stdout] 690 + panic!("bad timing_sense value {:?}", sense) [INFO] [stdout] 691 + } [INFO] [stdout] 692 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/target.rs:695:13 [INFO] [stdout] | [INFO] [stdout] 695 | / return match sense { [INFO] [stdout] 696 | | Some("positive_unate") => vec![Comb(Rise, Rise)], [INFO] [stdout] 697 | | Some("negative_unate") => vec![Comb(Fall, Rise)], [INFO] [stdout] 698 | | Some("non_unate") => vec![Comb(Rise, Rise), Comb(Fall, Rise)], [INFO] [stdout] ... | [INFO] [stdout] 702 | | } [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] 695 ~ match sense { [INFO] [stdout] 696 + Some("positive_unate") => vec![Comb(Rise, Rise)], [INFO] [stdout] 697 + Some("negative_unate") => vec![Comb(Fall, Rise)], [INFO] [stdout] 698 + Some("non_unate") => vec![Comb(Rise, Rise), Comb(Fall, Rise)], [INFO] [stdout] 699 + _ => { [INFO] [stdout] 700 + panic!("unknown timing_sense value {:?}", sense) [INFO] [stdout] 701 + } [INFO] [stdout] 702 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/target.rs:705:13 [INFO] [stdout] | [INFO] [stdout] 705 | / return match sense { [INFO] [stdout] 706 | | Some("positive_unate") => vec![Comb(Fall, Fall)], [INFO] [stdout] 707 | | Some("negative_unate") => vec![Comb(Rise, Fall)], [INFO] [stdout] 708 | | Some("non_unate") => vec![Comb(Rise, Fall), Comb(Fall, Fall)], [INFO] [stdout] ... | [INFO] [stdout] 712 | | } [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] 705 ~ match sense { [INFO] [stdout] 706 + Some("positive_unate") => vec![Comb(Fall, Fall)], [INFO] [stdout] 707 + Some("negative_unate") => vec![Comb(Rise, Fall)], [INFO] [stdout] 708 + Some("non_unate") => vec![Comb(Rise, Fall), Comb(Fall, Fall)], [INFO] [stdout] 709 + _ => { [INFO] [stdout] 710 + panic!("unknown timing_sense value {:?}", sense) [INFO] [stdout] 711 + } [INFO] [stdout] 712 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/target.rs:740:13 [INFO] [stdout] | [INFO] [stdout] 740 | / return match sense { [INFO] [stdout] 741 | | Some("positive_unate") => { [INFO] [stdout] 742 | | vec![ThreeStateEnable(Rise, Rise), ThreeStateEnable(Rise, Fall)] [INFO] [stdout] ... | [INFO] [stdout] 756 | | } [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] 740 ~ match sense { [INFO] [stdout] 741 + Some("positive_unate") => { [INFO] [stdout] 742 + vec![ThreeStateEnable(Rise, Rise), ThreeStateEnable(Rise, Fall)] [INFO] [stdout] 743 + } [INFO] [stdout] 744 + Some("negative_unate") => { [INFO] [stdout] 745 + vec![ThreeStateEnable(Fall, Rise), ThreeStateEnable(Fall, Fall)] [INFO] [stdout] 746 + } [INFO] [stdout] 747 + Some("non_unate") => vec![ [INFO] [stdout] 748 + ThreeStateEnable(Rise, Rise), [INFO] [stdout] 749 + ThreeStateEnable(Rise, Fall), [INFO] [stdout] 750 + ThreeStateEnable(Fall, Rise), [INFO] [stdout] 751 + ThreeStateEnable(Fall, Fall), [INFO] [stdout] 752 + ], [INFO] [stdout] 753 + _ => { [INFO] [stdout] 754 + panic!("bad timing_sense value {:?}", sense) [INFO] [stdout] 755 + } [INFO] [stdout] 756 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/target.rs:759:13 [INFO] [stdout] | [INFO] [stdout] 759 | / return match sense { [INFO] [stdout] 760 | | Some("positive_unate") => { [INFO] [stdout] 761 | | vec![ThreeStateDisable(Rise, Rise), ThreeStateDisable(Rise, Fall)] [INFO] [stdout] ... | [INFO] [stdout] 775 | | } [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] 759 ~ match sense { [INFO] [stdout] 760 + Some("positive_unate") => { [INFO] [stdout] 761 + vec![ThreeStateDisable(Rise, Rise), ThreeStateDisable(Rise, Fall)] [INFO] [stdout] 762 + } [INFO] [stdout] 763 + Some("negative_unate") => { [INFO] [stdout] 764 + vec![ThreeStateDisable(Fall, Rise), ThreeStateDisable(Fall, Fall)] [INFO] [stdout] 765 + } [INFO] [stdout] 766 + Some("non_unate") => vec![ [INFO] [stdout] 767 + ThreeStateDisable(Rise, Rise), [INFO] [stdout] 768 + ThreeStateDisable(Rise, Fall), [INFO] [stdout] 769 + ThreeStateDisable(Fall, Rise), [INFO] [stdout] 770 + ThreeStateDisable(Fall, Fall), [INFO] [stdout] 771 + ], [INFO] [stdout] 772 + _ => { [INFO] [stdout] 773 + panic!("bad timing_sense value {:?}", sense) [INFO] [stdout] 774 + } [INFO] [stdout] 775 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/target.rs:778:13 [INFO] [stdout] | [INFO] [stdout] 778 | / return match sense { [INFO] [stdout] 779 | | Some("positive_unate") => vec![ThreeStateEnable(Rise, Rise)], [INFO] [stdout] 780 | | Some("negative_unate") => vec![ThreeStateEnable(Fall, Rise)], [INFO] [stdout] 781 | | Some("non_unate") => { [INFO] [stdout] ... | [INFO] [stdout] 787 | | } [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] 778 ~ match sense { [INFO] [stdout] 779 + Some("positive_unate") => vec![ThreeStateEnable(Rise, Rise)], [INFO] [stdout] 780 + Some("negative_unate") => vec![ThreeStateEnable(Fall, Rise)], [INFO] [stdout] 781 + Some("non_unate") => { [INFO] [stdout] 782 + vec![ThreeStateEnable(Rise, Rise), ThreeStateEnable(Fall, Rise)] [INFO] [stdout] 783 + } [INFO] [stdout] 784 + _ => { [INFO] [stdout] 785 + panic!("unknown timing_sense value {:?}", sense) [INFO] [stdout] 786 + } [INFO] [stdout] 787 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/target.rs:790:13 [INFO] [stdout] | [INFO] [stdout] 790 | / return match sense { [INFO] [stdout] 791 | | Some("positive_unate") => vec![ThreeStateEnable(Rise, Fall)], [INFO] [stdout] 792 | | Some("negative_unate") => vec![ThreeStateEnable(Fall, Fall)], [INFO] [stdout] 793 | | Some("non_unate") => { [INFO] [stdout] ... | [INFO] [stdout] 799 | | } [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] 790 ~ match sense { [INFO] [stdout] 791 + Some("positive_unate") => vec![ThreeStateEnable(Rise, Fall)], [INFO] [stdout] 792 + Some("negative_unate") => vec![ThreeStateEnable(Fall, Fall)], [INFO] [stdout] 793 + Some("non_unate") => { [INFO] [stdout] 794 + vec![ThreeStateEnable(Rise, Fall), ThreeStateEnable(Fall, Fall)] [INFO] [stdout] 795 + } [INFO] [stdout] 796 + _ => { [INFO] [stdout] 797 + panic!("unknown timing_sense value {:?}", sense) [INFO] [stdout] 798 + } [INFO] [stdout] 799 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/target.rs:802:13 [INFO] [stdout] | [INFO] [stdout] 802 | / return match sense { [INFO] [stdout] 803 | | Some("positive_unate") => vec![ThreeStateDisable(Rise, Rise)], [INFO] [stdout] 804 | | Some("negative_unate") => vec![ThreeStateDisable(Fall, Rise)], [INFO] [stdout] 805 | | Some("non_unate") => { [INFO] [stdout] ... | [INFO] [stdout] 811 | | } [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] 802 ~ match sense { [INFO] [stdout] 803 + Some("positive_unate") => vec![ThreeStateDisable(Rise, Rise)], [INFO] [stdout] 804 + Some("negative_unate") => vec![ThreeStateDisable(Fall, Rise)], [INFO] [stdout] 805 + Some("non_unate") => { [INFO] [stdout] 806 + vec![ThreeStateDisable(Rise, Rise), ThreeStateDisable(Fall, Rise)] [INFO] [stdout] 807 + } [INFO] [stdout] 808 + _ => { [INFO] [stdout] 809 + panic!("unknown timing_sense value {:?}", sense) [INFO] [stdout] 810 + } [INFO] [stdout] 811 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/target.rs:814:13 [INFO] [stdout] | [INFO] [stdout] 814 | / return match sense { [INFO] [stdout] 815 | | Some("positive_unate") => vec![ThreeStateDisable(Rise, Fall)], [INFO] [stdout] 816 | | Some("negative_unate") => vec![ThreeStateDisable(Fall, Fall)], [INFO] [stdout] 817 | | Some("non_unate") => { [INFO] [stdout] ... | [INFO] [stdout] 823 | | } [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] 814 ~ match sense { [INFO] [stdout] 815 + Some("positive_unate") => vec![ThreeStateDisable(Rise, Fall)], [INFO] [stdout] 816 + Some("negative_unate") => vec![ThreeStateDisable(Fall, Fall)], [INFO] [stdout] 817 + Some("non_unate") => { [INFO] [stdout] 818 + vec![ThreeStateDisable(Rise, Fall), ThreeStateDisable(Fall, Fall)] [INFO] [stdout] 819 + } [INFO] [stdout] 820 + _ => { [INFO] [stdout] 821 + panic!("unknown timing_sense value {:?}", sense) [INFO] [stdout] 822 + } [INFO] [stdout] 823 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/target.rs:826:23 [INFO] [stdout] | [INFO] [stdout] 826 | Some(kind) => return vec![ArcType::Unknown(kind.to_owned())], [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] 826 - Some(kind) => return vec![ArcType::Unknown(kind.to_owned())], [INFO] [stdout] 826 + Some(kind) => vec![ArcType::Unknown(kind.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/target.rs:836:40 [INFO] [stdout] | [INFO] [stdout] 836 | for template in library.lookup_all(&"lu_table_template") { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: change this to: `"lu_table_template"` [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 loop could be written as a `while let` loop [INFO] [stdout] --> src/target.rs:840:13 [INFO] [stdout] | [INFO] [stdout] 840 | / loop { [INFO] [stdout] 841 | | let Some(variable_text) = template.find_attribute(&format!("variable_{}", var_idx)) [INFO] [stdout] 842 | | else { [INFO] [stdout] 843 | | break; [INFO] [stdout] ... | [INFO] [stdout] 874 | | var_idx += 1; [INFO] [stdout] 875 | | } [INFO] [stdout] | |_____________^ help: try: `while let Some(variable_text) = template.find_attribute(&format!("variable_{}", var_idx)) { .. }` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#while_let_loop [INFO] [stdout] = note: `#[warn(clippy::while_let_loop)]` 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/target.rs:890:41 [INFO] [stdout] | [INFO] [stdout] 890 | let Some(values) = statement.lookup(&"values").and_then(|stmt| { [INFO] [stdout] | ^^^^^^^^^ help: change this to: `"values"` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `map(..).flatten()` on `Iterator` [INFO] [stdout] --> src/target.rs:893:14 [INFO] [stdout] | [INFO] [stdout] 893 | .map(|text| text.split(",").map(|v| v.trim().parse::())) [INFO] [stdout] | ______________^ [INFO] [stdout] 894 | | .flatten() [INFO] [stdout] | |______________________^ help: try replacing `map` with `flat_map` and remove the `.flatten()`: `flat_map(|text| text.split(",").map(|v| v.trim().parse::()))` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_flatten [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you should consider adding a `Default` implementation for `SCLTarget` [INFO] [stdout] --> src/target.rs:905:5 [INFO] [stdout] | [INFO] [stdout] 905 | / pub fn new() -> Self { [INFO] [stdout] 906 | | SCLTarget { [INFO] [stdout] 907 | | cells: BTreeMap::new(), [INFO] [stdout] 908 | | } [INFO] [stdout] 909 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default [INFO] [stdout] = note: `#[warn(clippy::new_without_default)]` on by default [INFO] [stdout] help: try adding this [INFO] [stdout] | [INFO] [stdout] 904 + impl Default for SCLTarget { [INFO] [stdout] 905 + fn default() -> Self { [INFO] [stdout] 906 + Self::new() [INFO] [stdout] 907 + } [INFO] [stdout] 908 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/target.rs:977:51 [INFO] [stdout] | [INFO] [stdout] 977 | for pin_statement in statement.lookup_all(&"pin") { [INFO] [stdout] | ^^^^^^ help: change this to: `"pin"` [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/target.rs:1011:46 [INFO] [stdout] | [INFO] [stdout] 1011 | for pin_stmt in statement.lookup_all(&"pin") { [INFO] [stdout] | ^^^^^^ help: change this to: `"pin"` [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/target.rs:1017:52 [INFO] [stdout] | [INFO] [stdout] 1017 | for timing_stmt in pin_stmt.lookup_all(&"timing") { [INFO] [stdout] | ^^^^^^^^^ help: change this to: `"timing"` [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/target.rs:1112:48 [INFO] [stdout] | [INFO] [stdout] 1112 | self.read_cell(&top_group, &statement) [INFO] [stdout] | ^^^^^^^^^^ help: change this to: `statement` [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/target.rs:1142:54 [INFO] [stdout] | [INFO] [stdout] 1142 | .instance_to_target_cell(design, &instance, cell_ref.output()) [INFO] [stdout] | ^^^^^^^^^ help: change this to: `instance` [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: unused import: `io::BufWriter` [INFO] [stdout] --> src/main.rs:7:44 [INFO] [stdout] | [INFO] [stdout] 7 | use std::{collections::BTreeMap, fs::File, io::BufWriter, io::Write, sync::Arc}; [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/main.rs:13:9 [INFO] [stdout] | [INFO] [stdout] 13 | / return ( [INFO] [stdout] 14 | | prjunnamed_netlist::parse(target, &std::fs::read_to_string(filename).unwrap()).unwrap(), [INFO] [stdout] 15 | | "top".to_owned(), [INFO] [stdout] 16 | | ); [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] 13 ~ ( [INFO] [stdout] 14 + prjunnamed_netlist::parse(target, &std::fs::read_to_string(filename).unwrap()).unwrap(), [INFO] [stdout] 15 + "top".to_owned(), [INFO] [stdout] 16 ~ ) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/main.rs:26:9 [INFO] [stdout] | [INFO] [stdout] 26 | return (designs.into_values().next().unwrap(), top_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] 26 - return (designs.into_values().next().unwrap(), top_name); [INFO] [stdout] 26 + (designs.into_values().next().unwrap(), top_name) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessarily eager cloning of iterator items [INFO] [stdout] --> src/main.rs:25:24 [INFO] [stdout] | [INFO] [stdout] 25 | let top_name = designs.keys().cloned().next().unwrap(); [INFO] [stdout] | ^^^^^^^^^^^^^^---------------- [INFO] [stdout] | | [INFO] [stdout] | help: try: `.next().cloned()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#iter_overeager_cloned [INFO] [stdout] = note: `#[warn(clippy::iter_overeager_cloned)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/main.rs:44:17 [INFO] [stdout] | [INFO] [stdout] 44 | return prjunnamed_generic::LowerMul {}.rewrite(cell, meta, output, rewriter); [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] 44 - return prjunnamed_generic::LowerMul {}.rewrite(cell, meta, output, rewriter); [INFO] [stdout] 44 + prjunnamed_generic::LowerMul {}.rewrite(cell, meta, output, rewriter) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you don't need to add `&` to all patterns [INFO] [stdout] --> src/main.rs:42:9 [INFO] [stdout] | [INFO] [stdout] 42 | / match cell { [INFO] [stdout] 43 | | &Cell::Mul(ref a, ref b) if (a.as_const().is_some() || b.as_const().is_some()) => { [INFO] [stdout] 44 | | return prjunnamed_generic::LowerMul {}.rewrite(cell, meta, output, rewriter); [INFO] [stdout] ... | [INFO] [stdout] 70 | | _ => RewriteResult::None, [INFO] [stdout] 71 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stdout] = note: `#[warn(clippy::match_ref_pats)]` on by default [INFO] [stdout] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stdout] | [INFO] [stdout] 42 ~ match *cell { [INFO] [stdout] 43 ~ Cell::Mul(ref a, ref b) if (a.as_const().is_some() || b.as_const().is_some()) => { [INFO] [stdout] 44 | return prjunnamed_generic::LowerMul {}.rewrite(cell, meta, output, rewriter); [INFO] [stdout] 45 | } [INFO] [stdout] 46 ~ Cell::Adc(ref arg1, ref arg2, ref cell_ci) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: dereferencing a tuple pattern where every element takes a reference [INFO] [stdout] --> src/main.rs:43:13 [INFO] [stdout] | [INFO] [stdout] 43 | &Cell::Mul(ref a, ref b) if (a.as_const().is_some() || b.as_const().is_some()) => { [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] 43 - &Cell::Mul(ref a, ref b) if (a.as_const().is_some() || b.as_const().is_some()) => { [INFO] [stdout] 43 + Cell::Mul(a, b) if (a.as_const().is_some() || b.as_const().is_some()) => { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: dereferencing a tuple pattern where every element takes a reference [INFO] [stdout] --> src/main.rs:46:13 [INFO] [stdout] | [INFO] [stdout] 46 | &Cell::Adc(ref arg1, ref arg2, ref cell_ci) [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] 46 - &Cell::Adc(ref arg1, ref arg2, ref cell_ci) [INFO] [stdout] 46 + Cell::Adc(arg1, arg2, cell_ci) [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/main.rs:232:9 [INFO] [stdout] | [INFO] [stdout] 232 | / match &*cell.get() { [INFO] [stdout] 233 | | Cell::Xor(arg1, arg2) => { [INFO] [stdout] 234 | | design.replace_value( [INFO] [stdout] 235 | | cell.output(), [INFO] [stdout] ... | [INFO] [stdout] 252 | | _ => {} [INFO] [stdout] 253 | | } [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] 232 ~ if let Cell::Xor(arg1, arg2) = &*cell.get() { [INFO] [stdout] 233 + design.replace_value( [INFO] [stdout] 234 + cell.output(), [INFO] [stdout] 235 + arg1.iter() [INFO] [stdout] 236 + .zip(arg2.iter()) [INFO] [stdout] 237 + .map(|(net1, net2)| { [INFO] [stdout] 238 + design.add_aig( [INFO] [stdout] 239 + ControlNet::Neg( [INFO] [stdout] 240 + design.add_aig(ControlNet::Pos(net1), ControlNet::Pos(net2)), [INFO] [stdout] 241 + ), [INFO] [stdout] 242 + ControlNet::Neg( [INFO] [stdout] 243 + design.add_aig(ControlNet::Neg(net1), ControlNet::Neg(net2)), [INFO] [stdout] 244 + ), [INFO] [stdout] 245 + ) [INFO] [stdout] 246 + }) [INFO] [stdout] 247 + .collect::(), [INFO] [stdout] 248 + ); [INFO] [stdout] 249 + cell.unalive(); [INFO] [stdout] 250 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `io::BufWriter` [INFO] [stdout] --> src/main.rs:7:44 [INFO] [stdout] | [INFO] [stdout] 7 | use std::{collections::BTreeMap, fs::File, io::BufWriter, io::Write, sync::Arc}; [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/main.rs:13:9 [INFO] [stdout] | [INFO] [stdout] 13 | / return ( [INFO] [stdout] 14 | | prjunnamed_netlist::parse(target, &std::fs::read_to_string(filename).unwrap()).unwrap(), [INFO] [stdout] 15 | | "top".to_owned(), [INFO] [stdout] 16 | | ); [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] 13 ~ ( [INFO] [stdout] 14 + prjunnamed_netlist::parse(target, &std::fs::read_to_string(filename).unwrap()).unwrap(), [INFO] [stdout] 15 + "top".to_owned(), [INFO] [stdout] 16 ~ ) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/main.rs:26:9 [INFO] [stdout] | [INFO] [stdout] 26 | return (designs.into_values().next().unwrap(), top_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] 26 - return (designs.into_values().next().unwrap(), top_name); [INFO] [stdout] 26 + (designs.into_values().next().unwrap(), top_name) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessarily eager cloning of iterator items [INFO] [stdout] --> src/main.rs:25:24 [INFO] [stdout] | [INFO] [stdout] 25 | let top_name = designs.keys().cloned().next().unwrap(); [INFO] [stdout] | ^^^^^^^^^^^^^^---------------- [INFO] [stdout] | | [INFO] [stdout] | help: try: `.next().cloned()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#iter_overeager_cloned [INFO] [stdout] = note: `#[warn(clippy::iter_overeager_cloned)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/main.rs:44:17 [INFO] [stdout] | [INFO] [stdout] 44 | return prjunnamed_generic::LowerMul {}.rewrite(cell, meta, output, rewriter); [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] 44 - return prjunnamed_generic::LowerMul {}.rewrite(cell, meta, output, rewriter); [INFO] [stdout] 44 + prjunnamed_generic::LowerMul {}.rewrite(cell, meta, output, rewriter) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you don't need to add `&` to all patterns [INFO] [stdout] --> src/main.rs:42:9 [INFO] [stdout] | [INFO] [stdout] 42 | / match cell { [INFO] [stdout] 43 | | &Cell::Mul(ref a, ref b) if (a.as_const().is_some() || b.as_const().is_some()) => { [INFO] [stdout] 44 | | return prjunnamed_generic::LowerMul {}.rewrite(cell, meta, output, rewriter); [INFO] [stdout] ... | [INFO] [stdout] 70 | | _ => RewriteResult::None, [INFO] [stdout] 71 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stdout] = note: `#[warn(clippy::match_ref_pats)]` on by default [INFO] [stdout] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stdout] | [INFO] [stdout] 42 ~ match *cell { [INFO] [stdout] 43 ~ Cell::Mul(ref a, ref b) if (a.as_const().is_some() || b.as_const().is_some()) => { [INFO] [stdout] 44 | return prjunnamed_generic::LowerMul {}.rewrite(cell, meta, output, rewriter); [INFO] [stdout] 45 | } [INFO] [stdout] 46 ~ Cell::Adc(ref arg1, ref arg2, ref cell_ci) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: dereferencing a tuple pattern where every element takes a reference [INFO] [stdout] --> src/main.rs:43:13 [INFO] [stdout] | [INFO] [stdout] 43 | &Cell::Mul(ref a, ref b) if (a.as_const().is_some() || b.as_const().is_some()) => { [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] 43 - &Cell::Mul(ref a, ref b) if (a.as_const().is_some() || b.as_const().is_some()) => { [INFO] [stdout] 43 + Cell::Mul(a, b) if (a.as_const().is_some() || b.as_const().is_some()) => { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: dereferencing a tuple pattern where every element takes a reference [INFO] [stdout] --> src/main.rs:46:13 [INFO] [stdout] | [INFO] [stdout] 46 | &Cell::Adc(ref arg1, ref arg2, ref cell_ci) [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] 46 - &Cell::Adc(ref arg1, ref arg2, ref cell_ci) [INFO] [stdout] 46 + Cell::Adc(arg1, arg2, cell_ci) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 10.54s [INFO] [stdout] warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> src/main.rs:232:9 [INFO] [stdout] | [INFO] [stdout] 232 | / match &*cell.get() { [INFO] [stdout] 233 | | Cell::Xor(arg1, arg2) => { [INFO] [stdout] 234 | | design.replace_value( [INFO] [stdout] 235 | | cell.output(), [INFO] [stdout] ... | [INFO] [stdout] 252 | | _ => {} [INFO] [stdout] 253 | | } [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] 232 ~ if let Cell::Xor(arg1, arg2) = &*cell.get() { [INFO] [stdout] 233 + design.replace_value( [INFO] [stdout] 234 + cell.output(), [INFO] [stdout] 235 + arg1.iter() [INFO] [stdout] 236 + .zip(arg2.iter()) [INFO] [stdout] 237 + .map(|(net1, net2)| { [INFO] [stdout] 238 + design.add_aig( [INFO] [stdout] 239 + ControlNet::Neg( [INFO] [stdout] 240 + design.add_aig(ControlNet::Pos(net1), ControlNet::Pos(net2)), [INFO] [stdout] 241 + ), [INFO] [stdout] 242 + ControlNet::Neg( [INFO] [stdout] 243 + design.add_aig(ControlNet::Neg(net1), ControlNet::Neg(net2)), [INFO] [stdout] 244 + ), [INFO] [stdout] 245 + ) [INFO] [stdout] 246 + }) [INFO] [stdout] 247 + .collect::(), [INFO] [stdout] 248 + ); [INFO] [stdout] 249 + cell.unalive(); [INFO] [stdout] 250 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] running `Command { std: "docker" "inspect" "cba3efaedb48c2933671d99fc5868f39d0fffd2f2eb559f79dc85de3dfad2d43", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "cba3efaedb48c2933671d99fc5868f39d0fffd2f2eb559f79dc85de3dfad2d43", kill_on_drop: false }` [INFO] [stdout] cba3efaedb48c2933671d99fc5868f39d0fffd2f2eb559f79dc85de3dfad2d43