[INFO] updating cached repository buster/rrun [INFO] running `"git" "fetch" "--all"` [INFO] [stdout] Fetching origin [INFO] [stderr] From git://github.com/buster/rrun [INFO] [stderr] * branch HEAD -> FETCH_HEAD [INFO] running `"git" "clone" "work/cache/sources/gh/buster/rrun" "work/ex/clippy-test-run/sources/stable/gh/buster/rrun"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable/gh/buster/rrun'... [INFO] [stderr] done. [INFO] running `"git" "clone" "work/cache/sources/gh/buster/rrun" "work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/buster/rrun"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/buster/rrun'... [INFO] [stderr] done. [INFO] running `"git" "rev-parse" "HEAD"` [INFO] [stdout] e281eed6eb3d7492261b48405a29fdcdfa067fb0 [INFO] sha for GitHub repo buster/rrun: e281eed6eb3d7492261b48405a29fdcdfa067fb0 [INFO] validating manifest of buster/rrun 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 buster/rrun 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 buster/rrun [INFO] finished frobbing buster/rrun [INFO] frobbed toml for buster/rrun written to work/ex/clippy-test-run/sources/stable/gh/buster/rrun/Cargo.toml [INFO] started frobbing buster/rrun [INFO] finished frobbing buster/rrun [INFO] frobbed toml for buster/rrun written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/buster/rrun/Cargo.toml [INFO] crate buster/rrun 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 buster/rrun against stable for clippy-test-run [INFO] running `"docker" "create" "-v" "/mnt/big/crater/work/local/target-dirs/clippy-test-run/worker-2/stable:/opt/crater/target:rw,Z" "-v" "/mnt/big/crater/work/ex/clippy-test-run/sources/stable/gh/buster/rrun:/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] 289f00ec519999194d0363cf2c25c518f7005de0aea8f356c71ccc655150aa2f [INFO] running `"docker" "start" "-a" "289f00ec519999194d0363cf2c25c518f7005de0aea8f356c71ccc655150aa2f"` [INFO] [stderr] Compiling cairo-rs v0.3.0 [INFO] [stderr] Compiling gdk-pixbuf v0.3.0 [INFO] [stderr] Compiling gio v0.3.0 [INFO] [stderr] Compiling gdk v0.7.0 [INFO] [stderr] Compiling gtk v0.3.0 [INFO] [stderr] Compiling gio-sys v0.5.0 [INFO] [stderr] Compiling gdk-pixbuf-sys v0.5.0 [INFO] [stderr] Compiling pango-sys v0.5.0 [INFO] [stderr] Compiling cairo-sys-rs v0.5.0 [INFO] [stderr] Compiling atk-sys v0.5.0 [INFO] [stderr] Compiling gdk-sys v0.5.0 [INFO] [stderr] Compiling gtk-sys v0.5.0 [INFO] [stderr] Checking glib-sys v0.5.0 [INFO] [stderr] Checking regex v0.2.6 [INFO] [stderr] Checking gobject-sys v0.5.0 [INFO] [stderr] Checking env_logger v0.5.3 [INFO] [stderr] Checking glib v0.4.1 [INFO] [stderr] Checking pango v0.3.0 [INFO] [stderr] Checking rrun v0.2.3 (/opt/crater/workdir) [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/externalautocompleter.rs:18:13 [INFO] [stderr] | [INFO] [stderr] 18 | tpe: tpe, [INFO] [stderr] | ^^^^^^^^ help: replace it with: `tpe` [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/externalautocompleter.rs:19:13 [INFO] [stderr] | [INFO] [stderr] 19 | command: command, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `command` [INFO] [stderr] | [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/externalautocompleter.rs:20:13 [INFO] [stderr] | [INFO] [stderr] 20 | trigger: trigger, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `trigger` [INFO] [stderr] | [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/externalrunner.rs:14:13 [INFO] [stderr] | [INFO] [stderr] 14 | tpe: tpe, [INFO] [stderr] | ^^^^^^^^ help: replace it with: `tpe` [INFO] [stderr] | [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/externalrunner.rs:15:13 [INFO] [stderr] | [INFO] [stderr] 15 | command: command, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `command` [INFO] [stderr] | [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/externalautocompleter.rs:18:13 [INFO] [stderr] | [INFO] [stderr] 18 | tpe: tpe, [INFO] [stderr] | ^^^^^^^^ help: replace it with: `tpe` [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/externalautocompleter.rs:19:13 [INFO] [stderr] | [INFO] [stderr] 19 | command: command, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `command` [INFO] [stderr] | [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/externalautocompleter.rs:20:13 [INFO] [stderr] | [INFO] [stderr] 20 | trigger: trigger, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `trigger` [INFO] [stderr] | [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/externalrunner.rs:14:13 [INFO] [stderr] | [INFO] [stderr] 14 | tpe: tpe, [INFO] [stderr] | ^^^^^^^^ help: replace it with: `tpe` [INFO] [stderr] | [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/externalrunner.rs:15:13 [INFO] [stderr] | [INFO] [stderr] 15 | command: command, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `command` [INFO] [stderr] | [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: unnecessary parentheses around method argument [INFO] [stderr] --> src/externalautocompleter.rs:43:66 [INFO] [stderr] | [INFO] [stderr] 43 | .fold(self.command.replace("{}", sub_query), (|a, (i, e)| a.replace(&format!("{{{}}}", i), e.as_str()))); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove these parentheses [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_parens)] on by default [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/externalrunner.rs:13:9 [INFO] [stderr] | [INFO] [stderr] 13 | / return Box::new(ExternalRunner { [INFO] [stderr] 14 | | tpe: tpe, [INFO] [stderr] 15 | | command: command, [INFO] [stderr] 16 | | }); [INFO] [stderr] | |___________^ [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] help: remove `return` as shown [INFO] [stderr] | [INFO] [stderr] 13 | Box::new(ExternalRunner { [INFO] [stderr] 14 | tpe: tpe, [INFO] [stderr] 15 | command: command, [INFO] [stderr] 16 | }) [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: use of deprecated item 'std::env::home_dir': This function's behavior is unexpected and probably not what you want. Consider using the home_dir function from https://crates.io/crates/dirs instead. [INFO] [stderr] --> src/main.rs:61:34 [INFO] [stderr] | [INFO] [stderr] 61 | let config_directory = match env::home_dir() { [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(deprecated)] on by default [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around method argument [INFO] [stderr] --> src/externalautocompleter.rs:43:66 [INFO] [stderr] | [INFO] [stderr] 43 | .fold(self.command.replace("{}", sub_query), (|a, (i, e)| a.replace(&format!("{{{}}}", i), e.as_str()))); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove these parentheses [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_parens)] on by default [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/externalrunner.rs:13:9 [INFO] [stderr] | [INFO] [stderr] 13 | / return Box::new(ExternalRunner { [INFO] [stderr] 14 | | tpe: tpe, [INFO] [stderr] 15 | | command: command, [INFO] [stderr] 16 | | }); [INFO] [stderr] | |___________^ [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] help: remove `return` as shown [INFO] [stderr] | [INFO] [stderr] 13 | Box::new(ExternalRunner { [INFO] [stderr] 14 | tpe: tpe, [INFO] [stderr] 15 | command: command, [INFO] [stderr] 16 | }) [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: use of deprecated item 'std::env::home_dir': This function's behavior is unexpected and probably not what you want. Consider using the home_dir function from https://crates.io/crates/dirs instead. [INFO] [stderr] --> src/main.rs:61:34 [INFO] [stderr] | [INFO] [stderr] 61 | let config_directory = match env::home_dir() { [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(deprecated)] on by default [INFO] [stderr] [INFO] [stderr] warning: use of `unwrap_or` followed by a function call [INFO] [stderr] --> src/engine.rs:35:91 [INFO] [stderr] | [INFO] [stderr] 35 | completion.get("command").and_then(|c| c.as_str()).map(|c| c.to_string()).unwrap_or("".to_string()), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| "".to_string())` [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 function call [INFO] [stderr] --> src/engine.rs:36:91 [INFO] [stderr] | [INFO] [stderr] 36 | completion.get("trigger").and_then(|c| c.as_str()).map(|c| c.to_string()).unwrap_or("(.*)".to_string()) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| "(.*)".to_string())` [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: identical conversion [INFO] [stderr] --> src/engine.rs:56:41 [INFO] [stderr] | [INFO] [stderr] 56 | runners_by_type.insert(key, group.into_iter().collect_vec()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: consider removing `.into_iter()`: `group` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::identity_conversion)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: `ref` on an entire `let` pattern is discouraged, take a reference with `&` instead [INFO] [stderr] --> src/engine.rs:74:13 [INFO] [stderr] | [INFO] [stderr] 74 | let ref runner = match self.runners.get(&completion.tpe) { [INFO] [stderr] | ^^^^^^^^^^ [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] help: try [INFO] [stderr] | [INFO] [stderr] 74 | let runner = &(match self.runners.get(&completion.tpe) { [INFO] [stderr] 75 | Some(values) if values.len() >= 1 => &values[0], [INFO] [stderr] 76 | Some(_) => return Err("Runner returned zero sized completions".to_owned()), [INFO] [stderr] 77 | None => return Err("Runner returned None".to_owned()), [INFO] [stderr] 78 | }); [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: length comparison to one [INFO] [stderr] --> src/engine.rs:75:29 [INFO] [stderr] | [INFO] [stderr] 75 | Some(values) if values.len() >= 1 => &values[0], [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!values.is_empty()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::len_zero)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: methods called `new` usually return `Self` [INFO] [stderr] --> src/externalautocompleter.rs:15:5 [INFO] [stderr] | [INFO] [stderr] 15 | / pub fn new(tpe: String, command: String, trigger: String) -> Box { [INFO] [stderr] 16 | | debug!("Instantianting ExternalAutoCompleter(tpe={}, command={}, trigger={})", tpe, command, trigger); [INFO] [stderr] 17 | | Box::new(ExternalAutoCompleter { [INFO] [stderr] 18 | | tpe: tpe, [INFO] [stderr] ... | [INFO] [stderr] 21 | | }) [INFO] [stderr] 22 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::new_ret_no_self)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_ret_no_self [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/externalautocompleter.rs:29:29 [INFO] [stderr] | [INFO] [stderr] 29 | let is_applicable = trigger_match.len() > 0; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!trigger_match.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/externalautocompleter.rs:41:16 [INFO] [stderr] | [INFO] [stderr] 41 | if self.command.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!self.command.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/externalautocompleter.rs:58:41 [INFO] [stderr] | [INFO] [stderr] 58 | let cells = c.split("\t").collect::>(); [INFO] [stderr] | ^^^^ help: try using a char instead: `'\t'` [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: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/main.rs:88:5 [INFO] [stderr] | [INFO] [stderr] 88 | / match config_file.read_to_string(&mut toml) { [INFO] [stderr] 89 | | Err(why) => panic!("couldn't read Configfile ~/.config/rrun/config.toml: {}", Error::description(&why)), [INFO] [stderr] 90 | | Ok(_) => (), [INFO] [stderr] 91 | | } [INFO] [stderr] | |_____^ help: try this: `if let Err(why) = config_file.read_to_string(&mut toml) { panic!("couldn't read Configfile ~/.config/rrun/config.toml: {}", Error::description(&why)) }` [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/main.rs:100:5 [INFO] [stderr] | [INFO] [stderr] 100 | / match file.read_to_string(&mut content) { [INFO] [stderr] 101 | | Err(why) => panic!("couldn't read file {:?}: {}", file, Error::description(&why)), [INFO] [stderr] 102 | | Ok(_) => (), [INFO] [stderr] 103 | | } [INFO] [stderr] | |_____^ help: try this: `if let Err(why) = file.read_to_string(&mut content) { panic!("couldn't read file {:?}: {}", file, Error::description(&why)) }` [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/main.rs:202:21 [INFO] [stderr] | [INFO] [stderr] 202 | let ref compls_vec = *current_completions; [INFO] [stderr] | ----^^^^^^^^^^^^^^------------------------ help: try: `let compls_vec = &(*current_completions);` [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: length comparison to zero [INFO] [stderr] --> src/main.rs:218:24 [INFO] [stderr] | [INFO] [stderr] 218 | if output.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!output.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: use of `unwrap_or` followed by a function call [INFO] [stderr] --> src/engine.rs:35:91 [INFO] [stderr] | [INFO] [stderr] 35 | completion.get("command").and_then(|c| c.as_str()).map(|c| c.to_string()).unwrap_or("".to_string()), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| "".to_string())` [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 function call [INFO] [stderr] --> src/engine.rs:36:91 [INFO] [stderr] | [INFO] [stderr] 36 | completion.get("trigger").and_then(|c| c.as_str()).map(|c| c.to_string()).unwrap_or("(.*)".to_string()) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| "(.*)".to_string())` [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: identical conversion [INFO] [stderr] --> src/engine.rs:56:41 [INFO] [stderr] | [INFO] [stderr] 56 | runners_by_type.insert(key, group.into_iter().collect_vec()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: consider removing `.into_iter()`: `group` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::identity_conversion)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: `ref` on an entire `let` pattern is discouraged, take a reference with `&` instead [INFO] [stderr] --> src/engine.rs:74:13 [INFO] [stderr] | [INFO] [stderr] 74 | let ref runner = match self.runners.get(&completion.tpe) { [INFO] [stderr] | ^^^^^^^^^^ [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] help: try [INFO] [stderr] | [INFO] [stderr] 74 | let runner = &(match self.runners.get(&completion.tpe) { [INFO] [stderr] 75 | Some(values) if values.len() >= 1 => &values[0], [INFO] [stderr] 76 | Some(_) => return Err("Runner returned zero sized completions".to_owned()), [INFO] [stderr] 77 | None => return Err("Runner returned None".to_owned()), [INFO] [stderr] 78 | }); [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: length comparison to one [INFO] [stderr] --> src/engine.rs:75:29 [INFO] [stderr] | [INFO] [stderr] 75 | Some(values) if values.len() >= 1 => &values[0], [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!values.is_empty()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::len_zero)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: methods called `new` usually return `Self` [INFO] [stderr] --> src/externalautocompleter.rs:15:5 [INFO] [stderr] | [INFO] [stderr] 15 | / pub fn new(tpe: String, command: String, trigger: String) -> Box { [INFO] [stderr] 16 | | debug!("Instantianting ExternalAutoCompleter(tpe={}, command={}, trigger={})", tpe, command, trigger); [INFO] [stderr] 17 | | Box::new(ExternalAutoCompleter { [INFO] [stderr] 18 | | tpe: tpe, [INFO] [stderr] ... | [INFO] [stderr] 21 | | }) [INFO] [stderr] 22 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::new_ret_no_self)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_ret_no_self [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/externalautocompleter.rs:29:29 [INFO] [stderr] | [INFO] [stderr] 29 | let is_applicable = trigger_match.len() > 0; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!trigger_match.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/externalautocompleter.rs:41:16 [INFO] [stderr] | [INFO] [stderr] 41 | if self.command.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!self.command.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/externalautocompleter.rs:58:41 [INFO] [stderr] | [INFO] [stderr] 58 | let cells = c.split("\t").collect::>(); [INFO] [stderr] | ^^^^ help: try using a char instead: `'\t'` [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: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/main.rs:88:5 [INFO] [stderr] | [INFO] [stderr] 88 | / match config_file.read_to_string(&mut toml) { [INFO] [stderr] 89 | | Err(why) => panic!("couldn't read Configfile ~/.config/rrun/config.toml: {}", Error::description(&why)), [INFO] [stderr] 90 | | Ok(_) => (), [INFO] [stderr] 91 | | } [INFO] [stderr] | |_____^ help: try this: `if let Err(why) = config_file.read_to_string(&mut toml) { panic!("couldn't read Configfile ~/.config/rrun/config.toml: {}", Error::description(&why)) }` [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/main.rs:100:5 [INFO] [stderr] | [INFO] [stderr] 100 | / match file.read_to_string(&mut content) { [INFO] [stderr] 101 | | Err(why) => panic!("couldn't read file {:?}: {}", file, Error::description(&why)), [INFO] [stderr] 102 | | Ok(_) => (), [INFO] [stderr] 103 | | } [INFO] [stderr] | |_____^ help: try this: `if let Err(why) = file.read_to_string(&mut content) { panic!("couldn't read file {:?}: {}", file, Error::description(&why)) }` [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/main.rs:202:21 [INFO] [stderr] | [INFO] [stderr] 202 | let ref compls_vec = *current_completions; [INFO] [stderr] | ----^^^^^^^^^^^^^^------------------------ help: try: `let compls_vec = &(*current_completions);` [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: length comparison to zero [INFO] [stderr] --> src/main.rs:218:24 [INFO] [stderr] | [INFO] [stderr] 218 | if output.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!output.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] Finished dev [unoptimized + debuginfo] target(s) in 1m 29s [INFO] running `"docker" "inspect" "289f00ec519999194d0363cf2c25c518f7005de0aea8f356c71ccc655150aa2f"` [INFO] running `"docker" "rm" "-f" "289f00ec519999194d0363cf2c25c518f7005de0aea8f356c71ccc655150aa2f"` [INFO] [stdout] 289f00ec519999194d0363cf2c25c518f7005de0aea8f356c71ccc655150aa2f