[INFO] updating cached repository Helvethor/confy [INFO] running `"git" "fetch" "--all"` [INFO] [stdout] Fetching origin [INFO] [stderr] From git://github.com/Helvethor/confy [INFO] [stderr] * branch HEAD -> FETCH_HEAD [INFO] running `"git" "clone" "work/cache/sources/gh/Helvethor/confy" "work/ex/clippy-test-run/sources/stable/gh/Helvethor/confy"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable/gh/Helvethor/confy'... [INFO] [stderr] done. [INFO] running `"git" "clone" "work/cache/sources/gh/Helvethor/confy" "work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/Helvethor/confy"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/Helvethor/confy'... [INFO] [stderr] done. [INFO] running `"git" "rev-parse" "HEAD"` [INFO] [stdout] 924a5518fa5fe7fd8ec33f3de7d0d89b3f19c4f0 [INFO] sha for GitHub repo Helvethor/confy: 924a5518fa5fe7fd8ec33f3de7d0d89b3f19c4f0 [INFO] validating manifest of Helvethor/confy 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 Helvethor/confy 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 Helvethor/confy [INFO] finished frobbing Helvethor/confy [INFO] frobbed toml for Helvethor/confy written to work/ex/clippy-test-run/sources/stable/gh/Helvethor/confy/Cargo.toml [INFO] started frobbing Helvethor/confy [INFO] finished frobbing Helvethor/confy [INFO] frobbed toml for Helvethor/confy written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/Helvethor/confy/Cargo.toml [INFO] crate Helvethor/confy has a lockfile. skipping [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 Helvethor/confy 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/gh/Helvethor/confy:/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] 34564e55db0a39782b4cce1d1b0f239008d6edee3b5e34b5722ae0ac6049dedb [INFO] running `"docker" "start" "-a" "34564e55db0a39782b4cce1d1b0f239008d6edee3b5e34b5722ae0ac6049dedb"` [INFO] [stderr] Checking env_logger v0.5.0-rc.2 [INFO] [stderr] Checking confy v0.2.2 (/opt/crater/workdir) [INFO] [stderr] warning: 5th binding whose name is just one char [INFO] [stderr] --> src/variables.rs:137:33 [INFO] [stderr] | [INFO] [stderr] 137 | Node::Child(r) => [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::many_single_char_names)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#many_single_char_names [INFO] [stderr] [INFO] [stderr] warning: 5th binding whose name is just one char [INFO] [stderr] --> src/variables.rs:141:30 [INFO] [stderr] | [INFO] [stderr] 141 | &mut Node::Child(r) => [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#many_single_char_names [INFO] [stderr] [INFO] [stderr] warning: 5th binding whose name is just one char [INFO] [stderr] --> src/variables.rs:137:33 [INFO] [stderr] | [INFO] [stderr] 137 | Node::Child(r) => [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::many_single_char_names)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#many_single_char_names [INFO] [stderr] [INFO] [stderr] warning: 5th binding whose name is just one char [INFO] [stderr] --> src/variables.rs:141:30 [INFO] [stderr] | [INFO] [stderr] 141 | &mut Node::Child(r) => [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#many_single_char_names [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/generator.rs:78:35 [INFO] [stderr] | [INFO] [stderr] 78 | fn process_line(&self, input: &String, output: &mut String) -> u32 { [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [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: single-character string constant used as pattern [INFO] [stderr] --> src/generator.rs:109:47 [INFO] [stderr] | [INFO] [stderr] 109 | let range_str = match expression.find("[") { [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: single-character string constant used as pattern [INFO] [stderr] --> src/generator.rs:111:39 [INFO] [stderr] | [INFO] [stderr] 111 | match expression.find("]") { [INFO] [stderr] | ^^^ help: try using a char instead: `']'` [INFO] [stderr] | [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: you don't need to add `&` to all patterns [INFO] [stderr] --> src/watcher.rs:158:17 [INFO] [stderr] | [INFO] [stderr] 158 | / match element { [INFO] [stderr] 159 | | &WatchedElement::Binding(ref binding) => self.process(binding), [INFO] [stderr] 160 | | &WatchedElement::Config(_) => update = true [INFO] [stderr] 161 | | }; [INFO] [stderr] | |_________________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::match_ref_pats)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 158 | match *element { [INFO] [stderr] 159 | WatchedElement::Binding(ref binding) => self.process(binding), [INFO] [stderr] 160 | WatchedElement::Config(_) => update = true [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/watcher.rs:192:13 [INFO] [stderr] | [INFO] [stderr] 192 | / if let &WatchedElement::Binding(ref binding) = watched_element { [INFO] [stderr] 193 | | self.process(binding); [INFO] [stderr] 194 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 192 | if let WatchedElement::Binding(ref binding) = *watched_element { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/watcher.rs:203:9 [INFO] [stderr] | [INFO] [stderr] 203 | / match self { [INFO] [stderr] 204 | | &WatchedElement::Binding(ref binding) => binding.from.as_path(), [INFO] [stderr] 205 | | &WatchedElement::Config(ref config_file) => config_file.as_path() [INFO] [stderr] 206 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 203 | match *self { [INFO] [stderr] 204 | WatchedElement::Binding(ref binding) => binding.from.as_path(), [INFO] [stderr] 205 | WatchedElement::Config(ref config_file) => config_file.as_path() [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/variables.rs:50:34 [INFO] [stderr] | [INFO] [stderr] 50 | if value.starts_with("@") { [INFO] [stderr] | ^^^ help: try using a char instead: `'@'` [INFO] [stderr] | [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: called `.get().unwrap()` on a HashMap. Using `[]` is more clear and more concise [INFO] [stderr] --> src/variables.rs:51:25 [INFO] [stderr] | [INFO] [stderr] 51 | let i = recto.get(&key[..]).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `&recto[&key[..]]` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::get_unwrap)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a HashMap. Using `[]` is more clear and more concise [INFO] [stderr] --> src/variables.rs:59:21 [INFO] [stderr] | [INFO] [stderr] 59 | let i = recto.get(&key[..]).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `&recto[&key[..]]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a HashMap. Using `[]` is more clear and more concise [INFO] [stderr] --> src/variables.rs:63:20 [INFO] [stderr] | [INFO] [stderr] 63 | || env.get(deref_key).unwrap() [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `&env[deref_key]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/variables.rs:130:9 [INFO] [stderr] | [INFO] [stderr] 130 | / match self.elements[a].get_mut() { [INFO] [stderr] 131 | | &mut Node::Root(mut _size_a) => { [INFO] [stderr] 132 | | match self.elements[b].get() { [INFO] [stderr] 133 | | Node::Root(_size_b) => { [INFO] [stderr] ... | [INFO] [stderr] 142 | | panic!("Unexepected child element: Child({})", r) [INFO] [stderr] 143 | | }; [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 130 | match *self.elements[a].get_mut() { [INFO] [stderr] 131 | Node::Root(mut _size_a) => { [INFO] [stderr] 132 | match self.elements[b].get() { [INFO] [stderr] 133 | Node::Root(_size_b) => { [INFO] [stderr] 134 | _size_a += _size_b; [INFO] [stderr] 135 | self.elements[b].set(Node::Child(a)); [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/generator.rs:78:35 [INFO] [stderr] | [INFO] [stderr] 78 | fn process_line(&self, input: &String, output: &mut String) -> u32 { [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [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: single-character string constant used as pattern [INFO] [stderr] --> src/generator.rs:109:47 [INFO] [stderr] | [INFO] [stderr] 109 | let range_str = match expression.find("[") { [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: single-character string constant used as pattern [INFO] [stderr] --> src/generator.rs:111:39 [INFO] [stderr] | [INFO] [stderr] 111 | match expression.find("]") { [INFO] [stderr] | ^^^ help: try using a char instead: `']'` [INFO] [stderr] | [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: you don't need to add `&` to all patterns [INFO] [stderr] --> src/watcher.rs:158:17 [INFO] [stderr] | [INFO] [stderr] 158 | / match element { [INFO] [stderr] 159 | | &WatchedElement::Binding(ref binding) => self.process(binding), [INFO] [stderr] 160 | | &WatchedElement::Config(_) => update = true [INFO] [stderr] 161 | | }; [INFO] [stderr] | |_________________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::match_ref_pats)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 158 | match *element { [INFO] [stderr] 159 | WatchedElement::Binding(ref binding) => self.process(binding), [INFO] [stderr] 160 | WatchedElement::Config(_) => update = true [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/watcher.rs:192:13 [INFO] [stderr] | [INFO] [stderr] 192 | / if let &WatchedElement::Binding(ref binding) = watched_element { [INFO] [stderr] 193 | | self.process(binding); [INFO] [stderr] 194 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 192 | if let WatchedElement::Binding(ref binding) = *watched_element { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/watcher.rs:203:9 [INFO] [stderr] | [INFO] [stderr] 203 | / match self { [INFO] [stderr] 204 | | &WatchedElement::Binding(ref binding) => binding.from.as_path(), [INFO] [stderr] 205 | | &WatchedElement::Config(ref config_file) => config_file.as_path() [INFO] [stderr] 206 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 203 | match *self { [INFO] [stderr] 204 | WatchedElement::Binding(ref binding) => binding.from.as_path(), [INFO] [stderr] 205 | WatchedElement::Config(ref config_file) => config_file.as_path() [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/variables.rs:50:34 [INFO] [stderr] | [INFO] [stderr] 50 | if value.starts_with("@") { [INFO] [stderr] | ^^^ help: try using a char instead: `'@'` [INFO] [stderr] | [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: called `.get().unwrap()` on a HashMap. Using `[]` is more clear and more concise [INFO] [stderr] --> src/variables.rs:51:25 [INFO] [stderr] | [INFO] [stderr] 51 | let i = recto.get(&key[..]).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `&recto[&key[..]]` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::get_unwrap)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a HashMap. Using `[]` is more clear and more concise [INFO] [stderr] --> src/variables.rs:59:21 [INFO] [stderr] | [INFO] [stderr] 59 | let i = recto.get(&key[..]).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `&recto[&key[..]]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a HashMap. Using `[]` is more clear and more concise [INFO] [stderr] --> src/variables.rs:63:20 [INFO] [stderr] | [INFO] [stderr] 63 | || env.get(deref_key).unwrap() [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `&env[deref_key]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/variables.rs:130:9 [INFO] [stderr] | [INFO] [stderr] 130 | / match self.elements[a].get_mut() { [INFO] [stderr] 131 | | &mut Node::Root(mut _size_a) => { [INFO] [stderr] 132 | | match self.elements[b].get() { [INFO] [stderr] 133 | | Node::Root(_size_b) => { [INFO] [stderr] ... | [INFO] [stderr] 142 | | panic!("Unexepected child element: Child({})", r) [INFO] [stderr] 143 | | }; [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 130 | match *self.elements[a].get_mut() { [INFO] [stderr] 131 | Node::Root(mut _size_a) => { [INFO] [stderr] 132 | match self.elements[b].get() { [INFO] [stderr] 133 | Node::Root(_size_b) => { [INFO] [stderr] 134 | _size_a += _size_b; [INFO] [stderr] 135 | self.elements[b].set(Node::Child(a)); [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] Finished dev [unoptimized + debuginfo] target(s) in 5.71s [INFO] running `"docker" "inspect" "34564e55db0a39782b4cce1d1b0f239008d6edee3b5e34b5722ae0ac6049dedb"` [INFO] running `"docker" "rm" "-f" "34564e55db0a39782b4cce1d1b0f239008d6edee3b5e34b5722ae0ac6049dedb"` [INFO] [stdout] 34564e55db0a39782b4cce1d1b0f239008d6edee3b5e34b5722ae0ac6049dedb