[INFO] crate tree_magic 0.2.1 is already in cache [INFO] extracting crate tree_magic 0.2.1 into work/ex/clippy-test-run/sources/stable/reg/tree_magic/0.2.1 [INFO] extracting crate tree_magic 0.2.1 into work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/tree_magic/0.2.1 [INFO] validating manifest of tree_magic-0.2.1 on toolchain stable [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "read-manifest" "--manifest-path" "Cargo.toml"` [INFO] validating manifest of tree_magic-0.2.1 on toolchain stable+rustflags=-Dclippy::into_iter_on_array [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "read-manifest" "--manifest-path" "Cargo.toml"` [INFO] started frobbing tree_magic-0.2.1 [INFO] finished frobbing tree_magic-0.2.1 [INFO] frobbed toml for tree_magic-0.2.1 written to work/ex/clippy-test-run/sources/stable/reg/tree_magic/0.2.1/Cargo.toml [INFO] started frobbing tree_magic-0.2.1 [INFO] finished frobbing tree_magic-0.2.1 [INFO] frobbed toml for tree_magic-0.2.1 written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/tree_magic/0.2.1/Cargo.toml [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "generate-lockfile" "--manifest-path" "Cargo.toml" "-Zno-index-update"` [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "generate-lockfile" "--manifest-path" "Cargo.toml" "-Zno-index-update"` [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "fetch" "--locked" "--manifest-path" "Cargo.toml"` [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "fetch" "--locked" "--manifest-path" "Cargo.toml"` [INFO] linting tree_magic-0.2.1 against stable for clippy-test-run [INFO] running `"docker" "create" "-v" "/mnt/big/crater/work/local/target-dirs/clippy-test-run/worker-1/stable:/opt/crater/target:rw,Z" "-v" "/mnt/big/crater/work/ex/clippy-test-run/sources/stable/reg/tree_magic/0.2.1:/opt/crater/workdir:ro,Z" "-v" "/mnt/big/crater/work/local/cargo-home:/opt/crater/cargo-home:ro,Z" "-v" "/mnt/big/crater/work/local/rustup-home:/opt/crater/rustup-home:ro,Z" "-e" "USER_ID=1000" "-e" "SOURCE_DIR=/opt/crater/workdir" "-e" "MAP_USER_ID=1000" "-e" "CARGO_TARGET_DIR=/opt/crater/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/crater/cargo-home" "-e" "RUSTUP_HOME=/opt/crater/rustup-home" "-w" "/opt/crater/workdir" "-m" "1536M" "--network" "none" "rustops/crates-build-env" "/opt/crater/cargo-home/bin/cargo" "+stable" "clippy" "--frozen" "--all" "--all-targets"` [INFO] [stdout] 06b45f7923bfdcbb43a68d4c8e287711acd750ca669a853e0323daf2730fbcd7 [INFO] running `"docker" "start" "-a" "06b45f7923bfdcbb43a68d4c8e287711acd750ca669a853e0323daf2730fbcd7"` [INFO] [stderr] Checking parking_lot v0.4.8 [INFO] [stderr] Checking tree_magic v0.2.1 (/opt/crater/workdir) [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/lib.rs:330:20 [INFO] [stderr] | [INFO] [stderr] 330 | Ok( TypeStruct{graph: graph, hash: added_mimes} ) [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `graph` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_field_names)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/lib.rs:330:20 [INFO] [stderr] | [INFO] [stderr] 330 | Ok( TypeStruct{graph: graph, hash: added_mimes} ) [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `graph` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_field_names)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: returning the result of a let binding from a block. Consider returning the expression directly. [INFO] [stderr] --> src/fdo_magic/mod.rs:236:3 [INFO] [stderr] | [INFO] [stderr] 236 | graph [INFO] [stderr] | ^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::let_and_return)] on by default [INFO] [stderr] note: this expression can be directly returned [INFO] [stderr] --> src/fdo_magic/mod.rs:235:15 [INFO] [stderr] | [INFO] [stderr] 235 | let graph = graph; [INFO] [stderr] | ^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_and_return [INFO] [stderr] [INFO] [stderr] warning: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/basetype.rs:4:16 [INFO] [stderr] | [INFO] [stderr] 4 | const TYPES: [&'static str; 5] = [INFO] [stderr] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::const_static_lifetime)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#const_static_lifetime [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/basetype.rs:102:13 [INFO] [stderr] | [INFO] [stderr] 102 | return is_text_plain_from_u8(b); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `is_text_plain_from_u8(b)` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_return)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/basetype.rs:105:13 [INFO] [stderr] | [INFO] [stderr] 105 | return false; [INFO] [stderr] | ^^^^^^^^^^^^^ help: remove `return` as shown: `false` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: this looks like an `else if` but the `else` is missing [INFO] [stderr] --> src/basetype.rs:101:10 [INFO] [stderr] | [INFO] [stderr] 101 | } if mimetype == "text/plain" { [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::suspicious_else_formatting)] on by default [INFO] [stderr] = note: to remove this lint, add the missing `else` or add a new line before the second `if` [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#suspicious_else_formatting [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/basetype.rs:130:26 [INFO] [stderr] | [INFO] [stderr] 130 | "all/all" => return true, [INFO] [stderr] | ^^^^^^^^^^^ help: remove `return` as shown: `true` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/basetype.rs:131:60 [INFO] [stderr] | [INFO] [stderr] 131 | "all/allfiles" | "application/octet-stream" => return meta.is_file(), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `meta.is_file()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/basetype.rs:132:34 [INFO] [stderr] | [INFO] [stderr] 132 | "inode/directory" => return meta.is_dir(), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `meta.is_dir()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/basetype.rs:133:29 [INFO] [stderr] | [INFO] [stderr] 133 | "text/plain" => return is_text_plain_from_filepath(filepath), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `is_text_plain_from_filepath(filepath)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/basetype.rs:134:18 [INFO] [stderr] | [INFO] [stderr] 134 | _ => return false [INFO] [stderr] | ^^^^^^^^^^^^ help: remove `return` as shown: `false` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/lib.rs:66:20 [INFO] [stderr] | [INFO] [stderr] 66 | const TYPEORDER: [&'static str; 6] = [INFO] [stderr] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#const_static_lifetime [INFO] [stderr] [INFO] [stderr] warning: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/fdo_magic/mod.rs:107:23 [INFO] [stderr] | [INFO] [stderr] 107 | const A: &'static [u8] = b"Hello world!"; [INFO] [stderr] | -^^^^^^^----- help: consider removing `'static`: `&[u8]` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::const_static_lifetime)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#const_static_lifetime [INFO] [stderr] [INFO] [stderr] warning: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/fdo_magic/mod.rs:108:23 [INFO] [stderr] | [INFO] [stderr] 108 | const B: &'static str = "Hello world!"; [INFO] [stderr] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#const_static_lifetime [INFO] [stderr] [INFO] [stderr] warning: returning the result of a let binding from a block. Consider returning the expression directly. [INFO] [stderr] --> src/fdo_magic/mod.rs:236:3 [INFO] [stderr] | [INFO] [stderr] 236 | graph [INFO] [stderr] | ^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::let_and_return)] on by default [INFO] [stderr] note: this expression can be directly returned [INFO] [stderr] --> src/fdo_magic/mod.rs:235:15 [INFO] [stderr] | [INFO] [stderr] 235 | let graph = graph; [INFO] [stderr] | ^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_and_return [INFO] [stderr] [INFO] [stderr] warning: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/basetype.rs:4:16 [INFO] [stderr] | [INFO] [stderr] 4 | const TYPES: [&'static str; 5] = [INFO] [stderr] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#const_static_lifetime [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/basetype.rs:102:13 [INFO] [stderr] | [INFO] [stderr] 102 | return is_text_plain_from_u8(b); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `is_text_plain_from_u8(b)` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_return)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/basetype.rs:105:13 [INFO] [stderr] | [INFO] [stderr] 105 | return false; [INFO] [stderr] | ^^^^^^^^^^^^^ help: remove `return` as shown: `false` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: this looks like an `else if` but the `else` is missing [INFO] [stderr] --> src/basetype.rs:101:10 [INFO] [stderr] | [INFO] [stderr] 101 | } if mimetype == "text/plain" { [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::suspicious_else_formatting)] on by default [INFO] [stderr] = note: to remove this lint, add the missing `else` or add a new line before the second `if` [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#suspicious_else_formatting [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/basetype.rs:130:26 [INFO] [stderr] | [INFO] [stderr] 130 | "all/all" => return true, [INFO] [stderr] | ^^^^^^^^^^^ help: remove `return` as shown: `true` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/basetype.rs:131:60 [INFO] [stderr] | [INFO] [stderr] 131 | "all/allfiles" | "application/octet-stream" => return meta.is_file(), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `meta.is_file()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/basetype.rs:132:34 [INFO] [stderr] | [INFO] [stderr] 132 | "inode/directory" => return meta.is_dir(), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `meta.is_dir()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/basetype.rs:133:29 [INFO] [stderr] | [INFO] [stderr] 133 | "text/plain" => return is_text_plain_from_filepath(filepath), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `is_text_plain_from_filepath(filepath)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/basetype.rs:134:18 [INFO] [stderr] | [INFO] [stderr] 134 | _ => return false [INFO] [stderr] | ^^^^^^^^^^^^ help: remove `return` as shown: `false` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/lib.rs:66:20 [INFO] [stderr] | [INFO] [stderr] 66 | const TYPEORDER: [&'static str; 6] = [INFO] [stderr] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#const_static_lifetime [INFO] [stderr] [INFO] [stderr] warning: use of `unwrap_or` followed by a call to `default` [INFO] [stderr] --> src/fdo_magic/builtin.rs:24:9 [INFO] [stderr] | [INFO] [stderr] 24 | super::ruleset::from_u8(include_bytes!("magic")).unwrap_or(FnvHashMap::default()) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `super::ruleset::from_u8(include_bytes!("magic")).unwrap_or_default()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::or_fun_call)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: use of `unwrap_or` followed by a call to `default` [INFO] [stderr] --> src/fdo_magic/builtin.rs:75:9 [INFO] [stderr] | [INFO] [stderr] 75 | read_aliaslist().unwrap_or(FnvHashMap::default()) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `read_aliaslist().unwrap_or_default()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: use of `unwrap_or` followed by a call to `new` [INFO] [stderr] --> src/fdo_magic/builtin.rs:91:30 [INFO] [stderr] | [INFO] [stderr] 91 | let mut subclasses = read_subclasses().unwrap_or(Vec::<(MIME, MIME)>::new()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `read_subclasses().unwrap_or_default()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: the loop variable `x` is only used to index `subclasses`. [INFO] [stderr] --> src/fdo_magic/builtin.rs:94:18 [INFO] [stderr] | [INFO] [stderr] 94 | for x in 0..subclasses.len(){ [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_range_loop)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stderr] help: consider using an iterator [INFO] [stderr] | [INFO] [stderr] 94 | for in &mut subclasses{ [INFO] [stderr] | ^^^^^^ ^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/fdo_magic/builtin.rs:95:13 [INFO] [stderr] | [INFO] [stderr] 95 | / match super::ALIASES.get(&subclasses[x].0) { [INFO] [stderr] 96 | | Some(alias) => {subclasses[x].0 = alias.clone();} [INFO] [stderr] 97 | | None => {} [INFO] [stderr] 98 | | } [INFO] [stderr] | |_____________^ help: try this: `if let Some(alias) = super::ALIASES.get(&subclasses[x].0) {subclasses[x].0 = alias.clone();}` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::single_match)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/fdo_magic/builtin.rs:99:13 [INFO] [stderr] | [INFO] [stderr] 99 | / match super::ALIASES.get(&subclasses[x].1) { [INFO] [stderr] 100 | | Some(alias) => {subclasses[x].1 = alias.clone();} [INFO] [stderr] 101 | | None => {} [INFO] [stderr] 102 | | } [INFO] [stderr] | |_____________^ help: try this: `if let Some(alias) = super::ALIASES.get(&subclasses[x].1) {subclasses[x].1 = alias.clone();}` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] [INFO] [stderr] warning: `ref` on an entire `let` pattern is discouraged, take a reference with `&` instead [INFO] [stderr] --> src/fdo_magic/builtin.rs:154:8 [INFO] [stderr] | [INFO] [stderr] 154 | let ref y = x.weight; [INFO] [stderr] | ----^^^^^------------ help: try: `let y = &x.weight;` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::toplevel_ref_arg)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#toplevel_ref_arg [INFO] [stderr] [INFO] [stderr] warning: use of `unwrap_or` followed by a call to `default` [INFO] [stderr] --> src/fdo_magic/sys.rs:29:9 [INFO] [stderr] | [INFO] [stderr] 29 | super::ruleset::from_filepath("/usr/share/mime/magic").unwrap_or(FnvHashMap::default()) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `super::ruleset::from_filepath("/usr/share/mime/magic").unwrap_or_default()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: use of `unwrap_or` followed by a call to `default` [INFO] [stderr] --> src/fdo_magic/sys.rs:89:9 [INFO] [stderr] | [INFO] [stderr] 89 | read_aliaslist().unwrap_or(FnvHashMap::default()) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `read_aliaslist().unwrap_or_default()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: use of `unwrap_or` followed by a call to `new` [INFO] [stderr] --> src/fdo_magic/sys.rs:96:30 [INFO] [stderr] | [INFO] [stderr] 96 | let mut subclasses = read_subclasses().unwrap_or(Vec::<(MIME, MIME)>::new()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `read_subclasses().unwrap_or_default()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: the loop variable `x` is only used to index `subclasses`. [INFO] [stderr] --> src/fdo_magic/sys.rs:99:18 [INFO] [stderr] | [INFO] [stderr] 99 | for x in 0..subclasses.len(){ [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stderr] help: consider using an iterator [INFO] [stderr] | [INFO] [stderr] 99 | for in &mut subclasses{ [INFO] [stderr] | ^^^^^^ ^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/fdo_magic/sys.rs:100:13 [INFO] [stderr] | [INFO] [stderr] 100 | / match super::ALIASES.get(&subclasses[x].0) { [INFO] [stderr] 101 | | Some(alias) => {subclasses[x].0 = alias.clone();} [INFO] [stderr] 102 | | None => {} [INFO] [stderr] 103 | | } [INFO] [stderr] | |_____________^ help: try this: `if let Some(alias) = super::ALIASES.get(&subclasses[x].0) {subclasses[x].0 = alias.clone();}` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/fdo_magic/sys.rs:104:13 [INFO] [stderr] | [INFO] [stderr] 104 | / match super::ALIASES.get(&subclasses[x].1) { [INFO] [stderr] 105 | | Some(alias) => {subclasses[x].1 = alias.clone();} [INFO] [stderr] 106 | | None => {} [INFO] [stderr] 107 | | } [INFO] [stderr] | |_____________^ help: try this: `if let Some(alias) = super::ALIASES.get(&subclasses[x].1) {subclasses[x].1 = alias.clone();}` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] [INFO] [stderr] warning: `ref` on an entire `let` pattern is discouraged, take a reference with `&` instead [INFO] [stderr] --> src/fdo_magic/sys.rs:180:8 [INFO] [stderr] | [INFO] [stderr] 180 | let ref y = x.weight; [INFO] [stderr] | ----^^^^^------------ help: try: `let y = &x.weight;` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#toplevel_ref_arg [INFO] [stderr] [INFO] [stderr] warning: You are using an explicit closure for cloning elements [INFO] [stderr] --> src/fdo_magic/mod.rs:142:18 [INFO] [stderr] | [INFO] [stderr] 142 | (ret.iter().map(|&x| x).collect()) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: Consider calling the dedicated `cloned` method: `ret.iter().cloned()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::map_clone)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stderr] [INFO] [stderr] warning: You are using an explicit closure for cloning elements [INFO] [stderr] --> src/fdo_magic/mod.rs:149:22 [INFO] [stderr] | [INFO] [stderr] 149 | (ret.iter().map(|&x| x).collect()) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: Consider calling the dedicated `cloned` method: `ret.iter().cloned()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stderr] [INFO] [stderr] warning: You are using an explicit closure for cloning elements [INFO] [stderr] --> src/fdo_magic/mod.rs:307:23 [INFO] [stderr] | [INFO] [stderr] 307 | let x: Vec = file.iter().skip(bound_min).take(bound_max - bound_min).map(|&x| x).collect(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: Consider calling the dedicated `cloned` method: `file.iter().skip(bound_min).take(bound_max - bound_min).cloned()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stderr] [INFO] [stderr] warning: You are using an explicit closure for cloning elements [INFO] [stderr] --> src/fdo_magic/mod.rs:315:27 [INFO] [stderr] | [INFO] [stderr] 315 | let mut x: Vec = file.iter() [INFO] [stderr] | __________________________________________^ [INFO] [stderr] 316 | | .skip(bound_min) // Skip to start of area [INFO] [stderr] 317 | | .take(bound_max - bound_min) // Take until end of area - region length [INFO] [stderr] 318 | | .map(|&x| x).collect(); // Convert to vector [INFO] [stderr] | |____________________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stderr] help: Consider calling the dedicated `cloned` method [INFO] [stderr] | [INFO] [stderr] 315 | let mut x: Vec = file.iter() [INFO] [stderr] 316 | .skip(bound_min) // Skip to start of area [INFO] [stderr] 317 | .take(bound_max - bound_min).cloned().collect(); // Convert to vector [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: You are using an explicit closure for cloning elements [INFO] [stderr] --> src/fdo_magic/mod.rs:319:29 [INFO] [stderr] | [INFO] [stderr] 319 | let mut val: Vec = rule.val.iter().map(|&x| x).collect(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: Consider calling the dedicated `cloned` method: `rule.val.iter().cloned()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/fdo_magic/mod.rs:326:7 [INFO] [stderr] | [INFO] [stderr] 326 | val[i] = val[i] & mask[i]; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `val[i] &= mask[i]` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::assign_op_pattern)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: `ref` on an entire `let` pattern is discouraged, take a reference with `&` instead [INFO] [stderr] --> src/fdo_magic/mod.rs:339:8 [INFO] [stderr] | [INFO] [stderr] 339 | let ref x: Vec = file.iter().take(file.len()).map(|&x| x).collect(); [INFO] [stderr] | ----^^^^^--------------------------------------------------------------- help: try: `let x: &Vec = &file.iter().take(file.len()).map(|&x| x).collect();` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#toplevel_ref_arg [INFO] [stderr] [INFO] [stderr] warning: You are using an explicit closure for cloning elements [INFO] [stderr] --> src/fdo_magic/mod.rs:339:25 [INFO] [stderr] | [INFO] [stderr] 339 | let ref x: Vec = file.iter().take(file.len()).map(|&x| x).collect(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: Consider calling the dedicated `cloned` method: `file.iter().take(file.len()).cloned()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stderr] [INFO] [stderr] warning: You are using an explicit closure for cloning elements [INFO] [stderr] --> src/fdo_magic/mod.rs:340:28 [INFO] [stderr] | [INFO] [stderr] 340 | let testarea: Vec = x.iter().skip(bound_min).take(bound_max - bound_min).map(|&x| x).collect(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: Consider calling the dedicated `cloned` method: `x.iter().skip(bound_min).take(bound_max - bound_min).cloned()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stderr] [INFO] [stderr] warning: `ref` on an entire `let` pattern is discouraged, take a reference with `&` instead [INFO] [stderr] --> src/fdo_magic/mod.rs:350:9 [INFO] [stderr] | [INFO] [stderr] 350 | let ref rule_mask = rule.mask; [INFO] [stderr] | ----^^^^^^^^^^^^^------------- help: try: `let rule_mask = &rule.mask;` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#toplevel_ref_arg [INFO] [stderr] [INFO] [stderr] warning: `ref` on an entire `let` pattern is discouraged, take a reference with `&` instead [INFO] [stderr] --> src/fdo_magic/mod.rs:383:17 [INFO] [stderr] | [INFO] [stderr] 383 | let ref rule = graph[node]; [INFO] [stderr] | ----^^^^^^^^--------------- help: try: `let rule = &graph[node];` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#toplevel_ref_arg [INFO] [stderr] [INFO] [stderr] warning: `ref` on an entire `let` pattern is discouraged, take a reference with `&` instead [INFO] [stderr] --> src/fdo_magic/mod.rs:400:17 [INFO] [stderr] | [INFO] [stderr] 400 | let ref rule = graph[y]; [INFO] [stderr] | ----^^^^^^^^------------ help: try: `let rule = &graph[y];` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#toplevel_ref_arg [INFO] [stderr] [INFO] [stderr] warning: You appear to be counting bytes the naive way [INFO] [stderr] --> src/basetype.rs:73:9 [INFO] [stderr] | [INFO] [stderr] 73 | b.iter().filter(|&x| *x == 0).count() == 0 [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: Consider using the bytecount crate: `bytecount::count(b, 0)` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::naive_bytecount)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#naive_bytecount [INFO] [stderr] [INFO] [stderr] warning: the loop variable `i` is used to index `CHECKERS` [INFO] [stderr] --> src/lib.rs:122:18 [INFO] [stderr] | [INFO] [stderr] 122 | for i in 0..CHECKERS.len() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stderr] help: consider using an iterator [INFO] [stderr] | [INFO] [stderr] 122 | for (i, ) in CHECKERS.iter().enumerate() { [INFO] [stderr] | ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: the loop variable `i` is only used to index `CHECKERS`. [INFO] [stderr] --> src/lib.rs:134:18 [INFO] [stderr] | [INFO] [stderr] 134 | for i in 0..CHECKERS.len() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stderr] help: consider using an iterator [INFO] [stderr] | [INFO] [stderr] 134 | for in &CHECKERS { [INFO] [stderr] | ^^^^^^ ^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: the loop variable `i` is only used to index `CHECKERS`. [INFO] [stderr] --> src/lib.rs:231:14 [INFO] [stderr] | [INFO] [stderr] 231 | for i in 0..CHECKERS.len() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stderr] help: consider using an iterator [INFO] [stderr] | [INFO] [stderr] 231 | for in &CHECKERS { [INFO] [stderr] | ^^^^^^ ^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: `ref` on an entire `let` pattern is discouraged, take a reference with `&` instead [INFO] [stderr] --> src/lib.rs:306:13 [INFO] [stderr] | [INFO] [stderr] 306 | let ref mimetype = graph[mimenode]; [INFO] [stderr] | ----^^^^^^^^^^^^------------------- help: try: `let mimetype = &graph[mimenode];` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#toplevel_ref_arg [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/lib.rs:307:39 [INFO] [stderr] | [INFO] [stderr] 307 | let toplevel = mimetype.split("/").nth(0).unwrap_or(""); [INFO] [stderr] | ^^^ help: try using a char instead: `'/'` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::single_char_pattern)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/lib.rs:337:12 [INFO] [stderr] | [INFO] [stderr] 337 | cache: &CacheContainer, [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::ptr_arg)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: `ref` on an entire `let` pattern is discouraged, take a reference with `&` instead [INFO] [stderr] --> src/lib.rs:356:13 [INFO] [stderr] | [INFO] [stderr] 356 | let ref mimetype = TYPE.graph[childnode]; [INFO] [stderr] | ----^^^^^^^^^^^^------------------------- help: try: `let mimetype = &TYPE.graph[childnode];` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#toplevel_ref_arg [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to match on a boolean expression [INFO] [stderr] --> src/lib.rs:359:9 [INFO] [stderr] | [INFO] [stderr] 359 | / match result { [INFO] [stderr] 360 | | true => { [INFO] [stderr] 361 | | match typegraph_walker( [INFO] [stderr] 362 | | childnode, input, cache, matchfn [INFO] [stderr] ... | [INFO] [stderr] 368 | | false => continue, [INFO] [stderr] 369 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::match_bool)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_bool [INFO] [stderr] help: consider using an if/else expression [INFO] [stderr] | [INFO] [stderr] 359 | if result { [INFO] [stderr] 360 | match typegraph_walker( [INFO] [stderr] 361 | childnode, input, cache, matchfn [INFO] [stderr] 362 | ) { [INFO] [stderr] 363 | Some(foundtype) => return Some(foundtype), [INFO] [stderr] 364 | None => return Some(clonemime!(mimetype)), [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/lib.rs:384:24 [INFO] [stderr] | [INFO] [stderr] 384 | fn get_alias(mimetype: &String) -> &String { [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/lib.rs:393:58 [INFO] [stderr] | [INFO] [stderr] 393 | fn match_u8_noalias(mimetype: &str, bytes: &[u8], cache: &CacheContainer) -> bool [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/lib.rs:483:67 [INFO] [stderr] | [INFO] [stderr] 483 | fn match_filepath_noalias(mimetype: &str, filepath: &Path, cache: &CacheContainer) -> bool [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: use of `unwrap_or` followed by a call to `default` [INFO] [stderr] --> src/fdo_magic/builtin.rs:24:9 [INFO] [stderr] | [INFO] [stderr] 24 | super::ruleset::from_u8(include_bytes!("magic")).unwrap_or(FnvHashMap::default()) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `super::ruleset::from_u8(include_bytes!("magic")).unwrap_or_default()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::or_fun_call)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: use of `unwrap_or` followed by a call to `default` [INFO] [stderr] --> src/fdo_magic/builtin.rs:75:9 [INFO] [stderr] | [INFO] [stderr] 75 | read_aliaslist().unwrap_or(FnvHashMap::default()) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `read_aliaslist().unwrap_or_default()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: use of `unwrap_or` followed by a call to `new` [INFO] [stderr] --> src/fdo_magic/builtin.rs:91:30 [INFO] [stderr] | [INFO] [stderr] 91 | let mut subclasses = read_subclasses().unwrap_or(Vec::<(MIME, MIME)>::new()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `read_subclasses().unwrap_or_default()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: the loop variable `x` is only used to index `subclasses`. [INFO] [stderr] --> src/fdo_magic/builtin.rs:94:18 [INFO] [stderr] | [INFO] [stderr] 94 | for x in 0..subclasses.len(){ [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_range_loop)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stderr] help: consider using an iterator [INFO] [stderr] | [INFO] [stderr] 94 | for in &mut subclasses{ [INFO] [stderr] | ^^^^^^ ^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/fdo_magic/builtin.rs:95:13 [INFO] [stderr] | [INFO] [stderr] 95 | / match super::ALIASES.get(&subclasses[x].0) { [INFO] [stderr] 96 | | Some(alias) => {subclasses[x].0 = alias.clone();} [INFO] [stderr] 97 | | None => {} [INFO] [stderr] 98 | | } [INFO] [stderr] | |_____________^ help: try this: `if let Some(alias) = super::ALIASES.get(&subclasses[x].0) {subclasses[x].0 = alias.clone();}` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::single_match)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/fdo_magic/builtin.rs:99:13 [INFO] [stderr] | [INFO] [stderr] 99 | / match super::ALIASES.get(&subclasses[x].1) { [INFO] [stderr] 100 | | Some(alias) => {subclasses[x].1 = alias.clone();} [INFO] [stderr] 101 | | None => {} [INFO] [stderr] 102 | | } [INFO] [stderr] | |_____________^ help: try this: `if let Some(alias) = super::ALIASES.get(&subclasses[x].1) {subclasses[x].1 = alias.clone();}` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] [INFO] [stderr] warning: `ref` on an entire `let` pattern is discouraged, take a reference with `&` instead [INFO] [stderr] --> src/fdo_magic/builtin.rs:154:8 [INFO] [stderr] | [INFO] [stderr] 154 | let ref y = x.weight; [INFO] [stderr] | ----^^^^^------------ help: try: `let y = &x.weight;` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::toplevel_ref_arg)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#toplevel_ref_arg [INFO] [stderr] [INFO] [stderr] warning: use of `unwrap_or` followed by a call to `default` [INFO] [stderr] --> src/fdo_magic/sys.rs:29:9 [INFO] [stderr] | [INFO] [stderr] 29 | super::ruleset::from_filepath("/usr/share/mime/magic").unwrap_or(FnvHashMap::default()) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `super::ruleset::from_filepath("/usr/share/mime/magic").unwrap_or_default()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: use of `unwrap_or` followed by a call to `default` [INFO] [stderr] --> src/fdo_magic/sys.rs:89:9 [INFO] [stderr] | [INFO] [stderr] 89 | read_aliaslist().unwrap_or(FnvHashMap::default()) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `read_aliaslist().unwrap_or_default()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: use of `unwrap_or` followed by a call to `new` [INFO] [stderr] --> src/fdo_magic/sys.rs:96:30 [INFO] [stderr] | [INFO] [stderr] 96 | let mut subclasses = read_subclasses().unwrap_or(Vec::<(MIME, MIME)>::new()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `read_subclasses().unwrap_or_default()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: the loop variable `x` is only used to index `subclasses`. [INFO] [stderr] --> src/fdo_magic/sys.rs:99:18 [INFO] [stderr] | [INFO] [stderr] 99 | for x in 0..subclasses.len(){ [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stderr] help: consider using an iterator [INFO] [stderr] | [INFO] [stderr] 99 | for in &mut subclasses{ [INFO] [stderr] | ^^^^^^ ^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/fdo_magic/sys.rs:100:13 [INFO] [stderr] | [INFO] [stderr] 100 | / match super::ALIASES.get(&subclasses[x].0) { [INFO] [stderr] 101 | | Some(alias) => {subclasses[x].0 = alias.clone();} [INFO] [stderr] 102 | | None => {} [INFO] [stderr] 103 | | } [INFO] [stderr] | |_____________^ help: try this: `if let Some(alias) = super::ALIASES.get(&subclasses[x].0) {subclasses[x].0 = alias.clone();}` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/fdo_magic/sys.rs:104:13 [INFO] [stderr] | [INFO] [stderr] 104 | / match super::ALIASES.get(&subclasses[x].1) { [INFO] [stderr] 105 | | Some(alias) => {subclasses[x].1 = alias.clone();} [INFO] [stderr] 106 | | None => {} [INFO] [stderr] 107 | | } [INFO] [stderr] | |_____________^ help: try this: `if let Some(alias) = super::ALIASES.get(&subclasses[x].1) {subclasses[x].1 = alias.clone();}` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] [INFO] [stderr] warning: `ref` on an entire `let` pattern is discouraged, take a reference with `&` instead [INFO] [stderr] --> src/fdo_magic/sys.rs:180:8 [INFO] [stderr] | [INFO] [stderr] 180 | let ref y = x.weight; [INFO] [stderr] | ----^^^^^------------ help: try: `let y = &x.weight;` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#toplevel_ref_arg [INFO] [stderr] [INFO] [stderr] warning: transmute from a `&'static [u8]` to a `&'static str` [INFO] [stderr] --> src/fdo_magic/mod.rs:109:35 [INFO] [stderr] | [INFO] [stderr] 109 | let c: &'static str = std::mem::transmute(A); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: consider using: `std::str::from_utf8(A).unwrap()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::transmute_bytes_to_str)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#transmute_bytes_to_str [INFO] [stderr] [INFO] [stderr] warning: You are using an explicit closure for cloning elements [INFO] [stderr] --> src/fdo_magic/mod.rs:142:18 [INFO] [stderr] | [INFO] [stderr] 142 | (ret.iter().map(|&x| x).collect()) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: Consider calling the dedicated `cloned` method: `ret.iter().cloned()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::map_clone)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stderr] [INFO] [stderr] warning: You are using an explicit closure for cloning elements [INFO] [stderr] --> src/fdo_magic/mod.rs:149:22 [INFO] [stderr] | [INFO] [stderr] 149 | (ret.iter().map(|&x| x).collect()) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: Consider calling the dedicated `cloned` method: `ret.iter().cloned()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stderr] [INFO] [stderr] warning: You are using an explicit closure for cloning elements [INFO] [stderr] --> src/fdo_magic/mod.rs:307:23 [INFO] [stderr] | [INFO] [stderr] 307 | let x: Vec = file.iter().skip(bound_min).take(bound_max - bound_min).map(|&x| x).collect(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: Consider calling the dedicated `cloned` method: `file.iter().skip(bound_min).take(bound_max - bound_min).cloned()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stderr] [INFO] [stderr] warning: You are using an explicit closure for cloning elements [INFO] [stderr] --> src/fdo_magic/mod.rs:315:27 [INFO] [stderr] | [INFO] [stderr] 315 | let mut x: Vec = file.iter() [INFO] [stderr] | __________________________________________^ [INFO] [stderr] 316 | | .skip(bound_min) // Skip to start of area [INFO] [stderr] 317 | | .take(bound_max - bound_min) // Take until end of area - region length [INFO] [stderr] 318 | | .map(|&x| x).collect(); // Convert to vector [INFO] [stderr] | |____________________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stderr] help: Consider calling the dedicated `cloned` method [INFO] [stderr] | [INFO] [stderr] 315 | let mut x: Vec = file.iter() [INFO] [stderr] 316 | .skip(bound_min) // Skip to start of area [INFO] [stderr] 317 | .take(bound_max - bound_min).cloned().collect(); // Convert to vector [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: You are using an explicit closure for cloning elements [INFO] [stderr] --> src/fdo_magic/mod.rs:319:29 [INFO] [stderr] | [INFO] [stderr] 319 | let mut val: Vec = rule.val.iter().map(|&x| x).collect(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: Consider calling the dedicated `cloned` method: `rule.val.iter().cloned()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/fdo_magic/mod.rs:326:7 [INFO] [stderr] | [INFO] [stderr] 326 | val[i] = val[i] & mask[i]; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `val[i] &= mask[i]` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::assign_op_pattern)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: `ref` on an entire `let` pattern is discouraged, take a reference with `&` instead [INFO] [stderr] --> src/fdo_magic/mod.rs:339:8 [INFO] [stderr] | [INFO] [stderr] 339 | let ref x: Vec = file.iter().take(file.len()).map(|&x| x).collect(); [INFO] [stderr] | ----^^^^^--------------------------------------------------------------- help: try: `let x: &Vec = &file.iter().take(file.len()).map(|&x| x).collect();` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#toplevel_ref_arg [INFO] [stderr] [INFO] [stderr] warning: You are using an explicit closure for cloning elements [INFO] [stderr] --> src/fdo_magic/mod.rs:339:25 [INFO] [stderr] | [INFO] [stderr] 339 | let ref x: Vec = file.iter().take(file.len()).map(|&x| x).collect(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: Consider calling the dedicated `cloned` method: `file.iter().take(file.len()).cloned()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stderr] [INFO] [stderr] warning: You are using an explicit closure for cloning elements [INFO] [stderr] --> src/fdo_magic/mod.rs:340:28 [INFO] [stderr] | [INFO] [stderr] 340 | let testarea: Vec = x.iter().skip(bound_min).take(bound_max - bound_min).map(|&x| x).collect(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: Consider calling the dedicated `cloned` method: `x.iter().skip(bound_min).take(bound_max - bound_min).cloned()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stderr] [INFO] [stderr] warning: `ref` on an entire `let` pattern is discouraged, take a reference with `&` instead [INFO] [stderr] --> src/fdo_magic/mod.rs:350:9 [INFO] [stderr] | [INFO] [stderr] 350 | let ref rule_mask = rule.mask; [INFO] [stderr] | ----^^^^^^^^^^^^^------------- help: try: `let rule_mask = &rule.mask;` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#toplevel_ref_arg [INFO] [stderr] [INFO] [stderr] warning: `ref` on an entire `let` pattern is discouraged, take a reference with `&` instead [INFO] [stderr] --> src/fdo_magic/mod.rs:383:17 [INFO] [stderr] | [INFO] [stderr] 383 | let ref rule = graph[node]; [INFO] [stderr] | ----^^^^^^^^--------------- help: try: `let rule = &graph[node];` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#toplevel_ref_arg [INFO] [stderr] [INFO] [stderr] warning: `ref` on an entire `let` pattern is discouraged, take a reference with `&` instead [INFO] [stderr] --> src/fdo_magic/mod.rs:400:17 [INFO] [stderr] | [INFO] [stderr] 400 | let ref rule = graph[y]; [INFO] [stderr] | ----^^^^^^^^------------ help: try: `let rule = &graph[y];` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#toplevel_ref_arg [INFO] [stderr] [INFO] [stderr] warning: You appear to be counting bytes the naive way [INFO] [stderr] --> src/basetype.rs:73:9 [INFO] [stderr] | [INFO] [stderr] 73 | b.iter().filter(|&x| *x == 0).count() == 0 [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: Consider using the bytecount crate: `bytecount::count(b, 0)` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::naive_bytecount)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#naive_bytecount [INFO] [stderr] [INFO] [stderr] warning: the loop variable `i` is used to index `CHECKERS` [INFO] [stderr] --> src/lib.rs:122:18 [INFO] [stderr] | [INFO] [stderr] 122 | for i in 0..CHECKERS.len() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stderr] help: consider using an iterator [INFO] [stderr] | [INFO] [stderr] 122 | for (i, ) in CHECKERS.iter().enumerate() { [INFO] [stderr] | ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: the loop variable `i` is only used to index `CHECKERS`. [INFO] [stderr] --> src/lib.rs:134:18 [INFO] [stderr] | [INFO] [stderr] 134 | for i in 0..CHECKERS.len() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stderr] help: consider using an iterator [INFO] [stderr] | [INFO] [stderr] 134 | for in &CHECKERS { [INFO] [stderr] | ^^^^^^ ^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: the loop variable `i` is only used to index `CHECKERS`. [INFO] [stderr] --> src/lib.rs:231:14 [INFO] [stderr] | [INFO] [stderr] 231 | for i in 0..CHECKERS.len() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stderr] help: consider using an iterator [INFO] [stderr] | [INFO] [stderr] 231 | for in &CHECKERS { [INFO] [stderr] | ^^^^^^ ^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: `ref` on an entire `let` pattern is discouraged, take a reference with `&` instead [INFO] [stderr] --> src/lib.rs:306:13 [INFO] [stderr] | [INFO] [stderr] 306 | let ref mimetype = graph[mimenode]; [INFO] [stderr] | ----^^^^^^^^^^^^------------------- help: try: `let mimetype = &graph[mimenode];` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#toplevel_ref_arg [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/lib.rs:307:39 [INFO] [stderr] | [INFO] [stderr] 307 | let toplevel = mimetype.split("/").nth(0).unwrap_or(""); [INFO] [stderr] | ^^^ help: try using a char instead: `'/'` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::single_char_pattern)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/lib.rs:337:12 [INFO] [stderr] | [INFO] [stderr] 337 | cache: &CacheContainer, [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::ptr_arg)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: `ref` on an entire `let` pattern is discouraged, take a reference with `&` instead [INFO] [stderr] --> src/lib.rs:356:13 [INFO] [stderr] | [INFO] [stderr] 356 | let ref mimetype = TYPE.graph[childnode]; [INFO] [stderr] | ----^^^^^^^^^^^^------------------------- help: try: `let mimetype = &TYPE.graph[childnode];` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#toplevel_ref_arg [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to match on a boolean expression [INFO] [stderr] --> src/lib.rs:359:9 [INFO] [stderr] | [INFO] [stderr] 359 | / match result { [INFO] [stderr] 360 | | true => { [INFO] [stderr] 361 | | match typegraph_walker( [INFO] [stderr] 362 | | childnode, input, cache, matchfn [INFO] [stderr] ... | [INFO] [stderr] 368 | | false => continue, [INFO] [stderr] 369 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::match_bool)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_bool [INFO] [stderr] help: consider using an if/else expression [INFO] [stderr] | [INFO] [stderr] 359 | if result { [INFO] [stderr] 360 | match typegraph_walker( [INFO] [stderr] 361 | childnode, input, cache, matchfn [INFO] [stderr] 362 | ) { [INFO] [stderr] 363 | Some(foundtype) => return Some(foundtype), [INFO] [stderr] 364 | None => return Some(clonemime!(mimetype)), [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/lib.rs:384:24 [INFO] [stderr] | [INFO] [stderr] 384 | fn get_alias(mimetype: &String) -> &String { [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/lib.rs:393:58 [INFO] [stderr] | [INFO] [stderr] 393 | fn match_u8_noalias(mimetype: &str, bytes: &[u8], cache: &CacheContainer) -> bool [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/lib.rs:483:67 [INFO] [stderr] | [INFO] [stderr] 483 | fn match_filepath_noalias(mimetype: &str, filepath: &Path, cache: &CacheContainer) -> bool [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] Finished dev [unoptimized + debuginfo] target(s) in 3.42s [INFO] running `"docker" "inspect" "06b45f7923bfdcbb43a68d4c8e287711acd750ca669a853e0323daf2730fbcd7"` [INFO] running `"docker" "rm" "-f" "06b45f7923bfdcbb43a68d4c8e287711acd750ca669a853e0323daf2730fbcd7"` [INFO] [stdout] 06b45f7923bfdcbb43a68d4c8e287711acd750ca669a853e0323daf2730fbcd7