[INFO] crate eidolon 1.4.4 is already in cache [INFO] extracting crate eidolon 1.4.4 into work/ex/clippy-test-run/sources/stable/reg/eidolon/1.4.4 [INFO] extracting crate eidolon 1.4.4 into work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/eidolon/1.4.4 [INFO] validating manifest of eidolon-1.4.4 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 eidolon-1.4.4 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 eidolon-1.4.4 [INFO] finished frobbing eidolon-1.4.4 [INFO] frobbed toml for eidolon-1.4.4 written to work/ex/clippy-test-run/sources/stable/reg/eidolon/1.4.4/Cargo.toml [INFO] started frobbing eidolon-1.4.4 [INFO] finished frobbing eidolon-1.4.4 [INFO] frobbed toml for eidolon-1.4.4 written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/eidolon/1.4.4/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 eidolon-1.4.4 against stable for clippy-test-run [INFO] running `"docker" "create" "-v" "/mnt/big/crater/work/local/target-dirs/clippy-test-run/worker-0/stable:/opt/crater/target:rw,Z" "-v" "/mnt/big/crater/work/ex/clippy-test-run/sources/stable/reg/eidolon/1.4.4:/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] f83cf62579925e8f7b478bce8cd1dc23a768c5d21e6a18aae40f44fdb403a192 [INFO] running `"docker" "start" "-a" "f83cf62579925e8f7b478bce8cd1dc23a768c5d21e6a18aae40f44fdb403a192"` [INFO] [stderr] Checking butlerd v0.1.2 [INFO] [stderr] Checking eidolon v1.4.4 (/opt/crater/workdir) [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/eidolon.rs:64:25 [INFO] [stderr] | [INFO] [stderr] 64 | command: command, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `command` [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/eidolon.rs:64:25 [INFO] [stderr] | [INFO] [stderr] 64 | command: command, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `command` [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] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/eidolon.rs:65:25 [INFO] [stderr] | [INFO] [stderr] 65 | typeg: typeg, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `typeg` [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/eidolon.rs:65:25 [INFO] [stderr] | [INFO] [stderr] 65 | typeg: typeg, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `typeg` [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/eidolon.rs:213:17 [INFO] [stderr] | [INFO] [stderr] 213 | name: name, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `name` [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/eidolon.rs:213:17 [INFO] [stderr] | [INFO] [stderr] 213 | name: name, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `name` [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] | [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/eidolon.rs:214:17 [INFO] [stderr] | [INFO] [stderr] 214 | command: command, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `command` [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/eidolon.rs:214:17 [INFO] [stderr] | [INFO] [stderr] 214 | 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] | [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/eidolon.rs:331:25 [INFO] [stderr] | [INFO] [stderr] 331 | command: command, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `command` [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/eidolon.rs:331:25 [INFO] [stderr] | [INFO] [stderr] 331 | 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/eidolon.rs:367:21 [INFO] [stderr] | [INFO] [stderr] 367 | 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/eidolon.rs:367:21 [INFO] [stderr] | [INFO] [stderr] 367 | 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] | [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: unused imports: `Read`, `prelude::*` [INFO] [stderr] --> src/eidolon.rs:9:15 [INFO] [stderr] | [INFO] [stderr] 9 | use std::io::{prelude::*, Read}; [INFO] [stderr] | ^^^^^^^^^^ ^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_imports)] on by default [INFO] [stderr] [INFO] [stderr] warning: this if statement can be collapsed [INFO] [stderr] --> src/eidolon.rs:45:13 [INFO] [stderr] | [INFO] [stderr] 45 | / if m.is_ok() { [INFO] [stderr] 46 | | if m.unwrap().is_dir() { [INFO] [stderr] 47 | | let mut command = String::new(); [INFO] [stderr] 48 | | fs::File::open(gd() + &game + "/start") [INFO] [stderr] ... | [INFO] [stderr] 70 | | } [INFO] [stderr] 71 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::collapsible_if)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 45 | if m.is_ok() && m.unwrap().is_dir() { [INFO] [stderr] 46 | let mut command = String::new(); [INFO] [stderr] 47 | fs::File::open(gd() + &game + "/start") [INFO] [stderr] 48 | .unwrap() [INFO] [stderr] 49 | .read_to_string(&mut command) [INFO] [stderr] 50 | .unwrap(); [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/eidolon.rs:136:21 [INFO] [stderr] | [INFO] [stderr] 136 | return Ok("Launched through butler".to_string()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Ok("Launched through butler".to_string())` [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/eidolon.rs:144:25 [INFO] [stderr] | [INFO] [stderr] 144 | / return Err(String::from_utf8_lossy(&result.stderr) [INFO] [stderr] 145 | | .into_owned() [INFO] [stderr] 146 | | .to_string()); [INFO] [stderr] | |__________________________________________^ [INFO] [stderr] | [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] 144 | Err(String::from_utf8_lossy(&result.stderr) [INFO] [stderr] 145 | .into_owned() [INFO] [stderr] 146 | .to_string()) [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/eidolon.rs:148:25 [INFO] [stderr] | [INFO] [stderr] 148 | / return Ok(String::from_utf8_lossy(&result.stdout) [INFO] [stderr] 149 | | .into_owned() [INFO] [stderr] 150 | | .to_string()); [INFO] [stderr] | |__________________________________________^ [INFO] [stderr] | [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] 148 | Ok(String::from_utf8_lossy(&result.stdout) [INFO] [stderr] 149 | .into_owned() [INFO] [stderr] 150 | .to_string()) [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/eidolon.rs:160:25 [INFO] [stderr] | [INFO] [stderr] 160 | / return Err(String::from_utf8_lossy(&result.stderr) [INFO] [stderr] 161 | | .into_owned() [INFO] [stderr] 162 | | .to_string()); [INFO] [stderr] | |__________________________________________^ [INFO] [stderr] | [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] 160 | Err(String::from_utf8_lossy(&result.stderr) [INFO] [stderr] 161 | .into_owned() [INFO] [stderr] 162 | .to_string()) [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/eidolon.rs:164:25 [INFO] [stderr] | [INFO] [stderr] 164 | / return Ok(String::from_utf8_lossy(&result.stdout) [INFO] [stderr] 165 | | .into_owned() [INFO] [stderr] 166 | | .to_string()); [INFO] [stderr] | |__________________________________________^ [INFO] [stderr] | [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] 164 | Ok(String::from_utf8_lossy(&result.stdout) [INFO] [stderr] 165 | .into_owned() [INFO] [stderr] 166 | .to_string()) [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/eidolon.rs:232:9 [INFO] [stderr] | [INFO] [stderr] 232 | return Err("No such game".to_string()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Err("No such game".to_string())` [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/eidolon.rs:253:17 [INFO] [stderr] | [INFO] [stderr] 253 | / return Ok(games_list [INFO] [stderr] 254 | | .lines() [INFO] [stderr] 255 | | .filter(|x| x.find("wine").is_some()) [INFO] [stderr] 256 | | .map(|x| { [INFO] [stderr] ... | [INFO] [stderr] 259 | | }) [INFO] [stderr] 260 | | .collect::>()); [INFO] [stderr] | |_________________________________________________________^ [INFO] [stderr] | [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] 253 | Ok(games_list [INFO] [stderr] 254 | .lines() [INFO] [stderr] 255 | .filter(|x| x.find("wine").is_some()) [INFO] [stderr] 256 | .map(|x| { [INFO] [stderr] 257 | let n = x.split("|").collect::>(); [INFO] [stderr] 258 | (String::from(n[0].trim()), String::from(n[1].trim())) [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/eidolon.rs:262:17 [INFO] [stderr] | [INFO] [stderr] 262 | return Err("Lutris not installed".to_string()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Err("Lutris not installed".to_string())` [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/eidolon.rs:265:13 [INFO] [stderr] | [INFO] [stderr] 265 | return Err("Lutris not installed".to_string()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Err("Lutris not installed".to_string())` [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/eidolon.rs:415:9 [INFO] [stderr] | [INFO] [stderr] 415 | return None; [INFO] [stderr] | ^^^^^^^^^^^^ help: remove `return` as shown: `None` [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 `else { if .. }` block can be collapsed [INFO] [stderr] --> src/eidolon.rs:612:16 [INFO] [stderr] | [INFO] [stderr] 612 | } else { [INFO] [stderr] | ________________^ [INFO] [stderr] 613 | | if fs::metadata(get_home() + "/.config/eidolon/config").is_ok() { [INFO] [stderr] 614 | | convert_config(); [INFO] [stderr] 615 | | true [INFO] [stderr] ... | [INFO] [stderr] 620 | | } [INFO] [stderr] 621 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 612 | } else if fs::metadata(get_home() + "/.config/eidolon/config").is_ok() { [INFO] [stderr] 613 | convert_config(); [INFO] [stderr] 614 | true [INFO] [stderr] 615 | } else if fs::metadata(get_home() + "/.config/eidolon/config.json").is_ok() { [INFO] [stderr] 616 | true [INFO] [stderr] 617 | } else { [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/eidolon.rs:625:9 [INFO] [stderr] | [INFO] [stderr] 625 | return get_home() + "/.config/eidolon/games/"; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `get_home() + "/.config/eidolon/games/"` [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/eidolon.rs:641:9 [INFO] [stderr] | [INFO] [stderr] 641 | return String::from(total_formatted); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `String::from(total_formatted)` [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/eidolon.rs:647:9 [INFO] [stderr] | [INFO] [stderr] 647 | return base; [INFO] [stderr] | ^^^^^^^^^^^^ help: remove `return` as shown: `base` [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/eidolon.rs:651:9 [INFO] [stderr] | [INFO] [stderr] 651 | return String::from(env::home_dir().unwrap().to_str().unwrap()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `String::from(env::home_dir().unwrap().to_str().unwrap())` [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: 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/eidolon.rs:651:29 [INFO] [stderr] | [INFO] [stderr] 651 | return String::from(env::home_dir().unwrap().to_str().unwrap()); [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(deprecated)] on by default [INFO] [stderr] [INFO] [stderr] warning: unused imports: `Read`, `prelude::*` [INFO] [stderr] --> src/eidolon.rs:9:15 [INFO] [stderr] | [INFO] [stderr] 9 | use std::io::{prelude::*, Read}; [INFO] [stderr] | ^^^^^^^^^^ ^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_imports)] on by default [INFO] [stderr] [INFO] [stderr] warning: this if statement can be collapsed [INFO] [stderr] --> src/eidolon.rs:45:13 [INFO] [stderr] | [INFO] [stderr] 45 | / if m.is_ok() { [INFO] [stderr] 46 | | if m.unwrap().is_dir() { [INFO] [stderr] 47 | | let mut command = String::new(); [INFO] [stderr] 48 | | fs::File::open(gd() + &game + "/start") [INFO] [stderr] ... | [INFO] [stderr] 70 | | } [INFO] [stderr] 71 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::collapsible_if)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 45 | if m.is_ok() && m.unwrap().is_dir() { [INFO] [stderr] 46 | let mut command = String::new(); [INFO] [stderr] 47 | fs::File::open(gd() + &game + "/start") [INFO] [stderr] 48 | .unwrap() [INFO] [stderr] 49 | .read_to_string(&mut command) [INFO] [stderr] 50 | .unwrap(); [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/eidolon.rs:136:21 [INFO] [stderr] | [INFO] [stderr] 136 | return Ok("Launched through butler".to_string()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Ok("Launched through butler".to_string())` [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/eidolon.rs:144:25 [INFO] [stderr] | [INFO] [stderr] 144 | / return Err(String::from_utf8_lossy(&result.stderr) [INFO] [stderr] 145 | | .into_owned() [INFO] [stderr] 146 | | .to_string()); [INFO] [stderr] | |__________________________________________^ [INFO] [stderr] | [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] 144 | Err(String::from_utf8_lossy(&result.stderr) [INFO] [stderr] 145 | .into_owned() [INFO] [stderr] 146 | .to_string()) [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/eidolon.rs:148:25 [INFO] [stderr] | [INFO] [stderr] 148 | / return Ok(String::from_utf8_lossy(&result.stdout) [INFO] [stderr] 149 | | .into_owned() [INFO] [stderr] 150 | | .to_string()); [INFO] [stderr] | |__________________________________________^ [INFO] [stderr] | [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] 148 | Ok(String::from_utf8_lossy(&result.stdout) [INFO] [stderr] 149 | .into_owned() [INFO] [stderr] 150 | .to_string()) [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/eidolon.rs:160:25 [INFO] [stderr] | [INFO] [stderr] 160 | / return Err(String::from_utf8_lossy(&result.stderr) [INFO] [stderr] 161 | | .into_owned() [INFO] [stderr] 162 | | .to_string()); [INFO] [stderr] | |__________________________________________^ [INFO] [stderr] | [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] 160 | Err(String::from_utf8_lossy(&result.stderr) [INFO] [stderr] 161 | .into_owned() [INFO] [stderr] 162 | .to_string()) [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/eidolon.rs:164:25 [INFO] [stderr] | [INFO] [stderr] 164 | / return Ok(String::from_utf8_lossy(&result.stdout) [INFO] [stderr] 165 | | .into_owned() [INFO] [stderr] 166 | | .to_string()); [INFO] [stderr] | |__________________________________________^ [INFO] [stderr] | [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] 164 | Ok(String::from_utf8_lossy(&result.stdout) [INFO] [stderr] 165 | .into_owned() [INFO] [stderr] 166 | .to_string()) [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/eidolon.rs:232:9 [INFO] [stderr] | [INFO] [stderr] 232 | return Err("No such game".to_string()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Err("No such game".to_string())` [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/eidolon.rs:253:17 [INFO] [stderr] | [INFO] [stderr] 253 | / return Ok(games_list [INFO] [stderr] 254 | | .lines() [INFO] [stderr] 255 | | .filter(|x| x.find("wine").is_some()) [INFO] [stderr] 256 | | .map(|x| { [INFO] [stderr] ... | [INFO] [stderr] 259 | | }) [INFO] [stderr] 260 | | .collect::>()); [INFO] [stderr] | |_________________________________________________________^ [INFO] [stderr] | [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] 253 | Ok(games_list [INFO] [stderr] 254 | .lines() [INFO] [stderr] 255 | .filter(|x| x.find("wine").is_some()) [INFO] [stderr] 256 | .map(|x| { [INFO] [stderr] 257 | let n = x.split("|").collect::>(); [INFO] [stderr] 258 | (String::from(n[0].trim()), String::from(n[1].trim())) [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/eidolon.rs:262:17 [INFO] [stderr] | [INFO] [stderr] 262 | return Err("Lutris not installed".to_string()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Err("Lutris not installed".to_string())` [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/eidolon.rs:265:13 [INFO] [stderr] | [INFO] [stderr] 265 | return Err("Lutris not installed".to_string()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Err("Lutris not installed".to_string())` [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/eidolon.rs:415:9 [INFO] [stderr] | [INFO] [stderr] 415 | return None; [INFO] [stderr] | ^^^^^^^^^^^^ help: remove `return` as shown: `None` [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 `else { if .. }` block can be collapsed [INFO] [stderr] --> src/eidolon.rs:612:16 [INFO] [stderr] | [INFO] [stderr] 612 | } else { [INFO] [stderr] | ________________^ [INFO] [stderr] 613 | | if fs::metadata(get_home() + "/.config/eidolon/config").is_ok() { [INFO] [stderr] 614 | | convert_config(); [INFO] [stderr] 615 | | true [INFO] [stderr] ... | [INFO] [stderr] 620 | | } [INFO] [stderr] 621 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 612 | } else if fs::metadata(get_home() + "/.config/eidolon/config").is_ok() { [INFO] [stderr] 613 | convert_config(); [INFO] [stderr] 614 | true [INFO] [stderr] 615 | } else if fs::metadata(get_home() + "/.config/eidolon/config.json").is_ok() { [INFO] [stderr] 616 | true [INFO] [stderr] 617 | } else { [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/eidolon.rs:625:9 [INFO] [stderr] | [INFO] [stderr] 625 | return get_home() + "/.config/eidolon/games/"; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `get_home() + "/.config/eidolon/games/"` [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/eidolon.rs:641:9 [INFO] [stderr] | [INFO] [stderr] 641 | return String::from(total_formatted); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `String::from(total_formatted)` [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/eidolon.rs:647:9 [INFO] [stderr] | [INFO] [stderr] 647 | return base; [INFO] [stderr] | ^^^^^^^^^^^^ help: remove `return` as shown: `base` [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/eidolon.rs:651:9 [INFO] [stderr] | [INFO] [stderr] 651 | return String::from(env::home_dir().unwrap().to_str().unwrap()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `String::from(env::home_dir().unwrap().to_str().unwrap())` [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: 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/eidolon.rs:651:29 [INFO] [stderr] | [INFO] [stderr] 651 | return String::from(env::home_dir().unwrap().to_str().unwrap()); [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(deprecated)] on by default [INFO] [stderr] [INFO] [stderr] warning: use of deprecated item 'core::str::::slice_unchecked': use `get_unchecked(begin..end)` instead [INFO] [stderr] --> src/eidolon.rs:388:48 [INFO] [stderr] | [INFO] [stderr] 388 | let outname = contents.slice_unchecked( [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: use of deprecated item 'core::str::::slice_unchecked': use `get_unchecked(begin..end)` instead [INFO] [stderr] --> src/eidolon.rs:396:50 [INFO] [stderr] | [INFO] [stderr] 396 | let appid = contents.slice_unchecked( [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: use of deprecated item 'core::str::::slice_unchecked': use `get_unchecked(begin..end)` instead [INFO] [stderr] --> src/eidolon.rs:400:49 [INFO] [stderr] | [INFO] [stderr] 400 | let name = contents.slice_unchecked( [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: use of deprecated item 'core::str::::slice_unchecked': use `get_unchecked(begin..end)` instead [INFO] [stderr] --> src/eidolon.rs:388:48 [INFO] [stderr] | [INFO] [stderr] 388 | let outname = contents.slice_unchecked( [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: use of deprecated item 'core::str::::slice_unchecked': use `get_unchecked(begin..end)` instead [INFO] [stderr] --> src/eidolon.rs:396:50 [INFO] [stderr] | [INFO] [stderr] 396 | let appid = contents.slice_unchecked( [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: use of deprecated item 'core::str::::slice_unchecked': use `get_unchecked(begin..end)` instead [INFO] [stderr] --> src/eidolon.rs:400:49 [INFO] [stderr] | [INFO] [stderr] 400 | let name = contents.slice_unchecked( [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/eidolon.rs:177:35 [INFO] [stderr] | [INFO] [stderr] 177 | let res = fs::remove_file(String::from(gd() + create_procname(name).as_ref()) + ".json"); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `String::from()`: `gd() + create_procname(name).as_ref()` [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] error: using `clone` on a double-reference; this will copy the reference instead of cloning the inner type [INFO] [stderr] --> src/eidolon.rs:189:21 [INFO] [stderr] | [INFO] [stderr] 189 | let pname = name.clone(); [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::clone_double_ref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_double_ref [INFO] [stderr] help: try dereferencing it [INFO] [stderr] | [INFO] [stderr] 189 | let pname = &(*name).clone(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] help: or try being explicit about what type to clone [INFO] [stderr] | [INFO] [stderr] 189 | let pname = &str::clone(name); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/eidolon.rs:199:21 [INFO] [stderr] | [INFO] [stderr] 199 | winestr = winestr + "start "; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `winestr += "start "` [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: identical conversion [INFO] [stderr] --> src/eidolon.rs:203:27 [INFO] [stderr] | [INFO] [stderr] 203 | let command = String::from( [INFO] [stderr] | ___________________________^ [INFO] [stderr] 204 | | start [INFO] [stderr] 205 | | + &(path [INFO] [stderr] 206 | | .into_os_string() [INFO] [stderr] ... | [INFO] [stderr] 209 | | .replace(" ", "\\ ")), [INFO] [stderr] 210 | | ); [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] help: consider removing `String::from()` [INFO] [stderr] | [INFO] [stderr] 203 | let command = start [INFO] [stderr] 204 | + &(path [INFO] [stderr] 205 | .into_os_string() [INFO] [stderr] 206 | .into_string() [INFO] [stderr] 207 | .unwrap() [INFO] [stderr] 208 | .replace(" ", "\\ ")); [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/eidolon.rs:257:41 [INFO] [stderr] | [INFO] [stderr] 257 | let n = x.split("|").collect::>(); [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: identical conversion [INFO] [stderr] --> src/eidolon.rs:316:27 [INFO] [stderr] | [INFO] [stderr] 316 | let entries = fs::read_dir(x.to_owned() + "/common") [INFO] [stderr] | ___________________________^ [INFO] [stderr] 317 | | .expect("Can't read in games") [INFO] [stderr] 318 | | .into_iter() [INFO] [stderr] | |____________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] help: consider removing `.into_iter()` [INFO] [stderr] | [INFO] [stderr] 316 | let entries = fs::read_dir(x.to_owned() + "/common") [INFO] [stderr] 317 | .expect("Can't read in games") [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/eidolon.rs:177:35 [INFO] [stderr] | [INFO] [stderr] 177 | let res = fs::remove_file(String::from(gd() + create_procname(name).as_ref()) + ".json"); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `String::from()`: `gd() + create_procname(name).as_ref()` [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] error: using `clone` on a double-reference; this will copy the reference instead of cloning the inner type [INFO] [stderr] --> src/eidolon.rs:189:21 [INFO] [stderr] | [INFO] [stderr] 189 | let pname = name.clone(); [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::clone_double_ref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_double_ref [INFO] [stderr] help: try dereferencing it [INFO] [stderr] | [INFO] [stderr] 189 | let pname = &(*name).clone(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] help: or try being explicit about what type to clone [INFO] [stderr] | [INFO] [stderr] 189 | let pname = &str::clone(name); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/eidolon.rs:199:21 [INFO] [stderr] | [INFO] [stderr] 199 | winestr = winestr + "start "; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `winestr += "start "` [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: identical conversion [INFO] [stderr] --> src/eidolon.rs:203:27 [INFO] [stderr] | [INFO] [stderr] 203 | let command = String::from( [INFO] [stderr] | ___________________________^ [INFO] [stderr] 204 | | start [INFO] [stderr] 205 | | + &(path [INFO] [stderr] 206 | | .into_os_string() [INFO] [stderr] ... | [INFO] [stderr] 209 | | .replace(" ", "\\ ")), [INFO] [stderr] 210 | | ); [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] help: consider removing `String::from()` [INFO] [stderr] | [INFO] [stderr] 203 | let command = start [INFO] [stderr] 204 | + &(path [INFO] [stderr] 205 | .into_os_string() [INFO] [stderr] 206 | .into_string() [INFO] [stderr] 207 | .unwrap() [INFO] [stderr] 208 | .replace(" ", "\\ ")); [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/eidolon.rs:257:41 [INFO] [stderr] | [INFO] [stderr] 257 | let n = x.split("|").collect::>(); [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/eidolon.rs:431:39 [INFO] [stderr] | [INFO] [stderr] 431 | let entry_format = &dir.split("/").collect::>(); [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: equality checks against true are unnecessary [INFO] [stderr] --> src/eidolon.rs:450:16 [INFO] [stderr] | [INFO] [stderr] 450 | if found == true { [INFO] [stderr] | ^^^^^^^^^^^^^ help: try simplifying it as shown: `found` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::bool_comparison)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_comparison [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/eidolon.rs:454:12 [INFO] [stderr] | [INFO] [stderr] 454 | if found_game.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!found_game.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: identical conversion [INFO] [stderr] --> src/eidolon.rs:316:27 [INFO] [stderr] | [INFO] [stderr] 316 | let entries = fs::read_dir(x.to_owned() + "/common") [INFO] [stderr] | ___________________________^ [INFO] [stderr] 317 | | .expect("Can't read in games") [INFO] [stderr] 318 | | .into_iter() [INFO] [stderr] | |____________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] help: consider removing `.into_iter()` [INFO] [stderr] | [INFO] [stderr] 316 | let entries = fs::read_dir(x.to_owned() + "/common") [INFO] [stderr] 317 | .expect("Can't read in games") [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/eidolon.rs:431:39 [INFO] [stderr] | [INFO] [stderr] 431 | let entry_format = &dir.split("/").collect::>(); [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: equality checks against true are unnecessary [INFO] [stderr] --> src/eidolon.rs:450:16 [INFO] [stderr] | [INFO] [stderr] 450 | if found == true { [INFO] [stderr] | ^^^^^^^^^^^^^ help: try simplifying it as shown: `found` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::bool_comparison)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_comparison [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/eidolon.rs:454:12 [INFO] [stderr] | [INFO] [stderr] 454 | if found_game.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!found_game.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: redundant closure found [INFO] [stderr] --> src/eidolon.rs:512:22 [INFO] [stderr] | [INFO] [stderr] 512 | .map(|x| String::from(x)) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: remove closure as shown: `String::from` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_closure)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/eidolon.rs:512:26 [INFO] [stderr] | [INFO] [stderr] 512 | .map(|x| String::from(x)) [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: consider removing `String::from()`: `x` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/eidolon.rs:514:27 [INFO] [stderr] | [INFO] [stderr] 514 | menu_command: String::from(old.menu_command), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `String::from()`: `old.menu_command` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/eidolon.rs:515:29 [INFO] [stderr] | [INFO] [stderr] 515 | prefix_command: String::from(old.prefix_command), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `String::from()`: `old.prefix_command` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/eidolon.rs:538:17 [INFO] [stderr] | [INFO] [stderr] 538 | / String::from( [INFO] [stderr] 539 | | x.as_str() [INFO] [stderr] 540 | | .replace("$HOME", &get_home()) [INFO] [stderr] 541 | | .replace("~", &get_home()), [INFO] [stderr] 542 | | ) [INFO] [stderr] | |_________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] help: consider removing `String::from()` [INFO] [stderr] | [INFO] [stderr] 538 | x.as_str() [INFO] [stderr] 539 | .replace("$HOME", &get_home()) [INFO] [stderr] 540 | .replace("~", &get_home()) [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/eidolon.rs:559:22 [INFO] [stderr] | [INFO] [stderr] 559 | .map(|x| String::from(x.get(1).unwrap().as_str().replace("$HOME", &get_home()))) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `String::from()`: `x.get(1).unwrap().as_str().replace("$HOME", &get_home())` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: this if-then-else expression returns a bool literal [INFO] [stderr] --> src/eidolon.rs:616:20 [INFO] [stderr] | [INFO] [stderr] 616 | } else if fs::metadata(get_home() + "/.config/eidolon/config.json").is_ok() { [INFO] [stderr] | ____________________^ [INFO] [stderr] 617 | | true [INFO] [stderr] 618 | | } else { [INFO] [stderr] 619 | | false [INFO] [stderr] 620 | | } [INFO] [stderr] | |_____________^ help: you can reduce it to: `fs::metadata(get_home() + "/.config/eidolon/config.json").is_ok()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_bool)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_bool [INFO] [stderr] [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> src/eidolon.rs:512:22 [INFO] [stderr] | [INFO] [stderr] 512 | .map(|x| String::from(x)) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: remove closure as shown: `String::from` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_closure)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/eidolon.rs:512:26 [INFO] [stderr] | [INFO] [stderr] 512 | .map(|x| String::from(x)) [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: consider removing `String::from()`: `x` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/eidolon.rs:514:27 [INFO] [stderr] | [INFO] [stderr] 514 | menu_command: String::from(old.menu_command), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `String::from()`: `old.menu_command` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/eidolon.rs:515:29 [INFO] [stderr] | [INFO] [stderr] 515 | prefix_command: String::from(old.prefix_command), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `String::from()`: `old.prefix_command` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/eidolon.rs:538:17 [INFO] [stderr] | [INFO] [stderr] 538 | / String::from( [INFO] [stderr] 539 | | x.as_str() [INFO] [stderr] 540 | | .replace("$HOME", &get_home()) [INFO] [stderr] 541 | | .replace("~", &get_home()), [INFO] [stderr] 542 | | ) [INFO] [stderr] | |_________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] help: consider removing `String::from()` [INFO] [stderr] | [INFO] [stderr] 538 | x.as_str() [INFO] [stderr] 539 | .replace("$HOME", &get_home()) [INFO] [stderr] 540 | .replace("~", &get_home()) [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/eidolon.rs:559:22 [INFO] [stderr] | [INFO] [stderr] 559 | .map(|x| String::from(x.get(1).unwrap().as_str().replace("$HOME", &get_home()))) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `String::from()`: `x.get(1).unwrap().as_str().replace("$HOME", &get_home())` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] error: aborting due to previous error [INFO] [stderr] [INFO] [stderr] warning: this if-then-else expression returns a bool literal [INFO] [stderr] --> src/eidolon.rs:616:20 [INFO] [stderr] | [INFO] [stderr] 616 | } else if fs::metadata(get_home() + "/.config/eidolon/config.json").is_ok() { [INFO] [stderr] | ____________________^ [INFO] [stderr] 617 | | true [INFO] [stderr] 618 | | } else { [INFO] [stderr] 619 | | false [INFO] [stderr] 620 | | } [INFO] [stderr] | |_____________^ help: you can reduce it to: `fs::metadata(get_home() + "/.config/eidolon/config.json").is_ok()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_bool)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_bool [INFO] [stderr] [INFO] [stderr] error: Could not compile `eidolon`. [INFO] [stderr] warning: build failed, waiting for other jobs to finish... [INFO] [stderr] error: aborting due to previous error [INFO] [stderr] [INFO] [stderr] error: Could not compile `eidolon`. [INFO] [stderr] [INFO] [stderr] To learn more, run the command again with --verbose. [INFO] running `"docker" "inspect" "f83cf62579925e8f7b478bce8cd1dc23a768c5d21e6a18aae40f44fdb403a192"` [INFO] running `"docker" "rm" "-f" "f83cf62579925e8f7b478bce8cd1dc23a768c5d21e6a18aae40f44fdb403a192"` [INFO] [stdout] f83cf62579925e8f7b478bce8cd1dc23a768c5d21e6a18aae40f44fdb403a192