[INFO] cloning repository https://github.com/k-h-m/ginger [INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/k-h-m/ginger" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fk-h-m%2Fginger", kill_on_drop: false }` [INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fk-h-m%2Fginger'... [INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }` [INFO] [stdout] ccee86979eb525022f44bdc8a70d232d9c3740b1 [INFO] linting k-h-m/ginger against nightly for clippy-nonminimal_bool-denied [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fk-h-m%2Fginger" "/workspace/builds/worker-0-tc1/source", kill_on_drop: false }` [INFO] [stderr] Cloning into '/workspace/builds/worker-0-tc1/source'... [INFO] [stderr] done. [INFO] started tweaking git repo https://github.com/k-h-m/ginger [INFO] finished tweaking git repo https://github.com/k-h-m/ginger [INFO] tweaked toml for git repo https://github.com/k-h-m/ginger written to /workspace/builds/worker-0-tc1/source/Cargo.toml [INFO] validating manifest of git repo https://github.com/k-h-m/ginger 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/k-h-m/ginger 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] Blocking waiting for file lock on package cache [INFO] [stderr] Updating crates.io index [INFO] [stderr] Updating git repository `https://github.com/k-h-m/poppler-glib-rs` [INFO] [stderr] Blocking waiting for file lock on package cache [INFO] [stderr] Downloading crates ... [INFO] [stderr] Downloaded strsim v0.7.0 [INFO] [stderr] Downloaded svg v0.5.11 [INFO] [stderr] Downloaded gobject-sys v0.6.0 [INFO] [stderr] Downloaded winapi-util v0.1.1 [INFO] [stderr] Downloaded redox_syscall v0.1.43 [INFO] [stderr] Downloaded glib v0.5.0 [INFO] [stderr] Downloaded glib-sys v0.6.0 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-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] 98eb6a1e8a80017139669d0a60c70317c24cf9d7e19c21a2d7797d7c3358562a [INFO] running `Command { std: "docker" "start" "-a" "98eb6a1e8a80017139669d0a60c70317c24cf9d7e19c21a2d7797d7c3358562a", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "98eb6a1e8a80017139669d0a60c70317c24cf9d7e19c21a2d7797d7c3358562a", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "98eb6a1e8a80017139669d0a60c70317c24cf9d7e19c21a2d7797d7c3358562a", kill_on_drop: false }` [INFO] [stdout] 98eb6a1e8a80017139669d0a60c70317c24cf9d7e19c21a2d7797d7c3358562a [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-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] 8f65d46d8874f1ed616dae14803185b767c0bd3e8eac1034f768dc301c43bc4e [INFO] running `Command { std: "docker" "start" "-a" "8f65d46d8874f1ed616dae14803185b767c0bd3e8eac1034f768dc301c43bc4e", kill_on_drop: false }` [INFO] [stderr] Compiling pkg-config v0.3.14 [INFO] [stderr] Compiling libc v0.2.44 [INFO] [stderr] Checking lazy_static v1.2.0 [INFO] [stderr] Checking same-file v1.0.4 [INFO] [stderr] Checking strsim v0.7.0 [INFO] [stderr] Checking svg v0.5.11 [INFO] [stderr] Checking textwrap v0.10.0 [INFO] [stderr] Checking walkdir v2.2.7 [INFO] [stderr] Compiling glib-sys v0.6.0 [INFO] [stderr] Compiling gobject-sys v0.6.0 [INFO] [stderr] Checking atty v0.2.11 [INFO] [stderr] Checking clap v2.32.0 [INFO] [stderr] Checking glib v0.5.0 [INFO] [stderr] Checking poppler v0.1.0 (https://github.com/k-h-m/poppler-glib-rs#cd863c2a) [INFO] [stderr] Checking ginger v0.1.0 (/opt/rustwide/workdir) [INFO] [stdout] warning: unneeded unit expression [INFO] [stdout] --> src/zuzu.rs:304:13 [INFO] [stdout] | [INFO] [stdout] 304 | () //linear or max node; nothing to do [INFO] [stdout] | ^^ help: remove the final `()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_unit [INFO] [stdout] = note: `#[warn(clippy::unused_unit)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `get_authors` is never used [INFO] [stdout] --> src/named.rs:9:4 [INFO] [stdout] | [INFO] [stdout] 9 | fn get_authors(s: &str) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `get_publisher` is never used [INFO] [stdout] --> src/named.rs:24:4 [INFO] [stdout] | [INFO] [stdout] 24 | fn get_publisher(_s: &str) -> (Option,Option) { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `get_item` is never used [INFO] [stdout] --> src/named.rs:28:4 [INFO] [stdout] | [INFO] [stdout] 28 | fn get_item(s: &str) -> Option{ [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `named` is never used [INFO] [stdout] --> src/named.rs:43:4 [INFO] [stdout] | [INFO] [stdout] 43 | fn named(fname: &str) { [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `Author` is never constructed [INFO] [stdout] --> src/item.rs:4:12 [INFO] [stdout] | [INFO] [stdout] 4 | pub struct Author { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `skip(..).next()` on an iterator [INFO] [stdout] --> src/walk_files.rs:6:32 [INFO] [stdout] | [INFO] [stdout] 6 | let name = std::env::args().skip(1).next().unwrap(); [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: use `nth` instead: `.nth(1)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#iter_skip_next [INFO] [stdout] = note: `#[warn(clippy::iter_skip_next)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enum `GlobalId` is never used [INFO] [stdout] --> src/item.rs:10:10 [INFO] [stdout] | [INFO] [stdout] 10 | pub enum GlobalId { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `Item` is never constructed [INFO] [stdout] --> src/item.rs:19:12 [INFO] [stdout] | [INFO] [stdout] 19 | pub struct Item { [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: name `DOI` contains a capitalized acronym [INFO] [stdout] --> src/item.rs:11:5 [INFO] [stdout] | [INFO] [stdout] 11 | DOI(String), [INFO] [stdout] | ^^^ help: consider making the acronym lowercase, except the initial letter (notice the capitalization): `Doi` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#upper_case_acronyms [INFO] [stdout] = note: `#[warn(clippy::upper_case_acronyms)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: name `ISBN` contains a capitalized acronym [INFO] [stdout] --> src/item.rs:12:5 [INFO] [stdout] | [INFO] [stdout] 12 | ISBN(String), [INFO] [stdout] | ^^^^ help: consider making the acronym lowercase, except the initial letter: `Isbn` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#upper_case_acronyms [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: name `ARXIV` contains a capitalized acronym [INFO] [stdout] --> src/item.rs:13:5 [INFO] [stdout] | [INFO] [stdout] 13 | ARXIV(String), [INFO] [stdout] | ^^^^^ help: consider making the acronym lowercase, except the initial letter: `Arxiv` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#upper_case_acronyms [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: name `CITEER` contains a capitalized acronym [INFO] [stdout] --> src/item.rs:14:5 [INFO] [stdout] | [INFO] [stdout] 14 | CITEER(String), [INFO] [stdout] | ^^^^^^ help: consider making the acronym lowercase, except the initial letter: `Citeer` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#upper_case_acronyms [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: name `HAL` contains a capitalized acronym [INFO] [stdout] --> src/item.rs:15:5 [INFO] [stdout] | [INFO] [stdout] 15 | HAL(String), [INFO] [stdout] | ^^^ help: consider making the acronym lowercase, except the initial letter: `Hal` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#upper_case_acronyms [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/item.rs:44:5 [INFO] [stdout] | [INFO] [stdout] 44 | return None [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] = note: `#[warn(clippy::needless_return)]` on by default [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 44 - return None [INFO] [stdout] 44 + None [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: dereferencing a tuple pattern where every element takes a reference [INFO] [stdout] --> src/item.rs:39:9 [INFO] [stdout] | [INFO] [stdout] 39 | for &(ref i, ref m) in ITEM_TYPES.iter() { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrowed_reference [INFO] [stdout] = note: `#[warn(clippy::needless_borrowed_reference)]` on by default [INFO] [stdout] help: try removing the `&` and `ref` parts [INFO] [stdout] | [INFO] [stdout] 39 - for &(ref i, ref m) in ITEM_TYPES.iter() { [INFO] [stdout] 39 + for (i, m) in ITEM_TYPES.iter() { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: stripping a prefix manually [INFO] [stdout] --> src/item.rs:41:29 [INFO] [stdout] | [INFO] [stdout] 41 | return Some((i, &s[m.len()..])) [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] note: the prefix was tested here [INFO] [stdout] --> src/item.rs:40:9 [INFO] [stdout] | [INFO] [stdout] 40 | if s.starts_with(m) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_strip [INFO] [stdout] = note: `#[warn(clippy::manual_strip)]` on by default [INFO] [stdout] help: try using the `strip_prefix` method [INFO] [stdout] | [INFO] [stdout] 40 ~ if let Some() = s.strip_prefix(m) { [INFO] [stdout] 41 ~ return Some((i, )) [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/named.rs:72:9 [INFO] [stdout] | [INFO] [stdout] 72 | / match item::item_type(l) { [INFO] [stdout] 73 | | Some((&item::ItemType::Springer, x)) => println!("{}", x), [INFO] [stdout] 74 | | _ => () [INFO] [stdout] 75 | | } [INFO] [stdout] | |_________^ help: try: `if let Some((&item::ItemType::Springer, x)) = item::item_type(l) { println!("{}", x) }` [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] [INFO] [stdout] [INFO] [stdout] warning: methods `width` and `length` are never used [INFO] [stdout] --> src/similar.rs:55:8 [INFO] [stdout] | [INFO] [stdout] 54 | impl BBox { [INFO] [stdout] | --------- methods in this implementation [INFO] [stdout] 55 | fn width(&self) -> f64 { [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 59 | fn length(&self) -> f64 { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `font_name` is never read [INFO] [stdout] --> src/similar.rs:78:5 [INFO] [stdout] | [INFO] [stdout] 75 | struct TT { [INFO] [stdout] | -- field in this struct [INFO] [stdout] ... [INFO] [stdout] 78 | font_name: String, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `TT` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> src/springer.rs:12:33 [INFO] [stdout] | [INFO] [stdout] 12 | fn validate_page(s: &str, attr: &Vec, layout: &Vec) -> [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] = note: `#[warn(clippy::ptr_arg)]` on by default [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 12 - fn validate_page(s: &str, attr: &Vec, layout: &Vec) -> [INFO] [stdout] 12 + fn validate_page(s: &str, attr: &[poppler::TextAttr], layout: &Vec) -> [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/page_data.rs:35:5 [INFO] [stdout] | [INFO] [stdout] 35 | return y1 - x1 + 1 [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] 35 - return y1 - x1 + 1 [INFO] [stdout] 35 + y1 - x1 + 1 [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> src/springer.rs:12:66 [INFO] [stdout] | [INFO] [stdout] 12 | fn validate_page(s: &str, attr: &Vec, layout: &Vec) -> [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 12 - fn validate_page(s: &str, attr: &Vec, layout: &Vec) -> [INFO] [stdout] 12 + fn validate_page(s: &str, attr: &Vec, layout: &[poppler::ffi::PopplerRectangle]) -> [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/similar.rs:105:5 [INFO] [stdout] | [INFO] [stdout] 105 | return y1 - x1 + 1 [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] 105 - return y1 - x1 + 1 [INFO] [stdout] 105 + y1 - x1 + 1 [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `i` is used to index `attr` [INFO] [stdout] --> src/page_data.rs:41:14 [INFO] [stdout] | [INFO] [stdout] 41 | for i in 0.. attr.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] 41 - for i in 0.. attr.len() { [INFO] [stdout] 41 + for (i, ) in attr.iter().enumerate() { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: consider using `sort_by_key` [INFO] [stdout] --> src/page_data.rs:45:5 [INFO] [stdout] | [INFO] [stdout] 45 | acc.sort_by(|&(l1,_i1),&(l2,_i2)| l1.cmp(&l2)); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_sort_by [INFO] [stdout] = note: `#[warn(clippy::unnecessary_sort_by)]` on by default [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 45 - acc.sort_by(|&(l1,_i1),&(l2,_i2)| l1.cmp(&l2)); [INFO] [stdout] 45 + acc.sort_by_key(|&(l1,_i1)| l1); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/page_data.rs:61:5 [INFO] [stdout] | [INFO] [stdout] 61 | return (left, top, right, bottom) [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] 61 - return (left, top, right, bottom) [INFO] [stdout] 61 + (left, top, right, bottom) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/page_data.rs:50:13 [INFO] [stdout] | [INFO] [stdout] 50 | assert!(p.len() > 0); [INFO] [stdout] | ^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!p.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stdout] = note: `#[warn(clippy::len_zero)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `i` is only used to index `p` [INFO] [stdout] --> src/page_data.rs:55:14 [INFO] [stdout] | [INFO] [stdout] 55 | for i in 1..p.len() { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stdout] help: consider using an iterator [INFO] [stdout] | [INFO] [stdout] 55 - for i in 1..p.len() { [INFO] [stdout] 55 + for in p.iter().skip(1) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/springer.rs:39:5 [INFO] [stdout] | [INFO] [stdout] 39 | return (left, right, top, bottom) [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] 39 - return (left, right, top, bottom) [INFO] [stdout] 39 + (left, right, top, bottom) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/springer.rs:28:13 [INFO] [stdout] | [INFO] [stdout] 28 | assert!(p.len() > 0); [INFO] [stdout] | ^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!p.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stdout] = note: `#[warn(clippy::len_zero)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `i` is only used to index `p` [INFO] [stdout] --> src/springer.rs:33:14 [INFO] [stdout] | [INFO] [stdout] 33 | for i in 1..p.len() { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stdout] = note: `#[warn(clippy::needless_range_loop)]` on by default [INFO] [stdout] help: consider using an iterator [INFO] [stdout] | [INFO] [stdout] 33 - for i in 1..p.len() { [INFO] [stdout] 33 + for in p.iter().skip(1) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/similar.rs:109:13 [INFO] [stdout] | [INFO] [stdout] 109 | assert!(attr.len() > 0); [INFO] [stdout] | ^^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!attr.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stdout] = note: `#[warn(clippy::len_zero)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `i` is used to index `attr` [INFO] [stdout] --> src/similar.rs:111:14 [INFO] [stdout] | [INFO] [stdout] 111 | for i in 0.. attr.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] 111 - for i in 0.. attr.len() { [INFO] [stdout] 111 + for (i, ) in attr.iter().enumerate() { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: consider using `sort_by_key` [INFO] [stdout] --> src/similar.rs:115:5 [INFO] [stdout] | [INFO] [stdout] 115 | acc.sort_by(|&(l1,_i1),&(l2,_i2)| l1.cmp(&l2)); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_sort_by [INFO] [stdout] = note: `#[warn(clippy::unnecessary_sort_by)]` on by default [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 115 - acc.sort_by(|&(l1,_i1),&(l2,_i2)| l1.cmp(&l2)); [INFO] [stdout] 115 + acc.sort_by_key(|&(l1,_i1)| l1); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/similar.rs:131:5 [INFO] [stdout] | [INFO] [stdout] 131 | return BBox{left, top, right, bottom} [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] 131 - return BBox{left, top, right, bottom} [INFO] [stdout] 131 + BBox{left, top, right, bottom} [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/similar.rs:120:13 [INFO] [stdout] | [INFO] [stdout] 120 | assert!(p.len() > 0); [INFO] [stdout] | ^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!p.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded unit expression [INFO] [stdout] --> src/zuzu.rs:304:13 [INFO] [stdout] | [INFO] [stdout] 304 | () //linear or max node; nothing to do [INFO] [stdout] | ^^ help: remove the final `()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_unit [INFO] [stdout] = note: `#[warn(clippy::unused_unit)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `i` is only used to index `p` [INFO] [stdout] --> src/similar.rs:125:14 [INFO] [stdout] | [INFO] [stdout] 125 | for i in 1..p.len() { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stdout] help: consider using an iterator [INFO] [stdout] | [INFO] [stdout] 125 - for i in 1..p.len() { [INFO] [stdout] 125 + for in p.iter().skip(1) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/similar.rs:195:5 [INFO] [stdout] | [INFO] [stdout] 195 | 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] 195 - return true [INFO] [stdout] 195 + true [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: empty string literal in `println!` [INFO] [stdout] --> src/page_data.rs:75:5 [INFO] [stdout] | [INFO] [stdout] 75 | println!(""); [INFO] [stdout] | ^^^^^^^^^--^ [INFO] [stdout] | | [INFO] [stdout] | help: remove the empty string [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#println_empty_string [INFO] [stdout] = note: `#[warn(clippy::println_empty_string)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the variable `char_cnt` is used as a loop counter [INFO] [stdout] --> src/page_data.rs:82:5 [INFO] [stdout] | [INFO] [stdout] 82 | for (i,c) in text.char_indices() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using: `for (char_cnt, (i,c)) in text.char_indices().enumerate()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_counter_loop [INFO] [stdout] = note: `#[warn(clippy::explicit_counter_loop)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `i` is only used to index `r` [INFO] [stdout] --> src/similar.rs:163:14 [INFO] [stdout] | [INFO] [stdout] 163 | for i in 0 .. r.len() { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stdout] help: consider using an iterator [INFO] [stdout] | [INFO] [stdout] 163 - for i in 0 .. r.len() { [INFO] [stdout] 163 + for in &r { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `j` is only used to index `clusters` [INFO] [stdout] --> src/similar.rs:165:18 [INFO] [stdout] | [INFO] [stdout] 165 | for j in 0 .. clusters.len() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stdout] help: consider using an iterator [INFO] [stdout] | [INFO] [stdout] 165 - for j in 0 .. clusters.len() { [INFO] [stdout] 165 + for in &mut clusters { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `i` is only used to index `clusters` [INFO] [stdout] --> src/similar.rs:181:14 [INFO] [stdout] | [INFO] [stdout] 181 | for i in 0 .. clusters.len() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stdout] help: consider using an iterator [INFO] [stdout] | [INFO] [stdout] 181 - for i in 0 .. clusters.len() { [INFO] [stdout] 181 + for in &clusters { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `j` is only used to index `cl` [INFO] [stdout] --> src/similar.rs:184:18 [INFO] [stdout] | [INFO] [stdout] 184 | for j in 0 .. cl.len() { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stdout] help: consider using an iterator [INFO] [stdout] | [INFO] [stdout] 184 - for j in 0 .. cl.len() { [INFO] [stdout] 184 + for in &cl { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/similar.rs:207:5 [INFO] [stdout] | [INFO] [stdout] 207 | 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] 207 - return true [INFO] [stdout] 207 + true [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `i` is only used to index `t` [INFO] [stdout] --> src/similar.rs:202:14 [INFO] [stdout] | [INFO] [stdout] 202 | for i in 0 .. t.len() { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stdout] help: consider using an iterator [INFO] [stdout] | [INFO] [stdout] 202 - for i in 0 .. t.len() { [INFO] [stdout] 202 + for in &t { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the variable `char_cnt` is used as a loop counter [INFO] [stdout] --> src/similar.rs:222:5 [INFO] [stdout] | [INFO] [stdout] 222 | for (i,c) in text.char_indices() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using: `for (char_cnt, (i,c)) in text.char_indices().enumerate()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_counter_loop [INFO] [stdout] = note: `#[warn(clippy::explicit_counter_loop)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/zuzu.rs:287:17 [INFO] [stdout] | [INFO] [stdout] 287 | let mut chain = vec![i]; [INFO] [stdout] | ----^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `width` and `length` are never used [INFO] [stdout] --> src/similar.rs:55:8 [INFO] [stdout] | [INFO] [stdout] 54 | impl BBox { [INFO] [stdout] | --------- methods in this implementation [INFO] [stdout] 55 | fn width(&self) -> f64 { [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 59 | fn length(&self) -> f64 { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `font_name` is never read [INFO] [stdout] --> src/similar.rs:78:5 [INFO] [stdout] | [INFO] [stdout] 75 | struct TT { [INFO] [stdout] | -- field in this struct [INFO] [stdout] ... [INFO] [stdout] 78 | font_name: String, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `TT` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/similar.rs:105:5 [INFO] [stdout] | [INFO] [stdout] 105 | return y1 - x1 + 1 [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] 105 - return y1 - x1 + 1 [INFO] [stdout] 105 + y1 - x1 + 1 [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/similar.rs:109:13 [INFO] [stdout] | [INFO] [stdout] 109 | assert!(attr.len() > 0); [INFO] [stdout] | ^^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!attr.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stdout] = note: `#[warn(clippy::len_zero)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `i` is used to index `attr` [INFO] [stdout] --> src/similar.rs:111:14 [INFO] [stdout] | [INFO] [stdout] 111 | for i in 0.. attr.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] 111 - for i in 0.. attr.len() { [INFO] [stdout] 111 + for (i, ) in attr.iter().enumerate() { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: consider using `sort_by_key` [INFO] [stdout] --> src/similar.rs:115:5 [INFO] [stdout] | [INFO] [stdout] 115 | acc.sort_by(|&(l1,_i1),&(l2,_i2)| l1.cmp(&l2)); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_sort_by [INFO] [stdout] = note: `#[warn(clippy::unnecessary_sort_by)]` on by default [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 115 - acc.sort_by(|&(l1,_i1),&(l2,_i2)| l1.cmp(&l2)); [INFO] [stdout] 115 + acc.sort_by_key(|&(l1,_i1)| l1); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/similar.rs:131:5 [INFO] [stdout] | [INFO] [stdout] 131 | return BBox{left, top, right, bottom} [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] 131 - return BBox{left, top, right, bottom} [INFO] [stdout] 131 + BBox{left, top, right, bottom} [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/similar.rs:120:13 [INFO] [stdout] | [INFO] [stdout] 120 | assert!(p.len() > 0); [INFO] [stdout] | ^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!p.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `i` is only used to index `p` [INFO] [stdout] --> src/similar.rs:125:14 [INFO] [stdout] | [INFO] [stdout] 125 | for i in 1..p.len() { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stdout] help: consider using an iterator [INFO] [stdout] | [INFO] [stdout] 125 - for i in 1..p.len() { [INFO] [stdout] 125 + for in p.iter().skip(1) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/similar.rs:195:5 [INFO] [stdout] | [INFO] [stdout] 195 | 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] 195 - return true [INFO] [stdout] 195 + true [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `i` is only used to index `r` [INFO] [stdout] --> src/similar.rs:163:14 [INFO] [stdout] | [INFO] [stdout] 163 | for i in 0 .. r.len() { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stdout] help: consider using an iterator [INFO] [stdout] | [INFO] [stdout] 163 - for i in 0 .. r.len() { [INFO] [stdout] 163 + for in &r { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `j` is only used to index `clusters` [INFO] [stdout] --> src/similar.rs:165:18 [INFO] [stdout] | [INFO] [stdout] 165 | for j in 0 .. clusters.len() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stdout] help: consider using an iterator [INFO] [stdout] | [INFO] [stdout] 165 - for j in 0 .. clusters.len() { [INFO] [stdout] 165 + for in &mut clusters { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `i` is only used to index `clusters` [INFO] [stdout] --> src/similar.rs:181:14 [INFO] [stdout] | [INFO] [stdout] 181 | for i in 0 .. clusters.len() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stdout] help: consider using an iterator [INFO] [stdout] | [INFO] [stdout] 181 - for i in 0 .. clusters.len() { [INFO] [stdout] 181 + for in &clusters { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `j` is only used to index `cl` [INFO] [stdout] --> src/similar.rs:184:18 [INFO] [stdout] | [INFO] [stdout] 184 | for j in 0 .. cl.len() { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stdout] help: consider using an iterator [INFO] [stdout] | [INFO] [stdout] 184 - for j in 0 .. cl.len() { [INFO] [stdout] 184 + for in &cl { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/similar.rs:207:5 [INFO] [stdout] | [INFO] [stdout] 207 | 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] 207 - return true [INFO] [stdout] 207 + true [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `i` is only used to index `t` [INFO] [stdout] --> src/similar.rs:202:14 [INFO] [stdout] | [INFO] [stdout] 202 | for i in 0 .. t.len() { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stdout] help: consider using an iterator [INFO] [stdout] | [INFO] [stdout] 202 - for i in 0 .. t.len() { [INFO] [stdout] 202 + for in &t { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the variable `char_cnt` is used as a loop counter [INFO] [stdout] --> src/similar.rs:222:5 [INFO] [stdout] | [INFO] [stdout] 222 | for (i,c) in text.char_indices() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using: `for (char_cnt, (i,c)) in text.char_indices().enumerate()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_counter_loop [INFO] [stdout] = note: `#[warn(clippy::explicit_counter_loop)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `length` is never used [INFO] [stdout] --> src/zuzu.rs:62:8 [INFO] [stdout] | [INFO] [stdout] 57 | impl BBox { [INFO] [stdout] | --------- method in this implementation [INFO] [stdout] ... [INFO] [stdout] 62 | fn length(&self) -> f64 { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `max` is never read [INFO] [stdout] --> src/zuzu.rs:159:5 [INFO] [stdout] | [INFO] [stdout] 157 | struct Poset { [INFO] [stdout] | ----- field in this struct [INFO] [stdout] 158 | min: Vec, [INFO] [stdout] 159 | max: Vec, [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `shrink_poset` is never used [INFO] [stdout] --> src/zuzu.rs:280:4 [INFO] [stdout] | [INFO] [stdout] 163 | impl Poset { [INFO] [stdout] | ---------- method in this implementation [INFO] [stdout] ... [INFO] [stdout] 280 | fn shrink_poset(&self, x: &[TT]) { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `chain_fn` is never used [INFO] [stdout] --> src/zuzu.rs:340:4 [INFO] [stdout] | [INFO] [stdout] 340 | fn chain_fn(c: &[usize], x: &[TT], _dt: &mut[usize]) { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `check_iterator` is never used [INFO] [stdout] --> src/zuzu.rs:424:4 [INFO] [stdout] | [INFO] [stdout] 424 | fn check_iterator(x: &[TT]) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `zuzu` is never used [INFO] [stdout] --> src/zuzu.rs:502:4 [INFO] [stdout] | [INFO] [stdout] 502 | fn zuzu(x: &[TT]) -> bool { [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/zuzu.rs:53:9 [INFO] [stdout] | [INFO] [stdout] 53 | return None [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] = note: `#[warn(clippy::needless_return)]` on by default [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 53 - return None [INFO] [stdout] 53 + None [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/zuzu.rs:108:5 [INFO] [stdout] | [INFO] [stdout] 108 | return y1 - x1 + 1 [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] 108 - return y1 - x1 + 1 [INFO] [stdout] 108 + y1 - x1 + 1 [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/zuzu.rs:112:13 [INFO] [stdout] | [INFO] [stdout] 112 | assert!(attr.len() > 0); [INFO] [stdout] | ^^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!attr.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stdout] = note: `#[warn(clippy::len_zero)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `i` is used to index `attr` [INFO] [stdout] --> src/zuzu.rs:114:14 [INFO] [stdout] | [INFO] [stdout] 114 | for i in 0.. attr.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] 114 - for i in 0.. attr.len() { [INFO] [stdout] 114 + for (i, ) in attr.iter().enumerate() { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: consider using `sort_by_key` [INFO] [stdout] --> src/zuzu.rs:118:5 [INFO] [stdout] | [INFO] [stdout] 118 | acc.sort_by(|&(l1,_i1),&(l2,_i2)| l1.cmp(&l2)); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_sort_by [INFO] [stdout] = note: `#[warn(clippy::unnecessary_sort_by)]` on by default [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 118 - acc.sort_by(|&(l1,_i1),&(l2,_i2)| l1.cmp(&l2)); [INFO] [stdout] 118 + acc.sort_by_key(|&(l1,_i1)| l1); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `width` and `dist` are never used [INFO] [stdout] --> src/dump_svg.rs:60:8 [INFO] [stdout] | [INFO] [stdout] 59 | impl BBox { [INFO] [stdout] | --------- methods in this implementation [INFO] [stdout] 60 | fn width(&self) -> f64 { [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 64 | fn dist(&self, other: &BBox) -> f64 { [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `text`, `font_name`, and `font_size` are never read [INFO] [stdout] --> src/dump_svg.rs:77:5 [INFO] [stdout] | [INFO] [stdout] 76 | struct TT { [INFO] [stdout] | -- fields in this struct [INFO] [stdout] 77 | text: String, [INFO] [stdout] | ^^^^ [INFO] [stdout] 78 | b_box: BBox, [INFO] [stdout] 79 | font_name: String, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] 80 | font_size: f64 [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `TT` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `merge_boxes` is never used [INFO] [stdout] --> src/dump_svg.rs:135:4 [INFO] [stdout] | [INFO] [stdout] 135 | fn merge_boxes<'a, I: Iterator>(mut boxes: I) -> BBox { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `Node` is never constructed [INFO] [stdout] --> src/dump_svg.rs:150:8 [INFO] [stdout] | [INFO] [stdout] 150 | struct Node { [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `Poset` is never constructed [INFO] [stdout] --> src/dump_svg.rs:155:8 [INFO] [stdout] | [INFO] [stdout] 155 | struct Poset { [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `create_poset`, `extend_chain`, and `chain_iter` are never used [INFO] [stdout] --> src/dump_svg.rs:161:4 [INFO] [stdout] | [INFO] [stdout] 160 | impl Poset { [INFO] [stdout] | ---------- associated items in this implementation [INFO] [stdout] 161 | fn create_poset(x: &[TT]) -> Poset { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 187 | fn extend_chain(&self, chain: &mut Vec, from: usize) { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 198 | fn chain_iter<'a>(&'a self) -> ChainIterator<'a> { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `ChainIterator` is never constructed [INFO] [stdout] --> src/dump_svg.rs:204:8 [INFO] [stdout] | [INFO] [stdout] 204 | struct ChainIterator<'a> { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `split_by_font` is never used [INFO] [stdout] --> src/dump_svg.rs:281:4 [INFO] [stdout] | [INFO] [stdout] 281 | fn split_by_font<'a>(x: &[TT], c: &'a[usize]) -> Vec<&'a[usize]> { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `split_by_distance` is never used [INFO] [stdout] --> src/dump_svg.rs:299:4 [INFO] [stdout] | [INFO] [stdout] 299 | fn split_by_distance<'a>(x: &[TT], c: &'a[usize]) -> Vec<&'a[usize]> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `merge_tt` is never used [INFO] [stdout] --> src/dump_svg.rs:320:4 [INFO] [stdout] | [INFO] [stdout] 320 | fn merge_tt(t: &[TT], c: &[usize]) -> TT { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `is_succ` is never used [INFO] [stdout] --> src/dump_svg.rs:354:4 [INFO] [stdout] | [INFO] [stdout] 354 | fn is_succ(t: &[TT], x1: &TT, x2: &TT) -> bool { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `is_pred` is never used [INFO] [stdout] --> src/dump_svg.rs:366:4 [INFO] [stdout] | [INFO] [stdout] 366 | fn is_pred(t: &[TT], x1: &TT, x2: &TT) -> bool { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/zuzu.rs:134:5 [INFO] [stdout] | [INFO] [stdout] 134 | return BBox{left, top, right, bottom} [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] 134 - return BBox{left, top, right, bottom} [INFO] [stdout] 134 + BBox{left, top, right, bottom} [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/zuzu.rs:123:13 [INFO] [stdout] | [INFO] [stdout] 123 | assert!(p.len() > 0); [INFO] [stdout] | ^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!p.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `i` is only used to index `p` [INFO] [stdout] --> src/zuzu.rs:128:14 [INFO] [stdout] | [INFO] [stdout] 128 | for i in 1..p.len() { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stdout] help: consider using an iterator [INFO] [stdout] | [INFO] [stdout] 128 - for i in 1..p.len() { [INFO] [stdout] 128 + for in p.iter().skip(1) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/zuzu.rs:149:5 [INFO] [stdout] | [INFO] [stdout] 149 | return BBox{left,top,right,bottom} [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] 149 - return BBox{left,top,right,bottom} [INFO] [stdout] 149 + BBox{left,top,right,bottom} [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/dump_svg.rs:55:9 [INFO] [stdout] | [INFO] [stdout] 55 | return None [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] = note: `#[warn(clippy::needless_return)]` on by default [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 55 - return None [INFO] [stdout] 55 + None [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/dump_svg.rs:106:5 [INFO] [stdout] | [INFO] [stdout] 106 | return y1 - x1 + 1 [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] 106 - return y1 - x1 + 1 [INFO] [stdout] 106 + y1 - x1 + 1 [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/dump_svg.rs:110:13 [INFO] [stdout] | [INFO] [stdout] 110 | assert!(attr.len() > 0); [INFO] [stdout] | ^^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!attr.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stdout] = note: `#[warn(clippy::len_zero)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `i` is used to index `attr` [INFO] [stdout] --> src/dump_svg.rs:112:14 [INFO] [stdout] | [INFO] [stdout] 112 | for i in 0.. attr.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] 112 - for i in 0.. attr.len() { [INFO] [stdout] 112 + for (i, ) in attr.iter().enumerate() { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: consider using `sort_by_key` [INFO] [stdout] --> src/dump_svg.rs:116:5 [INFO] [stdout] | [INFO] [stdout] 116 | acc.sort_by(|&(l1,_i1),&(l2,_i2)| l1.cmp(&l2)); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_sort_by [INFO] [stdout] = note: `#[warn(clippy::unnecessary_sort_by)]` on by default [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 116 - acc.sort_by(|&(l1,_i1),&(l2,_i2)| l1.cmp(&l2)); [INFO] [stdout] 116 + acc.sort_by_key(|&(l1,_i1)| l1); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/dump_svg.rs:132:5 [INFO] [stdout] | [INFO] [stdout] 132 | return BBox{left, top, right, bottom} [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] 132 - return BBox{left, top, right, bottom} [INFO] [stdout] 132 + BBox{left, top, right, bottom} [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/dump_svg.rs:121:13 [INFO] [stdout] | [INFO] [stdout] 121 | assert!(p.len() > 0); [INFO] [stdout] | ^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!p.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `i` is only used to index `p` [INFO] [stdout] --> src/dump_svg.rs:126:14 [INFO] [stdout] | [INFO] [stdout] 126 | for i in 1..p.len() { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stdout] help: consider using an iterator [INFO] [stdout] | [INFO] [stdout] 126 - for i in 1..p.len() { [INFO] [stdout] 126 + for in p.iter().skip(1) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: slow zero-filling initialization [INFO] [stdout] --> src/zuzu.rs:281:18 [INFO] [stdout] | [INFO] [stdout] 281 | let mut dt = Vec::new(); dt.resize(self.elt.len(), 0); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider replacing this with: `vec![0; self.elt.len()]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#slow_vector_initialization [INFO] [stdout] = note: `#[warn(clippy::slow_vector_initialization)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `i` is used to index `elt` [INFO] [stdout] --> src/zuzu.rs:283:14 [INFO] [stdout] | [INFO] [stdout] 283 | for i in 0 .. elt.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] 283 - for i in 0 .. elt.len() { [INFO] [stdout] 283 + for (i, ) in elt.iter().enumerate() { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/dump_svg.rs:147:5 [INFO] [stdout] | [INFO] [stdout] 147 | return BBox{left,top,right,bottom} [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] 147 - return BBox{left,top,right,bottom} [INFO] [stdout] 147 + BBox{left,top,right,bottom} [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/zuzu.rs:371:12 [INFO] [stdout] | [INFO] [stdout] 371 | if (preds == 0 && succs == 0) || (preds > 1 && succs == 0) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [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] help: try [INFO] [stdout] | [INFO] [stdout] 371 - if (preds == 0 && succs == 0) || (preds > 1 && succs == 0) { [INFO] [stdout] 371 + if !(succs != 0 || preds != 0 && preds <= 1) { [INFO] [stdout] | [INFO] [stdout] 371 - if (preds == 0 && succs == 0) || (preds > 1 && succs == 0) { [INFO] [stdout] 371 + if (preds > 1 || preds == 0) && succs == 0 { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/zuzu.rs:377:17 [INFO] [stdout] | [INFO] [stdout] 377 | else if (preds == 0 && succs == 1) || (preds > 1 && succs == 1) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 377 - else if (preds == 0 && succs == 1) || (preds > 1 && succs == 1) { [INFO] [stdout] 377 + else if !(succs != 1 || preds != 0 && preds <= 1) { [INFO] [stdout] | [INFO] [stdout] 377 - else if (preds == 0 && succs == 1) || (preds > 1 && succs == 1) { [INFO] [stdout] 377 + else if (preds > 1 || preds == 0) && succs == 1 { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/zuzu.rs:384:17 [INFO] [stdout] | [INFO] [stdout] 384 | else if (preds == 0 && succs > 1) || (preds > 1 && succs > 1) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 384 - else if (preds == 0 && succs > 1) || (preds > 1 && succs > 1) { [INFO] [stdout] 384 + else if !(succs <= 1 || preds != 0 && preds <= 1) { [INFO] [stdout] | [INFO] [stdout] 384 - else if (preds == 0 && succs > 1) || (preds > 1 && succs > 1) { [INFO] [stdout] 384 + else if (preds > 1 || preds == 0) && succs > 1 { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/dump_svg.rs:227:12 [INFO] [stdout] | [INFO] [stdout] 227 | if (preds == 0 && succs == 0) || (preds > 1 && succs == 0) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [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] help: try [INFO] [stdout] | [INFO] [stdout] 227 - if (preds == 0 && succs == 0) || (preds > 1 && succs == 0) { [INFO] [stdout] 227 + if !(succs != 0 || preds != 0 && preds <= 1) { [INFO] [stdout] | [INFO] [stdout] 227 - if (preds == 0 && succs == 0) || (preds > 1 && succs == 0) { [INFO] [stdout] 227 + if (preds > 1 || preds == 0) && succs == 0 { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/dump_svg.rs:233:17 [INFO] [stdout] | [INFO] [stdout] 233 | else if (preds == 0 && succs == 1) || (preds > 1 && succs == 1) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 233 - else if (preds == 0 && succs == 1) || (preds > 1 && succs == 1) { [INFO] [stdout] 233 + else if !(succs != 1 || preds != 0 && preds <= 1) { [INFO] [stdout] | [INFO] [stdout] 233 - else if (preds == 0 && succs == 1) || (preds > 1 && succs == 1) { [INFO] [stdout] 233 + else if (preds > 1 || preds == 0) && succs == 1 { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/dump_svg.rs:240:17 [INFO] [stdout] | [INFO] [stdout] 240 | else if (preds == 0 && succs > 1) || (preds > 1 && succs > 1) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 240 - else if (preds == 0 && succs > 1) || (preds > 1 && succs > 1) { [INFO] [stdout] 240 + else if !(succs <= 1 || preds != 0 && preds <= 1) { [INFO] [stdout] | [INFO] [stdout] 240 - else if (preds == 0 && succs > 1) || (preds > 1 && succs > 1) { [INFO] [stdout] 240 + else if (preds > 1 || preds == 0) && succs > 1 { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: match can be simplified with `.unwrap_or_default()` [INFO] [stdout] --> src/zuzu.rs:405:21 [INFO] [stdout] | [INFO] [stdout] 405 | let n = match self.chld {None => 0, Some(x) => x}; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self.chld.unwrap_or_default()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_unwrap_or_default [INFO] [stdout] = note: `#[warn(clippy::manual_unwrap_or_default)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: match can be simplified with `.unwrap_or_default()` [INFO] [stdout] --> src/dump_svg.rs:261:21 [INFO] [stdout] | [INFO] [stdout] 261 | let n = match self.chld {None => 0, Some(x) => x}; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self.chld.unwrap_or_default()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_unwrap_or_default [INFO] [stdout] = note: `#[warn(clippy::manual_unwrap_or_default)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/dump_svg.rs:282:13 [INFO] [stdout] | [INFO] [stdout] 282 | assert!(c.len() > 0); [INFO] [stdout] | ^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!c.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: slow zero-filling initialization [INFO] [stdout] --> src/zuzu.rs:427:18 [INFO] [stdout] | [INFO] [stdout] 427 | let mut dt = Vec::new(); dt.resize(p.elt.len(), 0); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider replacing this with: `vec![0; p.elt.len()]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#slow_vector_initialization [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `i` is only used to index `dt` [INFO] [stdout] --> src/zuzu.rs:433:14 [INFO] [stdout] | [INFO] [stdout] 433 | for i in 0 .. dt.len() { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stdout] help: consider using an iterator [INFO] [stdout] | [INFO] [stdout] 433 - for i in 0 .. dt.len() { [INFO] [stdout] 433 + for in &dt { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/zuzu.rs:441:13 [INFO] [stdout] | [INFO] [stdout] 441 | assert!(c.len() > 0); [INFO] [stdout] | ^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!c.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `run` is never used [INFO] [stdout] --> src/ginger.rs:84:4 [INFO] [stdout] | [INFO] [stdout] 84 | fn run(filename: &str) -> Result<(), glib::error::Error> { [INFO] [stdout] | ^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `Author` is never constructed [INFO] [stdout] --> src/item.rs:4:12 [INFO] [stdout] | [INFO] [stdout] 4 | pub struct Author { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enum `GlobalId` is never used [INFO] [stdout] --> src/item.rs:10:10 [INFO] [stdout] | [INFO] [stdout] 10 | pub enum GlobalId { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/dump_svg.rs:363:5 [INFO] [stdout] | [INFO] [stdout] 363 | 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] 363 - return true [INFO] [stdout] 363 + true [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `Item` is never constructed [INFO] [stdout] --> src/item.rs:19:12 [INFO] [stdout] | [INFO] [stdout] 19 | pub struct Item { [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: static `ITEM_TYPES` is never used [INFO] [stdout] --> src/item.rs:35:8 [INFO] [stdout] | [INFO] [stdout] 35 | static ITEM_TYPES: [(ItemType,&str); 4] = [(ItemType::Unknown, "unknown: "), (ItemType::Named, "named: "), [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `item_type` is never used [INFO] [stdout] --> src/item.rs:38:8 [INFO] [stdout] | [INFO] [stdout] 38 | pub fn item_type(s: &str) -> Option<(&ItemType,&str)> { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `i` is only used to index `t` [INFO] [stdout] --> src/dump_svg.rs:358:14 [INFO] [stdout] | [INFO] [stdout] 358 | for i in 0 .. t.len() { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stdout] help: consider using an iterator [INFO] [stdout] | [INFO] [stdout] 358 - for i in 0 .. t.len() { [INFO] [stdout] 358 + for in &t { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: name `DOI` contains a capitalized acronym [INFO] [stdout] --> src/item.rs:11:5 [INFO] [stdout] | [INFO] [stdout] 11 | DOI(String), [INFO] [stdout] | ^^^ help: consider making the acronym lowercase, except the initial letter (notice the capitalization): `Doi` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#upper_case_acronyms [INFO] [stdout] = note: `#[warn(clippy::upper_case_acronyms)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: name `ISBN` contains a capitalized acronym [INFO] [stdout] --> src/item.rs:12:5 [INFO] [stdout] | [INFO] [stdout] 12 | ISBN(String), [INFO] [stdout] | ^^^^ help: consider making the acronym lowercase, except the initial letter: `Isbn` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#upper_case_acronyms [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: name `ARXIV` contains a capitalized acronym [INFO] [stdout] --> src/item.rs:13:5 [INFO] [stdout] | [INFO] [stdout] 13 | ARXIV(String), [INFO] [stdout] | ^^^^^ help: consider making the acronym lowercase, except the initial letter: `Arxiv` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#upper_case_acronyms [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: name `CITEER` contains a capitalized acronym [INFO] [stdout] --> src/item.rs:14:5 [INFO] [stdout] | [INFO] [stdout] 14 | CITEER(String), [INFO] [stdout] | ^^^^^^ help: consider making the acronym lowercase, except the initial letter: `Citeer` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#upper_case_acronyms [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: name `HAL` contains a capitalized acronym [INFO] [stdout] --> src/item.rs:15:5 [INFO] [stdout] | [INFO] [stdout] 15 | HAL(String), [INFO] [stdout] | ^^^ help: consider making the acronym lowercase, except the initial letter: `Hal` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#upper_case_acronyms [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/item.rs:44:5 [INFO] [stdout] | [INFO] [stdout] 44 | return None [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] = note: `#[warn(clippy::needless_return)]` on by default [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 44 - return None [INFO] [stdout] 44 + None [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: dereferencing a tuple pattern where every element takes a reference [INFO] [stdout] --> src/item.rs:39:9 [INFO] [stdout] | [INFO] [stdout] 39 | for &(ref i, ref m) in ITEM_TYPES.iter() { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrowed_reference [INFO] [stdout] = note: `#[warn(clippy::needless_borrowed_reference)]` on by default [INFO] [stdout] help: try removing the `&` and `ref` parts [INFO] [stdout] | [INFO] [stdout] 39 - for &(ref i, ref m) in ITEM_TYPES.iter() { [INFO] [stdout] 39 + for (i, m) in ITEM_TYPES.iter() { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: stripping a prefix manually [INFO] [stdout] --> src/item.rs:41:29 [INFO] [stdout] | [INFO] [stdout] 41 | return Some((i, &s[m.len()..])) [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] note: the prefix was tested here [INFO] [stdout] --> src/item.rs:40:9 [INFO] [stdout] | [INFO] [stdout] 40 | if s.starts_with(m) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_strip [INFO] [stdout] = note: `#[warn(clippy::manual_strip)]` on by default [INFO] [stdout] help: try using the `strip_prefix` method [INFO] [stdout] | [INFO] [stdout] 40 ~ if let Some() = s.strip_prefix(m) { [INFO] [stdout] 41 ~ return Some((i, )) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> src/ginger.rs:15:16 [INFO] [stdout] | [INFO] [stdout] 15 | fn max_font(v: &Vec) -> (f64, usize, usize) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] = note: `#[warn(clippy::ptr_arg)]` on by default [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 15 - fn max_font(v: &Vec) -> (f64, usize, usize) { [INFO] [stdout] 15 + fn max_font(v: &[poppler::TextAttr]) -> (f64, usize, usize) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/ginger.rs:16:13 [INFO] [stdout] | [INFO] [stdout] 16 | assert!(v.len() > 0); [INFO] [stdout] | ^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!v.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stdout] = note: `#[warn(clippy::len_zero)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> src/ginger.rs:21:33 [INFO] [stdout] | [INFO] [stdout] 21 | fn validate_page(s: &str, attr: &Vec, layout: &Vec) -> [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 21 - fn validate_page(s: &str, attr: &Vec, layout: &Vec) -> [INFO] [stdout] 21 + fn validate_page(s: &str, attr: &[poppler::TextAttr], layout: &Vec) -> [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> src/ginger.rs:21:66 [INFO] [stdout] | [INFO] [stdout] 21 | fn validate_page(s: &str, attr: &Vec, layout: &Vec) -> [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 21 - fn validate_page(s: &str, attr: &Vec, layout: &Vec) -> [INFO] [stdout] 21 + fn validate_page(s: &str, attr: &Vec, layout: &[poppler::ffi::PopplerRectangle]) -> [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `.iter().count()` on a `Vec` [INFO] [stdout] --> src/zuzu.rs:498:24 [INFO] [stdout] | [INFO] [stdout] 498 | println!(">>> {}", p2.min.iter().count()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ help: try: `p2.min.len()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#iter_count [INFO] [stdout] = note: `#[warn(clippy::iter_count)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/zuzu.rs:546:5 [INFO] [stdout] | [INFO] [stdout] 546 | 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] 546 - return true [INFO] [stdout] 546 + true [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `i` is only used to index `x` [INFO] [stdout] --> src/zuzu.rs:505:14 [INFO] [stdout] | [INFO] [stdout] 505 | for i in 0 .. x.len() { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stdout] help: consider using an iterator [INFO] [stdout] | [INFO] [stdout] 505 - for i in 0 .. x.len() { [INFO] [stdout] 505 + for in &x { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `i` is only used to index `r` [INFO] [stdout] --> src/zuzu.rs:511:14 [INFO] [stdout] | [INFO] [stdout] 511 | for i in 0 .. r.len() { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stdout] help: consider using an iterator [INFO] [stdout] | [INFO] [stdout] 511 - for i in 0 .. r.len() { [INFO] [stdout] 511 + for in &r { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/zuzu.rs:523:29 [INFO] [stdout] | [INFO] [stdout] 523 | if !is_succ(&x, &x[j], &x[k]) { [INFO] [stdout] | ^^ help: change this to: `x` [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: the variable `char_cnt` is used as a loop counter [INFO] [stdout] --> src/dump_svg.rs:382:5 [INFO] [stdout] | [INFO] [stdout] 382 | for (i,c) in text.char_indices() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using: `for (char_cnt, (i,c)) in text.char_indices().enumerate()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_counter_loop [INFO] [stdout] = note: `#[warn(clippy::explicit_counter_loop)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `x1` is only used to index `cl` [INFO] [stdout] --> src/zuzu.rs:538:19 [INFO] [stdout] | [INFO] [stdout] 538 | for x1 in 0 .. cl.len() { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stdout] help: consider using an iterator [INFO] [stdout] | [INFO] [stdout] 538 - for x1 in 0 .. cl.len() { [INFO] [stdout] 538 + for in &cl { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/zuzu.rs:287:17 [INFO] [stdout] | [INFO] [stdout] 287 | let mut chain = vec![i]; [INFO] [stdout] | ----^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/zuzu.rs:542:12 [INFO] [stdout] | [INFO] [stdout] 542 | if cl.len() > 0 { [INFO] [stdout] | ^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!cl.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/zuzu.rs:624:5 [INFO] [stdout] | [INFO] [stdout] 624 | 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] 624 - return true [INFO] [stdout] 624 + true [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `i` is only used to index `t` [INFO] [stdout] --> src/zuzu.rs:619:14 [INFO] [stdout] | [INFO] [stdout] 619 | for i in 0 .. t.len() { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stdout] help: consider using an iterator [INFO] [stdout] | [INFO] [stdout] 619 - for i in 0 .. t.len() { [INFO] [stdout] 619 + for in &t { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the variable `char_cnt` is used as a loop counter [INFO] [stdout] --> src/zuzu.rs:643:5 [INFO] [stdout] | [INFO] [stdout] 643 | for (i,c) in text.char_indices() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using: `for (char_cnt, (i,c)) in text.char_indices().enumerate()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_counter_loop [INFO] [stdout] = note: `#[warn(clippy::explicit_counter_loop)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `vec!` [INFO] [stdout] --> src/zuzu.rs:296:22 [INFO] [stdout] | [INFO] [stdout] 296 | chain_fn(&vec![i], x, &mut dt); [INFO] [stdout] | ^^^^^^^^ help: you can use a slice directly: `&[i]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_vec [INFO] [stdout] = note: `#[warn(clippy::useless_vec)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `vec!` [INFO] [stdout] --> src/zuzu.rs:314:22 [INFO] [stdout] | [INFO] [stdout] 314 | chain_fn(&vec![i], x, &mut dt); [INFO] [stdout] | ^^^^^^^^ help: you can use a slice directly: `&[i]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_vec [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `vec!` [INFO] [stdout] --> src/zuzu.rs:322:22 [INFO] [stdout] | [INFO] [stdout] 322 | chain_fn(&vec![i], x, &mut dt); [INFO] [stdout] | ^^^^^^^^ help: you can use a slice directly: `&[i]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_vec [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `get_authors` is never used [INFO] [stdout] --> src/named.rs:9:4 [INFO] [stdout] | [INFO] [stdout] 9 | fn get_authors(s: &str) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `skip(..).next()` on an iterator [INFO] [stdout] --> src/walk_files.rs:6:32 [INFO] [stdout] | [INFO] [stdout] 6 | let name = std::env::args().skip(1).next().unwrap(); [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: use `nth` instead: `.nth(1)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#iter_skip_next [INFO] [stdout] = note: `#[warn(clippy::iter_skip_next)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `get_publisher` is never used [INFO] [stdout] --> src/named.rs:24:4 [INFO] [stdout] | [INFO] [stdout] 24 | fn get_publisher(_s: &str) -> (Option,Option) { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `get_item` is never used [INFO] [stdout] --> src/named.rs:28:4 [INFO] [stdout] | [INFO] [stdout] 28 | fn get_item(s: &str) -> Option{ [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `named` is never used [INFO] [stdout] --> src/named.rs:43:4 [INFO] [stdout] | [INFO] [stdout] 43 | fn named(fname: &str) { [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `Author` is never constructed [INFO] [stdout] --> src/item.rs:4:12 [INFO] [stdout] | [INFO] [stdout] 4 | pub struct Author { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enum `GlobalId` is never used [INFO] [stdout] --> src/item.rs:10:10 [INFO] [stdout] | [INFO] [stdout] 10 | pub enum GlobalId { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `Item` is never constructed [INFO] [stdout] --> src/item.rs:19:12 [INFO] [stdout] | [INFO] [stdout] 19 | pub struct Item { [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: name `DOI` contains a capitalized acronym [INFO] [stdout] --> src/item.rs:11:5 [INFO] [stdout] | [INFO] [stdout] 11 | DOI(String), [INFO] [stdout] | ^^^ help: consider making the acronym lowercase, except the initial letter (notice the capitalization): `Doi` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#upper_case_acronyms [INFO] [stdout] = note: `#[warn(clippy::upper_case_acronyms)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: name `ISBN` contains a capitalized acronym [INFO] [stdout] --> src/item.rs:12:5 [INFO] [stdout] | [INFO] [stdout] 12 | ISBN(String), [INFO] [stdout] | ^^^^ help: consider making the acronym lowercase, except the initial letter: `Isbn` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#upper_case_acronyms [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: name `ARXIV` contains a capitalized acronym [INFO] [stdout] --> src/item.rs:13:5 [INFO] [stdout] | [INFO] [stdout] 13 | ARXIV(String), [INFO] [stdout] | ^^^^^ help: consider making the acronym lowercase, except the initial letter: `Arxiv` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#upper_case_acronyms [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: name `CITEER` contains a capitalized acronym [INFO] [stdout] --> src/item.rs:14:5 [INFO] [stdout] | [INFO] [stdout] 14 | CITEER(String), [INFO] [stdout] | ^^^^^^ help: consider making the acronym lowercase, except the initial letter: `Citeer` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#upper_case_acronyms [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: name `HAL` contains a capitalized acronym [INFO] [stdout] --> src/item.rs:15:5 [INFO] [stdout] | [INFO] [stdout] 15 | HAL(String), [INFO] [stdout] | ^^^ help: consider making the acronym lowercase, except the initial letter: `Hal` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#upper_case_acronyms [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/item.rs:44:5 [INFO] [stdout] | [INFO] [stdout] 44 | return None [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] = note: `#[warn(clippy::needless_return)]` on by default [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 44 - return None [INFO] [stdout] 44 + None [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `length` is never used [INFO] [stdout] --> src/zuzu.rs:62:8 [INFO] [stdout] | [INFO] [stdout] 57 | impl BBox { [INFO] [stdout] | --------- method in this implementation [INFO] [stdout] ... [INFO] [stdout] 62 | fn length(&self) -> f64 { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `max` is never read [INFO] [stdout] --> src/zuzu.rs:159:5 [INFO] [stdout] | [INFO] [stdout] 157 | struct Poset { [INFO] [stdout] | ----- field in this struct [INFO] [stdout] 158 | min: Vec, [INFO] [stdout] 159 | max: Vec, [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `shrink_poset` is never used [INFO] [stdout] --> src/zuzu.rs:280:4 [INFO] [stdout] | [INFO] [stdout] 163 | impl Poset { [INFO] [stdout] | ---------- method in this implementation [INFO] [stdout] ... [INFO] [stdout] 280 | fn shrink_poset(&self, x: &[TT]) { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `chain_fn` is never used [INFO] [stdout] --> src/zuzu.rs:340:4 [INFO] [stdout] | [INFO] [stdout] 340 | fn chain_fn(c: &[usize], x: &[TT], _dt: &mut[usize]) { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `check_iterator` is never used [INFO] [stdout] --> src/zuzu.rs:424:4 [INFO] [stdout] | [INFO] [stdout] 424 | fn check_iterator(x: &[TT]) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `zuzu` is never used [INFO] [stdout] --> src/zuzu.rs:502:4 [INFO] [stdout] | [INFO] [stdout] 502 | fn zuzu(x: &[TT]) -> bool { [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/zuzu.rs:53:9 [INFO] [stdout] | [INFO] [stdout] 53 | return None [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] = note: `#[warn(clippy::needless_return)]` on by default [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 53 - return None [INFO] [stdout] 53 + None [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/zuzu.rs:108:5 [INFO] [stdout] | [INFO] [stdout] 108 | return y1 - x1 + 1 [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] 108 - return y1 - x1 + 1 [INFO] [stdout] 108 + y1 - x1 + 1 [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/zuzu.rs:112:13 [INFO] [stdout] | [INFO] [stdout] 112 | assert!(attr.len() > 0); [INFO] [stdout] | ^^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!attr.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stdout] = note: `#[warn(clippy::len_zero)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `i` is used to index `attr` [INFO] [stdout] --> src/zuzu.rs:114:14 [INFO] [stdout] | [INFO] [stdout] 114 | for i in 0.. attr.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] 114 - for i in 0.. attr.len() { [INFO] [stdout] 114 + for (i, ) in attr.iter().enumerate() { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: consider using `sort_by_key` [INFO] [stdout] --> src/zuzu.rs:118:5 [INFO] [stdout] | [INFO] [stdout] 118 | acc.sort_by(|&(l1,_i1),&(l2,_i2)| l1.cmp(&l2)); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_sort_by [INFO] [stdout] = note: `#[warn(clippy::unnecessary_sort_by)]` on by default [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 118 - acc.sort_by(|&(l1,_i1),&(l2,_i2)| l1.cmp(&l2)); [INFO] [stdout] 118 + acc.sort_by_key(|&(l1,_i1)| l1); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/zuzu.rs:134:5 [INFO] [stdout] | [INFO] [stdout] 134 | return BBox{left, top, right, bottom} [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] 134 - return BBox{left, top, right, bottom} [INFO] [stdout] 134 + BBox{left, top, right, bottom} [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/zuzu.rs:123:13 [INFO] [stdout] | [INFO] [stdout] 123 | assert!(p.len() > 0); [INFO] [stdout] | ^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!p.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `i` is only used to index `p` [INFO] [stdout] --> src/zuzu.rs:128:14 [INFO] [stdout] | [INFO] [stdout] 128 | for i in 1..p.len() { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stdout] help: consider using an iterator [INFO] [stdout] | [INFO] [stdout] 128 - for i in 1..p.len() { [INFO] [stdout] 128 + for in p.iter().skip(1) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/zuzu.rs:149:5 [INFO] [stdout] | [INFO] [stdout] 149 | return BBox{left,top,right,bottom} [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] 149 - return BBox{left,top,right,bottom} [INFO] [stdout] 149 + BBox{left,top,right,bottom} [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: slow zero-filling initialization [INFO] [stdout] --> src/zuzu.rs:281:18 [INFO] [stdout] | [INFO] [stdout] 281 | let mut dt = Vec::new(); dt.resize(self.elt.len(), 0); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider replacing this with: `vec![0; self.elt.len()]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#slow_vector_initialization [INFO] [stdout] = note: `#[warn(clippy::slow_vector_initialization)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `i` is used to index `elt` [INFO] [stdout] --> src/zuzu.rs:283:14 [INFO] [stdout] | [INFO] [stdout] 283 | for i in 0 .. elt.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] 283 - for i in 0 .. elt.len() { [INFO] [stdout] 283 + for (i, ) in elt.iter().enumerate() { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/zuzu.rs:371:12 [INFO] [stdout] | [INFO] [stdout] 371 | if (preds == 0 && succs == 0) || (preds > 1 && succs == 0) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [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] help: try [INFO] [stdout] | [INFO] [stdout] 371 - if (preds == 0 && succs == 0) || (preds > 1 && succs == 0) { [INFO] [stdout] 371 + if !(succs != 0 || preds != 0 && preds <= 1) { [INFO] [stdout] | [INFO] [stdout] 371 - if (preds == 0 && succs == 0) || (preds > 1 && succs == 0) { [INFO] [stdout] 371 + if (preds > 1 || preds == 0) && succs == 0 { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/zuzu.rs:377:17 [INFO] [stdout] | [INFO] [stdout] 377 | else if (preds == 0 && succs == 1) || (preds > 1 && succs == 1) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 377 - else if (preds == 0 && succs == 1) || (preds > 1 && succs == 1) { [INFO] [stdout] 377 + else if !(succs != 1 || preds != 0 && preds <= 1) { [INFO] [stdout] | [INFO] [stdout] 377 - else if (preds == 0 && succs == 1) || (preds > 1 && succs == 1) { [INFO] [stdout] 377 + else if (preds > 1 || preds == 0) && succs == 1 { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/zuzu.rs:384:17 [INFO] [stdout] | [INFO] [stdout] 384 | else if (preds == 0 && succs > 1) || (preds > 1 && succs > 1) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 384 - else if (preds == 0 && succs > 1) || (preds > 1 && succs > 1) { [INFO] [stdout] 384 + else if !(succs <= 1 || preds != 0 && preds <= 1) { [INFO] [stdout] | [INFO] [stdout] 384 - else if (preds == 0 && succs > 1) || (preds > 1 && succs > 1) { [INFO] [stdout] 384 + else if (preds > 1 || preds == 0) && succs > 1 { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: match can be simplified with `.unwrap_or_default()` [INFO] [stdout] --> src/zuzu.rs:405:21 [INFO] [stdout] | [INFO] [stdout] 405 | let n = match self.chld {None => 0, Some(x) => x}; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self.chld.unwrap_or_default()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_unwrap_or_default [INFO] [stdout] = note: `#[warn(clippy::manual_unwrap_or_default)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: slow zero-filling initialization [INFO] [stdout] --> src/zuzu.rs:427:18 [INFO] [stdout] | [INFO] [stdout] 427 | let mut dt = Vec::new(); dt.resize(p.elt.len(), 0); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider replacing this with: `vec![0; p.elt.len()]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#slow_vector_initialization [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `i` is only used to index `dt` [INFO] [stdout] --> src/zuzu.rs:433:14 [INFO] [stdout] | [INFO] [stdout] 433 | for i in 0 .. dt.len() { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stdout] help: consider using an iterator [INFO] [stdout] | [INFO] [stdout] 433 - for i in 0 .. dt.len() { [INFO] [stdout] 433 + for in &dt { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/zuzu.rs:441:13 [INFO] [stdout] | [INFO] [stdout] 441 | assert!(c.len() > 0); [INFO] [stdout] | ^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!c.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: dereferencing a tuple pattern where every element takes a reference [INFO] [stdout] --> src/item.rs:39:9 [INFO] [stdout] | [INFO] [stdout] 39 | for &(ref i, ref m) in ITEM_TYPES.iter() { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrowed_reference [INFO] [stdout] = note: `#[warn(clippy::needless_borrowed_reference)]` on by default [INFO] [stdout] help: try removing the `&` and `ref` parts [INFO] [stdout] | [INFO] [stdout] 39 - for &(ref i, ref m) in ITEM_TYPES.iter() { [INFO] [stdout] 39 + for (i, m) in ITEM_TYPES.iter() { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: stripping a prefix manually [INFO] [stdout] --> src/item.rs:41:29 [INFO] [stdout] | [INFO] [stdout] 41 | return Some((i, &s[m.len()..])) [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] note: the prefix was tested here [INFO] [stdout] --> src/item.rs:40:9 [INFO] [stdout] | [INFO] [stdout] 40 | if s.starts_with(m) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_strip [INFO] [stdout] = note: `#[warn(clippy::manual_strip)]` on by default [INFO] [stdout] help: try using the `strip_prefix` method [INFO] [stdout] | [INFO] [stdout] 40 ~ if let Some() = s.strip_prefix(m) { [INFO] [stdout] 41 ~ return Some((i, )) [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/named.rs:72:9 [INFO] [stdout] | [INFO] [stdout] 72 | / match item::item_type(l) { [INFO] [stdout] 73 | | Some((&item::ItemType::Springer, x)) => println!("{}", x), [INFO] [stdout] 74 | | _ => () [INFO] [stdout] 75 | | } [INFO] [stdout] | |_________^ help: try: `if let Some((&item::ItemType::Springer, x)) = item::item_type(l) { println!("{}", x) }` [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] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/page_data.rs:35:5 [INFO] [stdout] | [INFO] [stdout] 35 | return y1 - x1 + 1 [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] 35 - return y1 - x1 + 1 [INFO] [stdout] 35 + y1 - x1 + 1 [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> src/springer.rs:12:33 [INFO] [stdout] | [INFO] [stdout] 12 | fn validate_page(s: &str, attr: &Vec, layout: &Vec) -> [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] = note: `#[warn(clippy::ptr_arg)]` on by default [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 12 - fn validate_page(s: &str, attr: &Vec, layout: &Vec) -> [INFO] [stdout] 12 + fn validate_page(s: &str, attr: &[poppler::TextAttr], layout: &Vec) -> [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> src/springer.rs:12:66 [INFO] [stdout] | [INFO] [stdout] 12 | fn validate_page(s: &str, attr: &Vec, layout: &Vec) -> [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 12 - fn validate_page(s: &str, attr: &Vec, layout: &Vec) -> [INFO] [stdout] 12 + fn validate_page(s: &str, attr: &Vec, layout: &[poppler::ffi::PopplerRectangle]) -> [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/springer.rs:39:5 [INFO] [stdout] | [INFO] [stdout] 39 | return (left, right, top, bottom) [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] 39 - return (left, right, top, bottom) [INFO] [stdout] 39 + (left, right, top, bottom) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/springer.rs:28:13 [INFO] [stdout] | [INFO] [stdout] 28 | assert!(p.len() > 0); [INFO] [stdout] | ^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!p.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stdout] = note: `#[warn(clippy::len_zero)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `i` is only used to index `p` [INFO] [stdout] --> src/springer.rs:33:14 [INFO] [stdout] | [INFO] [stdout] 33 | for i in 1..p.len() { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stdout] = note: `#[warn(clippy::needless_range_loop)]` on by default [INFO] [stdout] help: consider using an iterator [INFO] [stdout] | [INFO] [stdout] 33 - for i in 1..p.len() { [INFO] [stdout] 33 + for in p.iter().skip(1) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `width` and `dist` are never used [INFO] [stdout] --> src/dump_svg.rs:60:8 [INFO] [stdout] | [INFO] [stdout] 59 | impl BBox { [INFO] [stdout] | --------- methods in this implementation [INFO] [stdout] 60 | fn width(&self) -> f64 { [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 64 | fn dist(&self, other: &BBox) -> f64 { [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `text`, `font_name`, and `font_size` are never read [INFO] [stdout] --> src/dump_svg.rs:77:5 [INFO] [stdout] | [INFO] [stdout] 76 | struct TT { [INFO] [stdout] | -- fields in this struct [INFO] [stdout] 77 | text: String, [INFO] [stdout] | ^^^^ [INFO] [stdout] 78 | b_box: BBox, [INFO] [stdout] 79 | font_name: String, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] 80 | font_size: f64 [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `TT` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `merge_boxes` is never used [INFO] [stdout] --> src/dump_svg.rs:135:4 [INFO] [stdout] | [INFO] [stdout] 135 | fn merge_boxes<'a, I: Iterator>(mut boxes: I) -> BBox { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `Node` is never constructed [INFO] [stdout] --> src/dump_svg.rs:150:8 [INFO] [stdout] | [INFO] [stdout] 150 | struct Node { [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `Poset` is never constructed [INFO] [stdout] --> src/dump_svg.rs:155:8 [INFO] [stdout] | [INFO] [stdout] 155 | struct Poset { [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `create_poset`, `extend_chain`, and `chain_iter` are never used [INFO] [stdout] --> src/dump_svg.rs:161:4 [INFO] [stdout] | [INFO] [stdout] 160 | impl Poset { [INFO] [stdout] | ---------- associated items in this implementation [INFO] [stdout] 161 | fn create_poset(x: &[TT]) -> Poset { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 187 | fn extend_chain(&self, chain: &mut Vec, from: usize) { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 198 | fn chain_iter<'a>(&'a self) -> ChainIterator<'a> { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `ChainIterator` is never constructed [INFO] [stdout] --> src/dump_svg.rs:204:8 [INFO] [stdout] | [INFO] [stdout] 204 | struct ChainIterator<'a> { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `split_by_font` is never used [INFO] [stdout] --> src/dump_svg.rs:281:4 [INFO] [stdout] | [INFO] [stdout] 281 | fn split_by_font<'a>(x: &[TT], c: &'a[usize]) -> Vec<&'a[usize]> { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `split_by_distance` is never used [INFO] [stdout] --> src/dump_svg.rs:299:4 [INFO] [stdout] | [INFO] [stdout] 299 | fn split_by_distance<'a>(x: &[TT], c: &'a[usize]) -> Vec<&'a[usize]> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `merge_tt` is never used [INFO] [stdout] --> src/dump_svg.rs:320:4 [INFO] [stdout] | [INFO] [stdout] 320 | fn merge_tt(t: &[TT], c: &[usize]) -> TT { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `is_succ` is never used [INFO] [stdout] --> src/dump_svg.rs:354:4 [INFO] [stdout] | [INFO] [stdout] 354 | fn is_succ(t: &[TT], x1: &TT, x2: &TT) -> bool { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `is_pred` is never used [INFO] [stdout] --> src/dump_svg.rs:366:4 [INFO] [stdout] | [INFO] [stdout] 366 | fn is_pred(t: &[TT], x1: &TT, x2: &TT) -> bool { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/dump_svg.rs:55:9 [INFO] [stdout] | [INFO] [stdout] 55 | return None [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] = note: `#[warn(clippy::needless_return)]` on by default [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 55 - return None [INFO] [stdout] 55 + None [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/dump_svg.rs:106:5 [INFO] [stdout] | [INFO] [stdout] 106 | return y1 - x1 + 1 [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] 106 - return y1 - x1 + 1 [INFO] [stdout] 106 + y1 - x1 + 1 [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/dump_svg.rs:110:13 [INFO] [stdout] | [INFO] [stdout] 110 | assert!(attr.len() > 0); [INFO] [stdout] | ^^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!attr.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stdout] = note: `#[warn(clippy::len_zero)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `.iter().count()` on a `Vec` [INFO] [stdout] --> src/zuzu.rs:498:24 [INFO] [stdout] | [INFO] [stdout] 498 | println!(">>> {}", p2.min.iter().count()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ help: try: `p2.min.len()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#iter_count [INFO] [stdout] = note: `#[warn(clippy::iter_count)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `i` is used to index `attr` [INFO] [stdout] --> src/dump_svg.rs:112:14 [INFO] [stdout] | [INFO] [stdout] 112 | for i in 0.. attr.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] 112 - for i in 0.. attr.len() { [INFO] [stdout] 112 + for (i, ) in attr.iter().enumerate() { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/zuzu.rs:546:5 [INFO] [stdout] | [INFO] [stdout] 546 | 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] 546 - return true [INFO] [stdout] 546 + true [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `i` is only used to index `x` [INFO] [stdout] --> src/zuzu.rs:505:14 [INFO] [stdout] | [INFO] [stdout] 505 | for i in 0 .. x.len() { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stdout] help: consider using an iterator [INFO] [stdout] | [INFO] [stdout] 505 - for i in 0 .. x.len() { [INFO] [stdout] 505 + for in &x { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: consider using `sort_by_key` [INFO] [stdout] --> src/dump_svg.rs:116:5 [INFO] [stdout] | [INFO] [stdout] 116 | acc.sort_by(|&(l1,_i1),&(l2,_i2)| l1.cmp(&l2)); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_sort_by [INFO] [stdout] = note: `#[warn(clippy::unnecessary_sort_by)]` on by default [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 116 - acc.sort_by(|&(l1,_i1),&(l2,_i2)| l1.cmp(&l2)); [INFO] [stdout] 116 + acc.sort_by_key(|&(l1,_i1)| l1); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/dump_svg.rs:132:5 [INFO] [stdout] | [INFO] [stdout] 132 | return BBox{left, top, right, bottom} [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] 132 - return BBox{left, top, right, bottom} [INFO] [stdout] 132 + BBox{left, top, right, bottom} [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/dump_svg.rs:121:13 [INFO] [stdout] | [INFO] [stdout] 121 | assert!(p.len() > 0); [INFO] [stdout] | ^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!p.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `i` is only used to index `r` [INFO] [stdout] --> src/zuzu.rs:511:14 [INFO] [stdout] | [INFO] [stdout] 511 | for i in 0 .. r.len() { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stdout] help: consider using an iterator [INFO] [stdout] | [INFO] [stdout] 511 - for i in 0 .. r.len() { [INFO] [stdout] 511 + for in &r { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `i` is used to index `attr` [INFO] [stdout] --> src/page_data.rs:41:14 [INFO] [stdout] | [INFO] [stdout] 41 | for i in 0.. attr.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] 41 - for i in 0.. attr.len() { [INFO] [stdout] 41 + for (i, ) in attr.iter().enumerate() { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `i` is only used to index `p` [INFO] [stdout] --> src/dump_svg.rs:126:14 [INFO] [stdout] | [INFO] [stdout] 126 | for i in 1..p.len() { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stdout] help: consider using an iterator [INFO] [stdout] | [INFO] [stdout] 126 - for i in 1..p.len() { [INFO] [stdout] 126 + for in p.iter().skip(1) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: consider using `sort_by_key` [INFO] [stdout] --> src/page_data.rs:45:5 [INFO] [stdout] | [INFO] [stdout] 45 | acc.sort_by(|&(l1,_i1),&(l2,_i2)| l1.cmp(&l2)); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_sort_by [INFO] [stdout] = note: `#[warn(clippy::unnecessary_sort_by)]` on by default [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 45 - acc.sort_by(|&(l1,_i1),&(l2,_i2)| l1.cmp(&l2)); [INFO] [stdout] 45 + acc.sort_by_key(|&(l1,_i1)| l1); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/page_data.rs:61:5 [INFO] [stdout] | [INFO] [stdout] 61 | return (left, top, right, bottom) [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] 61 - return (left, top, right, bottom) [INFO] [stdout] 61 + (left, top, right, bottom) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/zuzu.rs:523:29 [INFO] [stdout] | [INFO] [stdout] 523 | if !is_succ(&x, &x[j], &x[k]) { [INFO] [stdout] | ^^ help: change this to: `x` [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: length comparison to zero [INFO] [stdout] --> src/page_data.rs:50:13 [INFO] [stdout] | [INFO] [stdout] 50 | assert!(p.len() > 0); [INFO] [stdout] | ^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!p.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stdout] = note: `#[warn(clippy::len_zero)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/dump_svg.rs:147:5 [INFO] [stdout] | [INFO] [stdout] 147 | return BBox{left,top,right,bottom} [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] 147 - return BBox{left,top,right,bottom} [INFO] [stdout] 147 + BBox{left,top,right,bottom} [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `i` is only used to index `p` [INFO] [stdout] --> src/page_data.rs:55:14 [INFO] [stdout] | [INFO] [stdout] 55 | for i in 1..p.len() { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stdout] help: consider using an iterator [INFO] [stdout] | [INFO] [stdout] 55 - for i in 1..p.len() { [INFO] [stdout] 55 + for in p.iter().skip(1) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `x1` is only used to index `cl` [INFO] [stdout] --> src/zuzu.rs:538:19 [INFO] [stdout] | [INFO] [stdout] 538 | for x1 in 0 .. cl.len() { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stdout] help: consider using an iterator [INFO] [stdout] | [INFO] [stdout] 538 - for x1 in 0 .. cl.len() { [INFO] [stdout] 538 + for in &cl { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/zuzu.rs:542:12 [INFO] [stdout] | [INFO] [stdout] 542 | if cl.len() > 0 { [INFO] [stdout] | ^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!cl.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/zuzu.rs:624:5 [INFO] [stdout] | [INFO] [stdout] 624 | 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] 624 - return true [INFO] [stdout] 624 + true [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `i` is only used to index `t` [INFO] [stdout] --> src/zuzu.rs:619:14 [INFO] [stdout] | [INFO] [stdout] 619 | for i in 0 .. t.len() { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stdout] help: consider using an iterator [INFO] [stdout] | [INFO] [stdout] 619 - for i in 0 .. t.len() { [INFO] [stdout] 619 + for in &t { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the variable `char_cnt` is used as a loop counter [INFO] [stdout] --> src/zuzu.rs:643:5 [INFO] [stdout] | [INFO] [stdout] 643 | for (i,c) in text.char_indices() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using: `for (char_cnt, (i,c)) in text.char_indices().enumerate()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_counter_loop [INFO] [stdout] = note: `#[warn(clippy::explicit_counter_loop)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: empty string literal in `println!` [INFO] [stdout] --> src/page_data.rs:75:5 [INFO] [stdout] | [INFO] [stdout] 75 | println!(""); [INFO] [stdout] | ^^^^^^^^^--^ [INFO] [stdout] | | [INFO] [stdout] | help: remove the empty string [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#println_empty_string [INFO] [stdout] = note: `#[warn(clippy::println_empty_string)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the variable `char_cnt` is used as a loop counter [INFO] [stdout] --> src/page_data.rs:82:5 [INFO] [stdout] | [INFO] [stdout] 82 | for (i,c) in text.char_indices() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using: `for (char_cnt, (i,c)) in text.char_indices().enumerate()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_counter_loop [INFO] [stdout] = note: `#[warn(clippy::explicit_counter_loop)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/dump_svg.rs:227:12 [INFO] [stdout] | [INFO] [stdout] 227 | if (preds == 0 && succs == 0) || (preds > 1 && succs == 0) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [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] help: try [INFO] [stdout] | [INFO] [stdout] 227 - if (preds == 0 && succs == 0) || (preds > 1 && succs == 0) { [INFO] [stdout] 227 + if !(succs != 0 || preds != 0 && preds <= 1) { [INFO] [stdout] | [INFO] [stdout] 227 - if (preds == 0 && succs == 0) || (preds > 1 && succs == 0) { [INFO] [stdout] 227 + if (preds > 1 || preds == 0) && succs == 0 { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/dump_svg.rs:233:17 [INFO] [stdout] | [INFO] [stdout] 233 | else if (preds == 0 && succs == 1) || (preds > 1 && succs == 1) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 233 - else if (preds == 0 && succs == 1) || (preds > 1 && succs == 1) { [INFO] [stdout] 233 + else if !(succs != 1 || preds != 0 && preds <= 1) { [INFO] [stdout] | [INFO] [stdout] 233 - else if (preds == 0 && succs == 1) || (preds > 1 && succs == 1) { [INFO] [stdout] 233 + else if (preds > 1 || preds == 0) && succs == 1 { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/dump_svg.rs:240:17 [INFO] [stdout] | [INFO] [stdout] 240 | else if (preds == 0 && succs > 1) || (preds > 1 && succs > 1) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 240 - else if (preds == 0 && succs > 1) || (preds > 1 && succs > 1) { [INFO] [stdout] 240 + else if !(succs <= 1 || preds != 0 && preds <= 1) { [INFO] [stdout] | [INFO] [stdout] 240 - else if (preds == 0 && succs > 1) || (preds > 1 && succs > 1) { [INFO] [stdout] 240 + else if (preds > 1 || preds == 0) && succs > 1 { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `vec!` [INFO] [stdout] --> src/zuzu.rs:296:22 [INFO] [stdout] | [INFO] [stdout] 296 | chain_fn(&vec![i], x, &mut dt); [INFO] [stdout] | ^^^^^^^^ help: you can use a slice directly: `&[i]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_vec [INFO] [stdout] = note: `#[warn(clippy::useless_vec)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `vec!` [INFO] [stdout] --> src/zuzu.rs:314:22 [INFO] [stdout] | [INFO] [stdout] 314 | chain_fn(&vec![i], x, &mut dt); [INFO] [stdout] | ^^^^^^^^ help: you can use a slice directly: `&[i]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_vec [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `vec!` [INFO] [stdout] --> src/zuzu.rs:322:22 [INFO] [stdout] | [INFO] [stdout] 322 | chain_fn(&vec![i], x, &mut dt); [INFO] [stdout] | ^^^^^^^^ help: you can use a slice directly: `&[i]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_vec [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: match can be simplified with `.unwrap_or_default()` [INFO] [stdout] --> src/dump_svg.rs:261:21 [INFO] [stdout] | [INFO] [stdout] 261 | let n = match self.chld {None => 0, Some(x) => x}; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self.chld.unwrap_or_default()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_unwrap_or_default [INFO] [stdout] = note: `#[warn(clippy::manual_unwrap_or_default)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/dump_svg.rs:282:13 [INFO] [stdout] | [INFO] [stdout] 282 | assert!(c.len() > 0); [INFO] [stdout] | ^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!c.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/dump_svg.rs:363:5 [INFO] [stdout] | [INFO] [stdout] 363 | 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] 363 - return true [INFO] [stdout] 363 + true [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `i` is only used to index `t` [INFO] [stdout] --> src/dump_svg.rs:358:14 [INFO] [stdout] | [INFO] [stdout] 358 | for i in 0 .. t.len() { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stdout] help: consider using an iterator [INFO] [stdout] | [INFO] [stdout] 358 - for i in 0 .. t.len() { [INFO] [stdout] 358 + for in &t { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the variable `char_cnt` is used as a loop counter [INFO] [stdout] --> src/dump_svg.rs:382:5 [INFO] [stdout] | [INFO] [stdout] 382 | for (i,c) in text.char_indices() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using: `for (char_cnt, (i,c)) in text.char_indices().enumerate()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_counter_loop [INFO] [stdout] = note: `#[warn(clippy::explicit_counter_loop)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `run` is never used [INFO] [stdout] --> src/ginger.rs:84:4 [INFO] [stdout] | [INFO] [stdout] 84 | fn run(filename: &str) -> Result<(), glib::error::Error> { [INFO] [stdout] | ^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `Author` is never constructed [INFO] [stdout] --> src/item.rs:4:12 [INFO] [stdout] | [INFO] [stdout] 4 | pub struct Author { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enum `GlobalId` is never used [INFO] [stdout] --> src/item.rs:10:10 [INFO] [stdout] | [INFO] [stdout] 10 | pub enum GlobalId { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `Item` is never constructed [INFO] [stdout] --> src/item.rs:19:12 [INFO] [stdout] | [INFO] [stdout] 19 | pub struct Item { [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: static `ITEM_TYPES` is never used [INFO] [stdout] --> src/item.rs:35:8 [INFO] [stdout] | [INFO] [stdout] 35 | static ITEM_TYPES: [(ItemType,&str); 4] = [(ItemType::Unknown, "unknown: "), (ItemType::Named, "named: "), [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `item_type` is never used [INFO] [stdout] --> src/item.rs:38:8 [INFO] [stdout] | [INFO] [stdout] 38 | pub fn item_type(s: &str) -> Option<(&ItemType,&str)> { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: name `DOI` contains a capitalized acronym [INFO] [stdout] --> src/item.rs:11:5 [INFO] [stdout] | [INFO] [stdout] 11 | DOI(String), [INFO] [stdout] | ^^^ help: consider making the acronym lowercase, except the initial letter (notice the capitalization): `Doi` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#upper_case_acronyms [INFO] [stdout] = note: `#[warn(clippy::upper_case_acronyms)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: name `ISBN` contains a capitalized acronym [INFO] [stdout] --> src/item.rs:12:5 [INFO] [stdout] | [INFO] [stdout] 12 | ISBN(String), [INFO] [stdout] | ^^^^ help: consider making the acronym lowercase, except the initial letter: `Isbn` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#upper_case_acronyms [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: name `ARXIV` contains a capitalized acronym [INFO] [stdout] --> src/item.rs:13:5 [INFO] [stdout] | [INFO] [stdout] 13 | ARXIV(String), [INFO] [stdout] | ^^^^^ help: consider making the acronym lowercase, except the initial letter: `Arxiv` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#upper_case_acronyms [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: name `CITEER` contains a capitalized acronym [INFO] [stdout] --> src/item.rs:14:5 [INFO] [stdout] | [INFO] [stdout] 14 | CITEER(String), [INFO] [stdout] | ^^^^^^ help: consider making the acronym lowercase, except the initial letter: `Citeer` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#upper_case_acronyms [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: name `HAL` contains a capitalized acronym [INFO] [stdout] --> src/item.rs:15:5 [INFO] [stdout] | [INFO] [stdout] 15 | HAL(String), [INFO] [stdout] | ^^^ help: consider making the acronym lowercase, except the initial letter: `Hal` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#upper_case_acronyms [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/item.rs:44:5 [INFO] [stdout] | [INFO] [stdout] 44 | return None [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] = note: `#[warn(clippy::needless_return)]` on by default [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 44 - return None [INFO] [stdout] 44 + None [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: dereferencing a tuple pattern where every element takes a reference [INFO] [stdout] --> src/item.rs:39:9 [INFO] [stdout] | [INFO] [stdout] 39 | for &(ref i, ref m) in ITEM_TYPES.iter() { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrowed_reference [INFO] [stdout] = note: `#[warn(clippy::needless_borrowed_reference)]` on by default [INFO] [stdout] help: try removing the `&` and `ref` parts [INFO] [stdout] | [INFO] [stdout] 39 - for &(ref i, ref m) in ITEM_TYPES.iter() { [INFO] [stdout] 39 + for (i, m) in ITEM_TYPES.iter() { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: stripping a prefix manually [INFO] [stdout] --> src/item.rs:41:29 [INFO] [stdout] | [INFO] [stdout] 41 | return Some((i, &s[m.len()..])) [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] note: the prefix was tested here [INFO] [stdout] --> src/item.rs:40:9 [INFO] [stdout] | [INFO] [stdout] 40 | if s.starts_with(m) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_strip [INFO] [stdout] = note: `#[warn(clippy::manual_strip)]` on by default [INFO] [stdout] help: try using the `strip_prefix` method [INFO] [stdout] | [INFO] [stdout] 40 ~ if let Some() = s.strip_prefix(m) { [INFO] [stdout] 41 ~ return Some((i, )) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> src/ginger.rs:15:16 [INFO] [stdout] | [INFO] [stdout] 15 | fn max_font(v: &Vec) -> (f64, usize, usize) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] = note: `#[warn(clippy::ptr_arg)]` on by default [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 15 - fn max_font(v: &Vec) -> (f64, usize, usize) { [INFO] [stdout] 15 + fn max_font(v: &[poppler::TextAttr]) -> (f64, usize, usize) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/ginger.rs:16:13 [INFO] [stdout] | [INFO] [stdout] 16 | assert!(v.len() > 0); [INFO] [stdout] | ^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!v.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stdout] = note: `#[warn(clippy::len_zero)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> src/ginger.rs:21:33 [INFO] [stdout] | [INFO] [stdout] 21 | fn validate_page(s: &str, attr: &Vec, layout: &Vec) -> [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 21 - fn validate_page(s: &str, attr: &Vec, layout: &Vec) -> [INFO] [stdout] 21 + fn validate_page(s: &str, attr: &[poppler::TextAttr], layout: &Vec) -> [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> src/ginger.rs:21:66 [INFO] [stdout] | [INFO] [stdout] 21 | fn validate_page(s: &str, attr: &Vec, layout: &Vec) -> [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 21 - fn validate_page(s: &str, attr: &Vec, layout: &Vec) -> [INFO] [stdout] 21 + fn validate_page(s: &str, attr: &Vec, layout: &[poppler::ffi::PopplerRectangle]) -> [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 4.69s [INFO] [stderr] warning: the following packages contain code that will be rejected by a future version of Rust: svg v0.5.11 [INFO] [stderr] note: to see what the problems were, use the option `--future-incompat-report`, or run `cargo report future-incompatibilities --id 1` [INFO] running `Command { std: "docker" "inspect" "8f65d46d8874f1ed616dae14803185b767c0bd3e8eac1034f768dc301c43bc4e", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "8f65d46d8874f1ed616dae14803185b767c0bd3e8eac1034f768dc301c43bc4e", kill_on_drop: false }` [INFO] [stdout] 8f65d46d8874f1ed616dae14803185b767c0bd3e8eac1034f768dc301c43bc4e