[INFO] updating cached repository nicohman/eidolon [INFO] running `"git" "fetch" "--all"` [INFO] [stdout] Fetching origin [INFO] [stderr] From git://github.com/nicohman/eidolon [INFO] [stderr] * branch HEAD -> FETCH_HEAD [INFO] running `"git" "clone" "work/cache/sources/gh/nicohman/eidolon" "work/ex/clippy-test-run/sources/stable/gh/nicohman/eidolon"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable/gh/nicohman/eidolon'... [INFO] [stderr] done. [INFO] running `"git" "clone" "work/cache/sources/gh/nicohman/eidolon" "work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/nicohman/eidolon"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/nicohman/eidolon'... [INFO] [stderr] done. [INFO] running `"git" "rev-parse" "HEAD"` [INFO] [stdout] 638c3b911b96c65a13272e98c3f3be8a40a3f560 [INFO] sha for GitHub repo nicohman/eidolon: 638c3b911b96c65a13272e98c3f3be8a40a3f560 [INFO] validating manifest of nicohman/eidolon 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 nicohman/eidolon 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 nicohman/eidolon [INFO] finished frobbing nicohman/eidolon [INFO] frobbed toml for nicohman/eidolon written to work/ex/clippy-test-run/sources/stable/gh/nicohman/eidolon/Cargo.toml [INFO] started frobbing nicohman/eidolon [INFO] finished frobbing nicohman/eidolon [INFO] frobbed toml for nicohman/eidolon written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/nicohman/eidolon/Cargo.toml [INFO] crate nicohman/eidolon 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 nicohman/eidolon against stable for clippy-test-run [INFO] running `"docker" "create" "-v" "/mnt/big/crater/work/local/target-dirs/clippy-test-run/worker-7/stable:/opt/crater/target:rw,Z" "-v" "/mnt/big/crater/work/ex/clippy-test-run/sources/stable/gh/nicohman/eidolon:/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] b62e816edb104bbc7c0e7d2b43b5b050f907c9cd04a1e0c4f1635cdad553c218 [INFO] running `"docker" "start" "-a" "b62e816edb104bbc7c0e7d2b43b5b050f907c9cd04a1e0c4f1635cdad553c218"` [INFO] [stderr] Compiling openssl v0.10.12 [INFO] [stderr] Compiling native-tls v0.2.1 [INFO] [stderr] Checking crossbeam-epoch v0.5.2 [INFO] [stderr] Checking want v0.0.6 [INFO] [stderr] Checking uuid v0.7.1 [INFO] [stderr] Checking http v0.1.13 [INFO] [stderr] Compiling syn v0.15.6 [INFO] [stderr] Compiling syn v0.14.7 [INFO] [stderr] Checking toml v0.4.10 [INFO] [stderr] Checking serde_json v1.0.27 [INFO] [stderr] Checking tokio-reactor v0.1.3 [INFO] [stderr] Checking serde_urlencoded v0.5.3 [INFO] [stderr] Checking regex v1.0.5 [INFO] [stderr] Checking regex v0.2.5 [INFO] [stderr] Checking crossbeam-deque v0.6.1 [INFO] [stderr] Checking tokio-udp v0.1.2 [INFO] [stderr] Checking tokio-uds v0.2.2 [INFO] [stderr] Checking tokio-tcp v0.1.2 [INFO] [stderr] Checking tokio-threadpool v0.1.7 [INFO] [stderr] Checking os_type v2.2.0 [INFO] [stderr] Compiling structopt-derive v0.2.10 [INFO] [stderr] Checking h2 v0.1.12 [INFO] [stderr] Compiling synstructure v0.10.1 [INFO] [stderr] Compiling serde_derive v1.0.79 [INFO] [stderr] Checking tokio-fs v0.1.3 [INFO] [stderr] Checking structopt v0.2.10 [INFO] [stderr] Checking tokio v0.1.11 [INFO] [stderr] Compiling failure_derive v0.1.3 [INFO] [stderr] Checking hyper v0.12.11 [INFO] [stderr] Checking failure v0.1.3 [INFO] [stderr] Checking hyper-tls v0.3.0 [INFO] [stderr] Checking human-panic v1.0.1 [INFO] [stderr] Checking reqwest v0.9.2 [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] | [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:223:17 [INFO] [stderr] | [INFO] [stderr] 223 | 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:224:17 [INFO] [stderr] | [INFO] [stderr] 224 | 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:349:25 [INFO] [stderr] | [INFO] [stderr] 349 | 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:383:21 [INFO] [stderr] | [INFO] [stderr] 383 | pname: pname, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `pname` [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:385:21 [INFO] [stderr] | [INFO] [stderr] 385 | 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: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] 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:223:17 [INFO] [stderr] | [INFO] [stderr] 223 | 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:224:17 [INFO] [stderr] | [INFO] [stderr] 224 | 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:349:25 [INFO] [stderr] | [INFO] [stderr] 349 | 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:383:21 [INFO] [stderr] | [INFO] [stderr] 383 | pname: pname, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `pname` [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:385:21 [INFO] [stderr] | [INFO] [stderr] 385 | 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: 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:139:21 [INFO] [stderr] | [INFO] [stderr] 139 | 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:147:25 [INFO] [stderr] | [INFO] [stderr] 147 | / return Err(String::from_utf8_lossy(&result.stderr) [INFO] [stderr] 148 | | .into_owned() [INFO] [stderr] 149 | | .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] 147 | Err(String::from_utf8_lossy(&result.stderr) [INFO] [stderr] 148 | .into_owned() [INFO] [stderr] 149 | .to_string()) [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/eidolon.rs:151:25 [INFO] [stderr] | [INFO] [stderr] 151 | / return Ok(String::from_utf8_lossy(&result.stdout) [INFO] [stderr] 152 | | .into_owned() [INFO] [stderr] 153 | | .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] 151 | Ok(String::from_utf8_lossy(&result.stdout) [INFO] [stderr] 152 | .into_owned() [INFO] [stderr] 153 | .to_string()) [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/eidolon.rs:163:25 [INFO] [stderr] | [INFO] [stderr] 163 | / return Err(String::from_utf8_lossy(&result.stderr) [INFO] [stderr] 164 | | .into_owned() [INFO] [stderr] 165 | | .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] 163 | Err(String::from_utf8_lossy(&result.stderr) [INFO] [stderr] 164 | .into_owned() [INFO] [stderr] 165 | .to_string()) [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/eidolon.rs:167:25 [INFO] [stderr] | [INFO] [stderr] 167 | / return Ok(String::from_utf8_lossy(&result.stdout) [INFO] [stderr] 168 | | .into_owned() [INFO] [stderr] 169 | | .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] 167 | Ok(String::from_utf8_lossy(&result.stdout) [INFO] [stderr] 168 | .into_owned() [INFO] [stderr] 169 | .to_string()) [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/eidolon.rs:246:9 [INFO] [stderr] | [INFO] [stderr] 246 | 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:267:17 [INFO] [stderr] | [INFO] [stderr] 267 | / return Ok(games_list [INFO] [stderr] 268 | | .lines() [INFO] [stderr] 269 | | .filter(|x| x.find("wine").is_some()) [INFO] [stderr] 270 | | .map(|x| { [INFO] [stderr] ... | [INFO] [stderr] 273 | | }) [INFO] [stderr] 274 | | .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] 267 | Ok(games_list [INFO] [stderr] 268 | .lines() [INFO] [stderr] 269 | .filter(|x| x.find("wine").is_some()) [INFO] [stderr] 270 | .map(|x| { [INFO] [stderr] 271 | let n = x.split("|").collect::>(); [INFO] [stderr] 272 | (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:276:17 [INFO] [stderr] | [INFO] [stderr] 276 | 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:279:13 [INFO] [stderr] | [INFO] [stderr] 279 | 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:437:9 [INFO] [stderr] | [INFO] [stderr] 437 | 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:642:16 [INFO] [stderr] | [INFO] [stderr] 642 | } else { [INFO] [stderr] | ________________^ [INFO] [stderr] 643 | | if fs::metadata(get_home() + "/.config/eidolon/config").is_ok() { [INFO] [stderr] 644 | | convert_config(); [INFO] [stderr] 645 | | true [INFO] [stderr] ... | [INFO] [stderr] 650 | | } [INFO] [stderr] 651 | | } [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] 642 | } else if fs::metadata(get_home() + "/.config/eidolon/config").is_ok() { [INFO] [stderr] 643 | convert_config(); [INFO] [stderr] 644 | true [INFO] [stderr] 645 | } else if fs::metadata(get_home() + "/.config/eidolon/config.json").is_ok() { [INFO] [stderr] 646 | true [INFO] [stderr] 647 | } else { [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/eidolon.rs:655:9 [INFO] [stderr] | [INFO] [stderr] 655 | 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:674:9 [INFO] [stderr] | [INFO] [stderr] 674 | 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:680:9 [INFO] [stderr] | [INFO] [stderr] 680 | 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:684:9 [INFO] [stderr] | [INFO] [stderr] 684 | 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:684:29 [INFO] [stderr] | [INFO] [stderr] 684 | 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:139:21 [INFO] [stderr] | [INFO] [stderr] 139 | 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:147:25 [INFO] [stderr] | [INFO] [stderr] 147 | / return Err(String::from_utf8_lossy(&result.stderr) [INFO] [stderr] 148 | | .into_owned() [INFO] [stderr] 149 | | .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] 147 | Err(String::from_utf8_lossy(&result.stderr) [INFO] [stderr] 148 | .into_owned() [INFO] [stderr] 149 | .to_string()) [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/eidolon.rs:151:25 [INFO] [stderr] | [INFO] [stderr] 151 | / return Ok(String::from_utf8_lossy(&result.stdout) [INFO] [stderr] 152 | | .into_owned() [INFO] [stderr] 153 | | .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] 151 | Ok(String::from_utf8_lossy(&result.stdout) [INFO] [stderr] 152 | .into_owned() [INFO] [stderr] 153 | .to_string()) [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/eidolon.rs:163:25 [INFO] [stderr] | [INFO] [stderr] 163 | / return Err(String::from_utf8_lossy(&result.stderr) [INFO] [stderr] 164 | | .into_owned() [INFO] [stderr] 165 | | .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] 163 | Err(String::from_utf8_lossy(&result.stderr) [INFO] [stderr] 164 | .into_owned() [INFO] [stderr] 165 | .to_string()) [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/eidolon.rs:167:25 [INFO] [stderr] | [INFO] [stderr] 167 | / return Ok(String::from_utf8_lossy(&result.stdout) [INFO] [stderr] 168 | | .into_owned() [INFO] [stderr] 169 | | .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] 167 | Ok(String::from_utf8_lossy(&result.stdout) [INFO] [stderr] 168 | .into_owned() [INFO] [stderr] 169 | .to_string()) [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/eidolon.rs:246:9 [INFO] [stderr] | [INFO] [stderr] 246 | 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:267:17 [INFO] [stderr] | [INFO] [stderr] 267 | / return Ok(games_list [INFO] [stderr] 268 | | .lines() [INFO] [stderr] 269 | | .filter(|x| x.find("wine").is_some()) [INFO] [stderr] 270 | | .map(|x| { [INFO] [stderr] ... | [INFO] [stderr] 273 | | }) [INFO] [stderr] 274 | | .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] 267 | Ok(games_list [INFO] [stderr] 268 | .lines() [INFO] [stderr] 269 | .filter(|x| x.find("wine").is_some()) [INFO] [stderr] 270 | .map(|x| { [INFO] [stderr] 271 | let n = x.split("|").collect::>(); [INFO] [stderr] 272 | (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:276:17 [INFO] [stderr] | [INFO] [stderr] 276 | 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:279:13 [INFO] [stderr] | [INFO] [stderr] 279 | 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:437:9 [INFO] [stderr] | [INFO] [stderr] 437 | 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:642:16 [INFO] [stderr] | [INFO] [stderr] 642 | } else { [INFO] [stderr] | ________________^ [INFO] [stderr] 643 | | if fs::metadata(get_home() + "/.config/eidolon/config").is_ok() { [INFO] [stderr] 644 | | convert_config(); [INFO] [stderr] 645 | | true [INFO] [stderr] ... | [INFO] [stderr] 650 | | } [INFO] [stderr] 651 | | } [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] 642 | } else if fs::metadata(get_home() + "/.config/eidolon/config").is_ok() { [INFO] [stderr] 643 | convert_config(); [INFO] [stderr] 644 | true [INFO] [stderr] 645 | } else if fs::metadata(get_home() + "/.config/eidolon/config.json").is_ok() { [INFO] [stderr] 646 | true [INFO] [stderr] 647 | } else { [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/eidolon.rs:655:9 [INFO] [stderr] | [INFO] [stderr] 655 | 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:674:9 [INFO] [stderr] | [INFO] [stderr] 674 | 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:680:9 [INFO] [stderr] | [INFO] [stderr] 680 | 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:684:9 [INFO] [stderr] | [INFO] [stderr] 684 | 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:684:29 [INFO] [stderr] | [INFO] [stderr] 684 | 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:410:48 [INFO] [stderr] | [INFO] [stderr] 410 | 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:418:50 [INFO] [stderr] | [INFO] [stderr] 418 | 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:422:49 [INFO] [stderr] | [INFO] [stderr] 422 | 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:410:48 [INFO] [stderr] | [INFO] [stderr] 410 | 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:418:50 [INFO] [stderr] | [INFO] [stderr] 418 | 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:422:49 [INFO] [stderr] | [INFO] [stderr] 422 | let name = contents.slice_unchecked( [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/eidolon.rs:183:35 [INFO] [stderr] | [INFO] [stderr] 183 | 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] warning: manual implementation of an assign operation [INFO] [stderr] --> src/eidolon.rs:209:21 [INFO] [stderr] | [INFO] [stderr] 209 | 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:213:27 [INFO] [stderr] | [INFO] [stderr] 213 | let command = String::from( [INFO] [stderr] | ___________________________^ [INFO] [stderr] 214 | | start [INFO] [stderr] 215 | | + &(path [INFO] [stderr] 216 | | .into_os_string() [INFO] [stderr] ... | [INFO] [stderr] 219 | | .replace(" ", "\\ ")), [INFO] [stderr] 220 | | ); [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] 213 | let command = start [INFO] [stderr] 214 | + &(path [INFO] [stderr] 215 | .into_os_string() [INFO] [stderr] 216 | .into_string() [INFO] [stderr] 217 | .unwrap() [INFO] [stderr] 218 | .replace(" ", "\\ ")); [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/eidolon.rs:271:41 [INFO] [stderr] | [INFO] [stderr] 271 | 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:334:27 [INFO] [stderr] | [INFO] [stderr] 334 | let entries = fs::read_dir(x.to_owned() + "/common") [INFO] [stderr] | ___________________________^ [INFO] [stderr] 335 | | .expect("Can't read in games") [INFO] [stderr] 336 | | .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] 334 | let entries = fs::read_dir(x.to_owned() + "/common") [INFO] [stderr] 335 | .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:461:39 [INFO] [stderr] | [INFO] [stderr] 461 | 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:480:16 [INFO] [stderr] | [INFO] [stderr] 480 | 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:484:12 [INFO] [stderr] | [INFO] [stderr] 484 | 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:542:22 [INFO] [stderr] | [INFO] [stderr] 542 | .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:542:26 [INFO] [stderr] | [INFO] [stderr] 542 | .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:544:27 [INFO] [stderr] | [INFO] [stderr] 544 | 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:545:29 [INFO] [stderr] | [INFO] [stderr] 545 | 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:568:17 [INFO] [stderr] | [INFO] [stderr] 568 | / String::from( [INFO] [stderr] 569 | | x.as_str() [INFO] [stderr] 570 | | .replace("$HOME", &get_home()) [INFO] [stderr] 571 | | .replace("~", &get_home()), [INFO] [stderr] 572 | | ) [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] 568 | x.as_str() [INFO] [stderr] 569 | .replace("$HOME", &get_home()) [INFO] [stderr] 570 | .replace("~", &get_home()) [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/eidolon.rs:589:22 [INFO] [stderr] | [INFO] [stderr] 589 | .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:646:20 [INFO] [stderr] | [INFO] [stderr] 646 | } else if fs::metadata(get_home() + "/.config/eidolon/config.json").is_ok() { [INFO] [stderr] | ____________________^ [INFO] [stderr] 647 | | true [INFO] [stderr] 648 | | } else { [INFO] [stderr] 649 | | false [INFO] [stderr] 650 | | } [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: identical conversion [INFO] [stderr] --> src/eidolon.rs:668:28 [INFO] [stderr] | [INFO] [stderr] 668 | let mut basename = String::from(rawname.into()).to_lowercase(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `String::from()`: `rawname.into()` [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:183:35 [INFO] [stderr] | [INFO] [stderr] 183 | 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] warning: manual implementation of an assign operation [INFO] [stderr] --> src/eidolon.rs:209:21 [INFO] [stderr] | [INFO] [stderr] 209 | 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:213:27 [INFO] [stderr] | [INFO] [stderr] 213 | let command = String::from( [INFO] [stderr] | ___________________________^ [INFO] [stderr] 214 | | start [INFO] [stderr] 215 | | + &(path [INFO] [stderr] 216 | | .into_os_string() [INFO] [stderr] ... | [INFO] [stderr] 219 | | .replace(" ", "\\ ")), [INFO] [stderr] 220 | | ); [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] 213 | let command = start [INFO] [stderr] 214 | + &(path [INFO] [stderr] 215 | .into_os_string() [INFO] [stderr] 216 | .into_string() [INFO] [stderr] 217 | .unwrap() [INFO] [stderr] 218 | .replace(" ", "\\ ")); [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/eidolon.rs:271:41 [INFO] [stderr] | [INFO] [stderr] 271 | 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:334:27 [INFO] [stderr] | [INFO] [stderr] 334 | let entries = fs::read_dir(x.to_owned() + "/common") [INFO] [stderr] | ___________________________^ [INFO] [stderr] 335 | | .expect("Can't read in games") [INFO] [stderr] 336 | | .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] 334 | let entries = fs::read_dir(x.to_owned() + "/common") [INFO] [stderr] 335 | .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:461:39 [INFO] [stderr] | [INFO] [stderr] 461 | 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:480:16 [INFO] [stderr] | [INFO] [stderr] 480 | 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:484:12 [INFO] [stderr] | [INFO] [stderr] 484 | 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:542:22 [INFO] [stderr] | [INFO] [stderr] 542 | .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:542:26 [INFO] [stderr] | [INFO] [stderr] 542 | .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:544:27 [INFO] [stderr] | [INFO] [stderr] 544 | 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:545:29 [INFO] [stderr] | [INFO] [stderr] 545 | 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:568:17 [INFO] [stderr] | [INFO] [stderr] 568 | / String::from( [INFO] [stderr] 569 | | x.as_str() [INFO] [stderr] 570 | | .replace("$HOME", &get_home()) [INFO] [stderr] 571 | | .replace("~", &get_home()), [INFO] [stderr] 572 | | ) [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] 568 | x.as_str() [INFO] [stderr] 569 | .replace("$HOME", &get_home()) [INFO] [stderr] 570 | .replace("~", &get_home()) [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/eidolon.rs:589:22 [INFO] [stderr] | [INFO] [stderr] 589 | .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:646:20 [INFO] [stderr] | [INFO] [stderr] 646 | } else if fs::metadata(get_home() + "/.config/eidolon/config.json").is_ok() { [INFO] [stderr] | ____________________^ [INFO] [stderr] 647 | | true [INFO] [stderr] 648 | | } else { [INFO] [stderr] 649 | | false [INFO] [stderr] 650 | | } [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: identical conversion [INFO] [stderr] --> src/eidolon.rs:668:28 [INFO] [stderr] | [INFO] [stderr] 668 | let mut basename = String::from(rawname.into()).to_lowercase(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `String::from()`: `rawname.into()` [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 `else { if .. }` block can be collapsed [INFO] [stderr] --> src/main.rs:114:16 [INFO] [stderr] | [INFO] [stderr] 114 | } else { [INFO] [stderr] | ________________^ [INFO] [stderr] 115 | | if parsed_output.trim().chars().count() > 0 { [INFO] [stderr] 116 | | println!("Okay, something went wrong. Your menu command:\n{}\n doesn't work. If you're using the default, have you installed rofi?", &menu_command); [INFO] [stderr] 117 | | } else { [INFO] [stderr] 118 | | println!("No game selected!"); [INFO] [stderr] 119 | | } [INFO] [stderr] 120 | | } [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] 114 | } else if parsed_output.trim().chars().count() > 0 { [INFO] [stderr] 115 | println!("Okay, something went wrong. Your menu command:\n{}\n doesn't work. If you're using the default, have you installed rofi?", &menu_command); [INFO] [stderr] 116 | } else { [INFO] [stderr] 117 | println!("No game selected!"); [INFO] [stderr] 118 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: this `else { if .. }` block can be collapsed [INFO] [stderr] --> src/main.rs:114:16 [INFO] [stderr] | [INFO] [stderr] 114 | } else { [INFO] [stderr] | ________________^ [INFO] [stderr] 115 | | if parsed_output.trim().chars().count() > 0 { [INFO] [stderr] 116 | | println!("Okay, something went wrong. Your menu command:\n{}\n doesn't work. If you're using the default, have you installed rofi?", &menu_command); [INFO] [stderr] 117 | | } else { [INFO] [stderr] 118 | | println!("No game selected!"); [INFO] [stderr] 119 | | } [INFO] [stderr] 120 | | } [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] 114 | } else if parsed_output.trim().chars().count() > 0 { [INFO] [stderr] 115 | println!("Okay, something went wrong. Your menu command:\n{}\n doesn't work. If you're using the default, have you installed rofi?", &menu_command); [INFO] [stderr] 116 | } else { [INFO] [stderr] 117 | println!("No game selected!"); [INFO] [stderr] 118 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] error: this comparison involving the minimum or maximum element for this type contains a case that is always true or always false [INFO] [stderr] --> src/main.rs:87:8 [INFO] [stderr] | [INFO] [stderr] 87 | if game_list.lines().count() <= 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::absurd_extreme_comparisons)] on by default [INFO] [stderr] = help: because 0 is the minimum value for this type, the case where the two sides are not equal never occurs, consider using game_list.lines().count() == 0 instead [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#absurd_extreme_comparisons [INFO] [stderr] [INFO] [stderr] warning: taken reference of right operand [INFO] [stderr] --> src/main.rs:93:18 [INFO] [stderr] | [INFO] [stderr] 93 | .arg(String::from("echo '") + &game_list + "' | " + &menu_command) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^------------- [INFO] [stderr] | | [INFO] [stderr] | help: use the right value directly: `menu_command` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::op_ref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#op_ref [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/main.rs:105:25 [INFO] [stderr] | [INFO] [stderr] 105 | fs::remove_file("/tmp/crash_eidolon.log"); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_must_use)] on by default [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] [INFO] [stderr] error: this comparison involving the minimum or maximum element for this type contains a case that is always true or always false [INFO] [stderr] --> src/main.rs:87:8 [INFO] [stderr] | [INFO] [stderr] 87 | if game_list.lines().count() <= 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::absurd_extreme_comparisons)] on by default [INFO] [stderr] = help: because 0 is the minimum value for this type, the case where the two sides are not equal never occurs, consider using game_list.lines().count() == 0 instead [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#absurd_extreme_comparisons [INFO] [stderr] [INFO] [stderr] error: aborting due to previous error [INFO] [stderr] [INFO] [stderr] warning: taken reference of right operand [INFO] [stderr] --> src/main.rs:93:18 [INFO] [stderr] | [INFO] [stderr] 93 | .arg(String::from("echo '") + &game_list + "' | " + &menu_command) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^------------- [INFO] [stderr] | | [INFO] [stderr] | help: use the right value directly: `menu_command` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::op_ref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#op_ref [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/main.rs:105:25 [INFO] [stderr] | [INFO] [stderr] 105 | fs::remove_file("/tmp/crash_eidolon.log"); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_must_use)] on by default [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] [INFO] [stderr] error: aborting due to previous error [INFO] [stderr] [INFO] [stderr] error: Could not compile `eidolon`. [INFO] [stderr] warning: build failed, waiting for other jobs to finish... [INFO] [stderr] error: Could not compile `eidolon`. [INFO] [stderr] [INFO] [stderr] To learn more, run the command again with --verbose. [INFO] running `"docker" "inspect" "b62e816edb104bbc7c0e7d2b43b5b050f907c9cd04a1e0c4f1635cdad553c218"` [INFO] running `"docker" "rm" "-f" "b62e816edb104bbc7c0e7d2b43b5b050f907c9cd04a1e0c4f1635cdad553c218"` [INFO] [stdout] b62e816edb104bbc7c0e7d2b43b5b050f907c9cd04a1e0c4f1635cdad553c218