[INFO] crate voidmap 1.1.3 is already in cache [INFO] extracting crate voidmap 1.1.3 into work/ex/clippy-test-run/sources/stable/reg/voidmap/1.1.3 [INFO] extracting crate voidmap 1.1.3 into work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/voidmap/1.1.3 [INFO] validating manifest of voidmap-1.1.3 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 voidmap-1.1.3 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 voidmap-1.1.3 [INFO] removed 0 missing tests [INFO] finished frobbing voidmap-1.1.3 [INFO] frobbed toml for voidmap-1.1.3 written to work/ex/clippy-test-run/sources/stable/reg/voidmap/1.1.3/Cargo.toml [INFO] started frobbing voidmap-1.1.3 [INFO] removed 0 missing tests [INFO] finished frobbing voidmap-1.1.3 [INFO] frobbed toml for voidmap-1.1.3 written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/voidmap/1.1.3/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 voidmap-1.1.3 against stable for clippy-test-run [INFO] running `"docker" "create" "-v" "/mnt/big/crater/work/local/target-dirs/clippy-test-run/worker-1/stable:/opt/crater/target:rw,Z" "-v" "/mnt/big/crater/work/ex/clippy-test-run/sources/stable/reg/voidmap/1.1.3:/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] 977fcebed549affcd2fda66a6119ca4cf4c6238863bde060ec3917080e06fcb3 [INFO] running `"docker" "start" "-a" "977fcebed549affcd2fda66a6119ca4cf4c6238863bde060ec3917080e06fcb3"` [INFO] [stderr] Compiling protobuf v1.7.4 [INFO] [stderr] Checking termion v1.5.1 [INFO] [stderr] Checking hyper v0.10.15 [INFO] [stderr] Checking quickcheck v0.3.2 [INFO] [stderr] Checking voidmap v1.1.3 (/opt/crater/workdir) [INFO] [stderr] warning: using `print!()` with a format string that ends in a single newline, consider using `println!()` instead [INFO] [stderr] --> src/screen.rs:118:9 [INFO] [stderr] | [INFO] [stderr] 118 | print!("{}{}{}\n", cursor::Goto(1, 1), clear::All, self.config); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::print_with_newline)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#print_with_newline [INFO] [stderr] [INFO] [stderr] warning: using `print!()` with a format string that ends in a single newline, consider using `println!()` instead [INFO] [stderr] --> src/screen.rs:118:9 [INFO] [stderr] | [INFO] [stderr] 118 | print!("{}{}{}\n", cursor::Goto(1, 1), clear::All, self.config); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::print_with_newline)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#print_with_newline [INFO] [stderr] [INFO] [stderr] warning: lint name `clippy` is deprecated and may not have an effect in the future. Also `cfg_attr(cargo-clippy)` won't be necessary anymore [INFO] [stderr] --> src/pb/data_model.rs:6:10 [INFO] [stderr] | [INFO] [stderr] 6 | #![allow(clippy)] [INFO] [stderr] | ^^^^^^ help: change it to: `clippy::all` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(renamed_and_removed_lints)] on by default [INFO] [stderr] [INFO] [stderr] warning: using `write!()` with a format string that ends in a single newline, consider using `writeln!()` instead [INFO] [stderr] --> src/config.rs:170:9 [INFO] [stderr] | [INFO] [stderr] 170 | write!(f, "Configured Hotkeys:\n").unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::write_with_newline)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#write_with_newline [INFO] [stderr] [INFO] [stderr] warning: using `write!()` with a format string that ends in a single newline, consider using `writeln!()` instead [INFO] [stderr] --> src/config.rs:172:13 [INFO] [stderr] | [INFO] [stderr] 172 | write!(f, " {:?}: {:?}\n", action, key).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#write_with_newline [INFO] [stderr] [INFO] [stderr] warning: lint name `clippy` is deprecated and may not have an effect in the future. Also `cfg_attr(cargo-clippy)` won't be necessary anymore [INFO] [stderr] --> src/pb/data_model.rs:6:10 [INFO] [stderr] | [INFO] [stderr] 6 | #![allow(clippy)] [INFO] [stderr] | ^^^^^^ help: change it to: `clippy::all` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(renamed_and_removed_lints)] on by default [INFO] [stderr] [INFO] [stderr] warning: using `write!()` with a format string that ends in a single newline, consider using `writeln!()` instead [INFO] [stderr] --> src/config.rs:170:9 [INFO] [stderr] | [INFO] [stderr] 170 | write!(f, "Configured Hotkeys:\n").unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::write_with_newline)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#write_with_newline [INFO] [stderr] [INFO] [stderr] warning: using `write!()` with a format string that ends in a single newline, consider using `writeln!()` instead [INFO] [stderr] --> src/config.rs:172:13 [INFO] [stderr] | [INFO] [stderr] 172 | write!(f, " {:?}: {:?}\n", action, key).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#write_with_newline [INFO] [stderr] [INFO] [stderr] warning: this `else { if .. }` block can be collapsed [INFO] [stderr] --> src/screen.rs:185:32 [INFO] [stderr] | [INFO] [stderr] 185 | } else { [INFO] [stderr] | ________________________________^ [INFO] [stderr] 186 | | if c == '/' { [INFO] [stderr] 187 | | self.search_forward(); [INFO] [stderr] 188 | | } else if c == '?' { [INFO] [stderr] ... | [INFO] [stderr] 192 | | } [INFO] [stderr] 193 | | } [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] 185 | } else if c == '/' { [INFO] [stderr] 186 | self.search_forward(); [INFO] [stderr] 187 | } else if c == '?' { [INFO] [stderr] 188 | self.search_backward(); [INFO] [stderr] 189 | } else { [INFO] [stderr] 190 | self.prefix_jump_to(c.to_string()); [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: lint name `clippy` is deprecated and may not have an effect in the future. Also `cfg_attr(cargo-clippy)` won't be necessary anymore [INFO] [stderr] --> src/pb/data_model.rs:6:10 [INFO] [stderr] | [INFO] [stderr] 6 | #![allow(clippy)] [INFO] [stderr] | ^^^^^^ help: change it to: `clippy::all` [INFO] [stderr] [INFO] [stderr] warning: this `else { if .. }` block can be collapsed [INFO] [stderr] --> src/screen.rs:185:32 [INFO] [stderr] | [INFO] [stderr] 185 | } else { [INFO] [stderr] | ________________________________^ [INFO] [stderr] 186 | | if c == '/' { [INFO] [stderr] 187 | | self.search_forward(); [INFO] [stderr] 188 | | } else if c == '?' { [INFO] [stderr] ... | [INFO] [stderr] 192 | | } [INFO] [stderr] 193 | | } [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] 185 | } else if c == '/' { [INFO] [stderr] 186 | self.search_forward(); [INFO] [stderr] 187 | } else if c == '?' { [INFO] [stderr] 188 | self.search_backward(); [INFO] [stderr] 189 | } else { [INFO] [stderr] 190 | self.prefix_jump_to(c.to_string()); [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: lint name `clippy` is deprecated and may not have an effect in the future. Also `cfg_attr(cargo-clippy)` won't be necessary anymore [INFO] [stderr] --> src/pb/data_model.rs:6:10 [INFO] [stderr] | [INFO] [stderr] 6 | #![allow(clippy)] [INFO] [stderr] | ^^^^^^ help: change it to: `clippy::all` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/screen.rs:666:9 [INFO] [stderr] | [INFO] [stderr] 666 | mut filter_map: &mut F, [INFO] [stderr] | ----^^^^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_mut)] on by default [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/screen.rs:736:70 [INFO] [stderr] | [INFO] [stderr] 736 | let deletable = self.with_node_mut_no_meta(selected_id, |mut n| { [INFO] [stderr] | ----^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/screen.rs:745:54 [INFO] [stderr] | [INFO] [stderr] 745 | self.with_node_mut_no_meta(selected_id, |mut n| { [INFO] [stderr] | ----^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/screen.rs:796:61 [INFO] [stderr] | [INFO] [stderr] 796 | return self.with_node_mut_no_meta(node_id, |mut node| { [INFO] [stderr] | ----^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/screen.rs:903:43 [INFO] [stderr] | [INFO] [stderr] 903 | self.with_node_mut_no_meta(root, |mut n| n.auto_arrange = !n.auto_arrange) [INFO] [stderr] | ----^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/screen.rs:1214:50 [INFO] [stderr] | [INFO] [stderr] 1214 | self.with_node_mut_no_meta(ptr, |mut root| { [INFO] [stderr] | ----^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/screen.rs:1342:52 [INFO] [stderr] | [INFO] [stderr] 1342 | self.with_node_mut_no_meta(parent_id, |mut parent| { [INFO] [stderr] | ----^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/screen.rs:1365:52 [INFO] [stderr] | [INFO] [stderr] 1365 | self.with_node_mut_no_meta(parent_id, |mut parent| { [INFO] [stderr] | ----^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/screen.rs:1473:50 [INFO] [stderr] | [INFO] [stderr] 1473 | self.with_node_mut_no_meta(node_id, |mut node| node.selected = true) [INFO] [stderr] | ----^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/screen.rs:666:9 [INFO] [stderr] | [INFO] [stderr] 666 | mut filter_map: &mut F, [INFO] [stderr] | ----^^^^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_mut)] on by default [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/screen.rs:736:70 [INFO] [stderr] | [INFO] [stderr] 736 | let deletable = self.with_node_mut_no_meta(selected_id, |mut n| { [INFO] [stderr] | ----^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/screen.rs:745:54 [INFO] [stderr] | [INFO] [stderr] 745 | self.with_node_mut_no_meta(selected_id, |mut n| { [INFO] [stderr] | ----^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/screen.rs:796:61 [INFO] [stderr] | [INFO] [stderr] 796 | return self.with_node_mut_no_meta(node_id, |mut node| { [INFO] [stderr] | ----^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/screen.rs:903:43 [INFO] [stderr] | [INFO] [stderr] 903 | self.with_node_mut_no_meta(root, |mut n| n.auto_arrange = !n.auto_arrange) [INFO] [stderr] | ----^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/screen.rs:1214:50 [INFO] [stderr] | [INFO] [stderr] 1214 | self.with_node_mut_no_meta(ptr, |mut root| { [INFO] [stderr] | ----^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/screen.rs:1342:52 [INFO] [stderr] | [INFO] [stderr] 1342 | self.with_node_mut_no_meta(parent_id, |mut parent| { [INFO] [stderr] | ----^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/screen.rs:1365:52 [INFO] [stderr] | [INFO] [stderr] 1365 | self.with_node_mut_no_meta(parent_id, |mut parent| { [INFO] [stderr] | ----^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/screen.rs:1473:50 [INFO] [stderr] | [INFO] [stderr] 1473 | self.with_node_mut_no_meta(node_id, |mut node| node.selected = true) [INFO] [stderr] | ----^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: method is never used: `new_ephemeral_node_id` [INFO] [stderr] --> src/screen.rs:131:5 [INFO] [stderr] | [INFO] [stderr] 131 | fn new_ephemeral_node_id(&mut self) -> NodeID { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(dead_code)] on by default [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/logging.rs:26:59 [INFO] [stderr] | [INFO] [stderr] 26 | record.location().file().split("/").last().unwrap(), [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: casting u16 to u32 may become silently lossy if types change [INFO] [stderr] --> src/serialization.rs:58:19 [INFO] [stderr] | [INFO] [stderr] 58 | node_pb.set_x(node.rooted_coords.0 as u32); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u32::from(node.rooted_coords.0)` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::cast_lossless)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u16 to u32 may become silently lossy if types change [INFO] [stderr] --> src/serialization.rs:59:19 [INFO] [stderr] | [INFO] [stderr] 59 | node_pb.set_y(node.rooted_coords.1 as u32); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u32::from(node.rooted_coords.1)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: redundant pattern matching, consider using `is_err()` [INFO] [stderr] --> src/screen.rs:120:16 [INFO] [stderr] | [INFO] [stderr] 120 | if let Err(_) = self.single_key_prompt("") { [INFO] [stderr] | _________- ^^^^^^ [INFO] [stderr] 121 | | // likely here because of testing [INFO] [stderr] 122 | | } [INFO] [stderr] | |_________- help: try this: `if self.single_key_prompt("").is_err()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_pattern_matching)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern_matching [INFO] [stderr] [INFO] [stderr] warning: this creates an owned instance just for comparison [INFO] [stderr] --> src/screen.rs:433:25 [INFO] [stderr] | [INFO] [stderr] 433 | if query == "".to_owned() { [INFO] [stderr] | ^^^^^^^^^^^^^ help: try: `""` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::cmp_owned)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cmp_owned [INFO] [stderr] [INFO] [stderr] warning: use of `unwrap_or` followed by a function call [INFO] [stderr] --> src/screen.rs:566:47 [INFO] [stderr] | [INFO] [stderr] 566 | let shell = env::var("SHELL").unwrap_or("bash".to_owned()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|_| "bash".to_owned())` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::or_fun_call)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: use of `unwrap_or` followed by a function call [INFO] [stderr] --> src/screen.rs:581:14 [INFO] [stderr] | [INFO] [stderr] 581 | .unwrap_or("".to_owned()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| "".to_owned())` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: redundant pattern matching, consider using `is_ok()` [INFO] [stderr] --> src/screen.rs:588:16 [INFO] [stderr] | [INFO] [stderr] 588 | if let Ok(_) = remove_file(&path) { [INFO] [stderr] | _________- ^^^^^ [INFO] [stderr] 589 | | warn!("removed stale tmp file"); [INFO] [stderr] 590 | | } [INFO] [stderr] | |_________- help: try this: `if remove_file(&path).is_ok()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern_matching [INFO] [stderr] [INFO] [stderr] warning: use of `unwrap_or` followed by a function call [INFO] [stderr] --> src/screen.rs:605:37 [INFO] [stderr] | [INFO] [stderr] 605 | let ed = env::var("EDITOR").unwrap_or("vim".to_owned()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|_| "vim".to_owned())` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: called `.iter().nth()` on a Vec. Calling `.get()` is both faster and more readable [INFO] [stderr] --> src/screen.rs:747:37 [INFO] [stderr] | [INFO] [stderr] 747 | if let Some(date) = re_matches::(&RE_DATE, &*n.content).iter().nth(0) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::iter_nth)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#iter_nth [INFO] [stderr] [INFO] [stderr] warning: redundant pattern matching, consider using `is_none()` [INFO] [stderr] --> src/screen.rs:1157:16 [INFO] [stderr] | [INFO] [stderr] 1157 | if let None = self.drawn_at(node_id) { [INFO] [stderr] | _________- ^^^^ [INFO] [stderr] 1158 | | return Err("node not drawn on this screen".to_owned()); [INFO] [stderr] 1159 | | } [INFO] [stderr] | |_________- help: try this: `if self.drawn_at(node_id).is_none()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern_matching [INFO] [stderr] [INFO] [stderr] warning: method is never used: `new_ephemeral_node_id` [INFO] [stderr] --> src/screen.rs:131:5 [INFO] [stderr] | [INFO] [stderr] 131 | fn new_ephemeral_node_id(&mut self) -> NodeID { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(dead_code)] on by default [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/logging.rs:26:59 [INFO] [stderr] | [INFO] [stderr] 26 | record.location().file().split("/").last().unwrap(), [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: called `.iter().nth()` on a Vec. Calling `.get()` is both faster and more readable [INFO] [stderr] --> src/screen.rs:1461:9 [INFO] [stderr] | [INFO] [stderr] 1461 | node_costs.iter().nth(0).map(|&(&id, _)| id) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#iter_nth [INFO] [stderr] [INFO] [stderr] warning: called `map(f)` on an Option value where `f` is a unit closure [INFO] [stderr] --> src/screen.rs:1473:13 [INFO] [stderr] | [INFO] [stderr] 1473 | self.with_node_mut_no_meta(node_id, |mut node| node.selected = true) [INFO] [stderr] | _____________^ [INFO] [stderr] | |_____________| [INFO] [stderr] | || [INFO] [stderr] 1474 | || .map(|_| self.selected = Some(node_id)); [INFO] [stderr] | ||_______________________________________________________^- help: try this: `if let Some(_) = self.with_node_mut_no_meta(node_id, |mut node| node.selected = true) { ... }` [INFO] [stderr] | |________________________________________________________| [INFO] [stderr] | [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::option_map_unit_fn)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#option_map_unit_fn [INFO] [stderr] [INFO] [stderr] warning: redundant pattern matching, consider using `is_ok()` [INFO] [stderr] --> src/screen.rs:1560:20 [INFO] [stderr] | [INFO] [stderr] 1560 | if let Ok(_) = remove_file(&tmp_path) { [INFO] [stderr] | _____________- ^^^^^ [INFO] [stderr] 1561 | | warn!("removed stale tmp file"); [INFO] [stderr] 1562 | | } [INFO] [stderr] | |_____________- help: try this: `if remove_file(&tmp_path).is_ok()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern_matching [INFO] [stderr] [INFO] [stderr] warning: this boolean expression can be simplified [INFO] [stderr] --> src/screen.rs:1603:25 [INFO] [stderr] | [INFO] [stderr] 1603 | false || acc [INFO] [stderr] | ^^^^^^^^^^^^ help: try: `acc` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::nonminimal_bool)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stderr] [INFO] [stderr] warning: casting u16 to u32 may become silently lossy if types change [INFO] [stderr] --> src/serialization.rs:58:19 [INFO] [stderr] | [INFO] [stderr] 58 | node_pb.set_x(node.rooted_coords.0 as u32); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u32::from(node.rooted_coords.0)` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::cast_lossless)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u16 to u32 may become silently lossy if types change [INFO] [stderr] --> src/serialization.rs:59:19 [INFO] [stderr] | [INFO] [stderr] 59 | node_pb.set_y(node.rooted_coords.1 as u32); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u32::from(node.rooted_coords.1)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u16 to f64 may become silently lossy if types change [INFO] [stderr] --> src/screen.rs:1728:33 [INFO] [stderr] | [INFO] [stderr] 1728 | let normalized_lowest = max(self.lowest_drawn, 1) as f64; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `f64::from(max(self.lowest_drawn, 1))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u16 to f64 may become silently lossy if types change [INFO] [stderr] --> src/screen.rs:1729:33 [INFO] [stderr] | [INFO] [stderr] 1729 | let fraction_viewable = self.dims.1 as f64 / normalized_lowest; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: try: `f64::from(self.dims.1)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u16 to f64 may become silently lossy if types change [INFO] [stderr] --> src/screen.rs:1730:36 [INFO] [stderr] | [INFO] [stderr] 1730 | let shade_start_fraction = self.view_y as f64 / normalized_lowest; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: try: `f64::from(self.view_y)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u16 to f64 may become silently lossy if types change [INFO] [stderr] --> src/screen.rs:1732:29 [INFO] [stderr] | [INFO] [stderr] 1732 | let shade_amount = (bar_height as f64 * fraction_viewable) as usize; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: try: `f64::from(bar_height)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u16 to f64 may become silently lossy if types change [INFO] [stderr] --> src/screen.rs:1733:28 [INFO] [stderr] | [INFO] [stderr] 1733 | let shade_start = (bar_height as f64 * shade_start_fraction) as usize; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: try: `f64::from(bar_height)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/screen.rs:1838:57 [INFO] [stderr] | [INFO] [stderr] 1838 | self.grapheme_cache.insert(node.id, vg.clone()); [INFO] [stderr] | ^^^^^^^^^^ help: try removing the `clone` call: `vg` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::clone_on_copy)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] warning: redundant pattern matching, consider using `is_err()` [INFO] [stderr] --> src/screen.rs:120:16 [INFO] [stderr] | [INFO] [stderr] 120 | if let Err(_) = self.single_key_prompt("") { [INFO] [stderr] | _________- ^^^^^^ [INFO] [stderr] 121 | | // likely here because of testing [INFO] [stderr] 122 | | } [INFO] [stderr] | |_________- help: try this: `if self.single_key_prompt("").is_err()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_pattern_matching)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern_matching [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/screen.rs:1858:53 [INFO] [stderr] | [INFO] [stderr] 1858 | self.grapheme_cache.insert(node.id, vg.clone()); [INFO] [stderr] | ^^^^^^^^^^ help: try removing the `clone` call: `vg` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] warning: this boolean expression can be simplified [INFO] [stderr] --> src/screen.rs:2062:20 [INFO] [stderr] | [INFO] [stderr] 2062 | if (!(neighbor.0 >= self.dims.0) && !(neighbor.1 >= self.dims.1 + self.view_y) && [INFO] [stderr] | ____________________^ [INFO] [stderr] 2063 | | !self.occupied(neighbor) || neighbor == dest) && [INFO] [stderr] 2064 | | !visited.contains_key(&neighbor) [INFO] [stderr] | |____________________________________________________^ help: try: `(neighbor.0 < self.dims.0 && neighbor.1 < self.dims.1 + self.view_y && !self.occupied(neighbor) || neighbor == dest) && !visited.contains_key(&neighbor)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a HashMap. Using `[]` is more clear and more concise [INFO] [stderr] --> src/screen.rs:2085:24 [INFO] [stderr] | [INFO] [stderr] 2085 | let prev = visited.get(&back_cursor).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `&visited[&back_cursor]` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::get_unwrap)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a BTreeMap. Using `[]` is more clear and more concise [INFO] [stderr] --> src/screen.rs:2119:30 [INFO] [stderr] | [INFO] [stderr] 2119 | let finished_today = counts_clone.get(&today_normalized).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `&counts_clone[&today_normalized]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] warning: use of `unwrap_or` followed by a function call [INFO] [stderr] --> src/screen.rs:2164:14 [INFO] [stderr] | [INFO] [stderr] 2164 | .unwrap_or(vec![]); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| vec![])` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: called `.iter().nth()` on a Vec. Calling `.get()` is both faster and more readable [INFO] [stderr] --> src/screen.rs:2184:30 [INFO] [stderr] | [INFO] [stderr] 2184 | if let Some(since) = re_matches::(&RE_SINCE, &*node.content).iter().nth( [INFO] [stderr] | ______________________________^ [INFO] [stderr] 2185 | | 0, [INFO] [stderr] 2186 | | ) [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#iter_nth [INFO] [stderr] [INFO] [stderr] warning: called `.iter().nth()` on a Vec. Calling `.get()` is both faster and more readable [INFO] [stderr] --> src/screen.rs:2202:30 [INFO] [stderr] | [INFO] [stderr] 2202 | if let Some(until) = re_matches::(&RE_UNTIL, &*node.content).iter().nth( [INFO] [stderr] | ______________________________^ [INFO] [stderr] 2203 | | 0, [INFO] [stderr] 2204 | | ) [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#iter_nth [INFO] [stderr] [INFO] [stderr] warning: this creates an owned instance just for comparison [INFO] [stderr] --> src/screen.rs:433:25 [INFO] [stderr] | [INFO] [stderr] 433 | if query == "".to_owned() { [INFO] [stderr] | ^^^^^^^^^^^^^ help: try: `""` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::cmp_owned)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cmp_owned [INFO] [stderr] [INFO] [stderr] warning: called `.iter().nth()` on a Vec. Calling `.get()` is both faster and more readable [INFO] [stderr] --> src/screen.rs:2223:31 [INFO] [stderr] | [INFO] [stderr] 2223 | if let Some(&limit) = re_matches(&RE_LIMIT, &*node.content).iter().nth(0) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#iter_nth [INFO] [stderr] [INFO] [stderr] warning: called `.iter().nth()` on a Vec. Calling `.get()` is both faster and more readable [INFO] [stderr] --> src/screen.rs:2228:21 [INFO] [stderr] | [INFO] [stderr] 2228 | let n_opt = re_n.iter().nth(0); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#iter_nth [INFO] [stderr] [INFO] [stderr] warning: called `.iter().nth()` on a Vec. Calling `.get()` is both faster and more readable [INFO] [stderr] --> src/screen.rs:2229:29 [INFO] [stderr] | [INFO] [stderr] 2229 | if let Some(plot) = re_matches::(&RE_PLOT, &*node.content).iter().nth(0) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#iter_nth [INFO] [stderr] [INFO] [stderr] warning: use of `unwrap_or` followed by a function call [INFO] [stderr] --> src/screen.rs:566:47 [INFO] [stderr] | [INFO] [stderr] 566 | let shell = env::var("SHELL").unwrap_or("bash".to_owned()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|_| "bash".to_owned())` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::or_fun_call)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: use of `unwrap_or` followed by a function call [INFO] [stderr] --> src/screen.rs:581:14 [INFO] [stderr] | [INFO] [stderr] 581 | .unwrap_or("".to_owned()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| "".to_owned())` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: redundant pattern matching, consider using `is_ok()` [INFO] [stderr] --> src/screen.rs:588:16 [INFO] [stderr] | [INFO] [stderr] 588 | if let Ok(_) = remove_file(&path) { [INFO] [stderr] | _________- ^^^^^ [INFO] [stderr] 589 | | warn!("removed stale tmp file"); [INFO] [stderr] 590 | | } [INFO] [stderr] | |_________- help: try this: `if remove_file(&path).is_ok()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern_matching [INFO] [stderr] [INFO] [stderr] warning: use of `unwrap_or` followed by a function call [INFO] [stderr] --> src/screen.rs:605:37 [INFO] [stderr] | [INFO] [stderr] 605 | let ed = env::var("EDITOR").unwrap_or("vim".to_owned()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|_| "vim".to_owned())` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: called `.iter().nth()` on a Vec. Calling `.get()` is both faster and more readable [INFO] [stderr] --> src/screen.rs:747:37 [INFO] [stderr] | [INFO] [stderr] 747 | if let Some(date) = re_matches::(&RE_DATE, &*n.content).iter().nth(0) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::iter_nth)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#iter_nth [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/plot.rs:33:17 [INFO] [stderr] | [INFO] [stderr] 33 | let step = (end.clone() - start.clone()) / bars as i64; [INFO] [stderr] | ^^^^^^^^^^^ help: try removing the `clone` call: `end` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/plot.rs:33:31 [INFO] [stderr] | [INFO] [stderr] 33 | let step = (end.clone() - start.clone()) / bars as i64; [INFO] [stderr] | ^^^^^^^^^^^^^ help: try removing the `clone` call: `start` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] warning: redundant pattern matching, consider using `is_none()` [INFO] [stderr] --> src/screen.rs:1157:16 [INFO] [stderr] | [INFO] [stderr] 1157 | if let None = self.drawn_at(node_id) { [INFO] [stderr] | _________- ^^^^ [INFO] [stderr] 1158 | | return Err("node not drawn on this screen".to_owned()); [INFO] [stderr] 1159 | | } [INFO] [stderr] | |_________- help: try this: `if self.drawn_at(node_id).is_none()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern_matching [INFO] [stderr] [INFO] [stderr] warning: called `.iter().nth()` on a Vec. Calling `.get()` is both faster and more readable [INFO] [stderr] --> src/screen.rs:1461:9 [INFO] [stderr] | [INFO] [stderr] 1461 | node_costs.iter().nth(0).map(|&(&id, _)| id) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#iter_nth [INFO] [stderr] [INFO] [stderr] warning: called `map(f)` on an Option value where `f` is a unit closure [INFO] [stderr] --> src/screen.rs:1473:13 [INFO] [stderr] | [INFO] [stderr] 1473 | self.with_node_mut_no_meta(node_id, |mut node| node.selected = true) [INFO] [stderr] | _____________^ [INFO] [stderr] | |_____________| [INFO] [stderr] | || [INFO] [stderr] 1474 | || .map(|_| self.selected = Some(node_id)); [INFO] [stderr] | ||_______________________________________________________^- help: try this: `if let Some(_) = self.with_node_mut_no_meta(node_id, |mut node| node.selected = true) { ... }` [INFO] [stderr] | |________________________________________________________| [INFO] [stderr] | [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::option_map_unit_fn)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#option_map_unit_fn [INFO] [stderr] [INFO] [stderr] warning: redundant pattern matching, consider using `is_ok()` [INFO] [stderr] --> src/screen.rs:1560:20 [INFO] [stderr] | [INFO] [stderr] 1560 | if let Ok(_) = remove_file(&tmp_path) { [INFO] [stderr] | _____________- ^^^^^ [INFO] [stderr] 1561 | | warn!("removed stale tmp file"); [INFO] [stderr] 1562 | | } [INFO] [stderr] | |_____________- help: try this: `if remove_file(&tmp_path).is_ok()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern_matching [INFO] [stderr] [INFO] [stderr] warning: this boolean expression can be simplified [INFO] [stderr] --> src/screen.rs:1603:25 [INFO] [stderr] | [INFO] [stderr] 1603 | false || acc [INFO] [stderr] | ^^^^^^^^^^^^ help: try: `acc` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::nonminimal_bool)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stderr] [INFO] [stderr] warning: casting u16 to f64 may become silently lossy if types change [INFO] [stderr] --> src/screen.rs:1728:33 [INFO] [stderr] | [INFO] [stderr] 1728 | let normalized_lowest = max(self.lowest_drawn, 1) as f64; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `f64::from(max(self.lowest_drawn, 1))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u16 to f64 may become silently lossy if types change [INFO] [stderr] --> src/screen.rs:1729:33 [INFO] [stderr] | [INFO] [stderr] 1729 | let fraction_viewable = self.dims.1 as f64 / normalized_lowest; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: try: `f64::from(self.dims.1)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u16 to f64 may become silently lossy if types change [INFO] [stderr] --> src/screen.rs:1730:36 [INFO] [stderr] | [INFO] [stderr] 1730 | let shade_start_fraction = self.view_y as f64 / normalized_lowest; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: try: `f64::from(self.view_y)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u16 to f64 may become silently lossy if types change [INFO] [stderr] --> src/screen.rs:1732:29 [INFO] [stderr] | [INFO] [stderr] 1732 | let shade_amount = (bar_height as f64 * fraction_viewable) as usize; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: try: `f64::from(bar_height)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u16 to f64 may become silently lossy if types change [INFO] [stderr] --> src/screen.rs:1733:28 [INFO] [stderr] | [INFO] [stderr] 1733 | let shade_start = (bar_height as f64 * shade_start_fraction) as usize; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: try: `f64::from(bar_height)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/screen.rs:1838:57 [INFO] [stderr] | [INFO] [stderr] 1838 | self.grapheme_cache.insert(node.id, vg.clone()); [INFO] [stderr] | ^^^^^^^^^^ help: try removing the `clone` call: `vg` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::clone_on_copy)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/screen.rs:1858:53 [INFO] [stderr] | [INFO] [stderr] 1858 | self.grapheme_cache.insert(node.id, vg.clone()); [INFO] [stderr] | ^^^^^^^^^^ help: try removing the `clone` call: `vg` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] warning: this boolean expression can be simplified [INFO] [stderr] --> src/screen.rs:2062:20 [INFO] [stderr] | [INFO] [stderr] 2062 | if (!(neighbor.0 >= self.dims.0) && !(neighbor.1 >= self.dims.1 + self.view_y) && [INFO] [stderr] | ____________________^ [INFO] [stderr] 2063 | | !self.occupied(neighbor) || neighbor == dest) && [INFO] [stderr] 2064 | | !visited.contains_key(&neighbor) [INFO] [stderr] | |____________________________________________________^ help: try: `(neighbor.0 < self.dims.0 && neighbor.1 < self.dims.1 + self.view_y && !self.occupied(neighbor) || neighbor == dest) && !visited.contains_key(&neighbor)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a HashMap. Using `[]` is more clear and more concise [INFO] [stderr] --> src/screen.rs:2085:24 [INFO] [stderr] | [INFO] [stderr] 2085 | let prev = visited.get(&back_cursor).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `&visited[&back_cursor]` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::get_unwrap)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a BTreeMap. Using `[]` is more clear and more concise [INFO] [stderr] --> src/screen.rs:2119:30 [INFO] [stderr] | [INFO] [stderr] 2119 | let finished_today = counts_clone.get(&today_normalized).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `&counts_clone[&today_normalized]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] warning: use of `unwrap_or` followed by a function call [INFO] [stderr] --> src/screen.rs:2164:14 [INFO] [stderr] | [INFO] [stderr] 2164 | .unwrap_or(vec![]); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| vec![])` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: called `.iter().nth()` on a Vec. Calling `.get()` is both faster and more readable [INFO] [stderr] --> src/screen.rs:2184:30 [INFO] [stderr] | [INFO] [stderr] 2184 | if let Some(since) = re_matches::(&RE_SINCE, &*node.content).iter().nth( [INFO] [stderr] | ______________________________^ [INFO] [stderr] 2185 | | 0, [INFO] [stderr] 2186 | | ) [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#iter_nth [INFO] [stderr] [INFO] [stderr] warning: called `.iter().nth()` on a Vec. Calling `.get()` is both faster and more readable [INFO] [stderr] --> src/screen.rs:2202:30 [INFO] [stderr] | [INFO] [stderr] 2202 | if let Some(until) = re_matches::(&RE_UNTIL, &*node.content).iter().nth( [INFO] [stderr] | ______________________________^ [INFO] [stderr] 2203 | | 0, [INFO] [stderr] 2204 | | ) [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#iter_nth [INFO] [stderr] [INFO] [stderr] warning: called `.iter().nth()` on a Vec. Calling `.get()` is both faster and more readable [INFO] [stderr] --> src/screen.rs:2223:31 [INFO] [stderr] | [INFO] [stderr] 2223 | if let Some(&limit) = re_matches(&RE_LIMIT, &*node.content).iter().nth(0) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#iter_nth [INFO] [stderr] [INFO] [stderr] warning: called `.iter().nth()` on a Vec. Calling `.get()` is both faster and more readable [INFO] [stderr] --> src/screen.rs:2228:21 [INFO] [stderr] | [INFO] [stderr] 2228 | let n_opt = re_n.iter().nth(0); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#iter_nth [INFO] [stderr] [INFO] [stderr] warning: called `.iter().nth()` on a Vec. Calling `.get()` is both faster and more readable [INFO] [stderr] --> src/screen.rs:2229:29 [INFO] [stderr] | [INFO] [stderr] 2229 | if let Some(plot) = re_matches::(&RE_PLOT, &*node.content).iter().nth(0) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#iter_nth [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/plot.rs:33:17 [INFO] [stderr] | [INFO] [stderr] 33 | let step = (end.clone() - start.clone()) / bars as i64; [INFO] [stderr] | ^^^^^^^^^^^ help: try removing the `clone` call: `end` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/plot.rs:33:31 [INFO] [stderr] | [INFO] [stderr] 33 | let step = (end.clone() - start.clone()) / bars as i64; [INFO] [stderr] | ^^^^^^^^^^^^^ help: try removing the `clone` call: `start` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> src/config.rs:113:22 [INFO] [stderr] | [INFO] [stderr] 113 | .map(|c| Ctrl(c)) [INFO] [stderr] | ^^^^^^^^^^^ help: remove closure as shown: `Ctrl` [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: single-character string constant used as pattern [INFO] [stderr] --> src/config.rs:195:44 [INFO] [stderr] | [INFO] [stderr] 195 | let parts: Vec<_> = line.split(":").map(|p| p.trim()).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: redundant closure found [INFO] [stderr] --> src/tagdb.rs:39:33 [INFO] [stderr] | [INFO] [stderr] 39 | .unwrap_or_else(|| HashSet::new()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: remove closure as shown: `HashSet::new` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> src/tagdb.rs:56:37 [INFO] [stderr] | [INFO] [stderr] 56 | .unwrap_or_else(|| HashSet::new()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: remove closure as shown: `HashSet::new` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> src/config.rs:113:22 [INFO] [stderr] | [INFO] [stderr] 113 | .map(|c| Ctrl(c)) [INFO] [stderr] | ^^^^^^^^^^^ help: remove closure as shown: `Ctrl` [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: single-character string constant used as pattern [INFO] [stderr] --> src/config.rs:195:44 [INFO] [stderr] | [INFO] [stderr] 195 | let parts: Vec<_> = line.split(":").map(|p| p.trim()).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: redundant closure found [INFO] [stderr] --> src/tagdb.rs:39:33 [INFO] [stderr] | [INFO] [stderr] 39 | .unwrap_or_else(|| HashSet::new()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: remove closure as shown: `HashSet::new` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> src/tagdb.rs:56:37 [INFO] [stderr] | [INFO] [stderr] 56 | .unwrap_or_else(|| HashSet::new()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: remove closure as shown: `HashSet::new` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] [INFO] [stderr] warning: 5th binding whose name is just one char [INFO] [stderr] --> test/screen.rs:27:23 [INFO] [stderr] | [INFO] [stderr] 27 | let (c, u, x, y) = [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::many_single_char_names)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#many_single_char_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> test/screen.rs:124:17 [INFO] [stderr] | [INFO] [stderr] 124 | OpVec { ops: ops } [INFO] [stderr] | ^^^^^^^^ help: replace it with: `ops` [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: unused `#[macro_use]` import [INFO] [stderr] --> src/bin/void.rs:5:1 [INFO] [stderr] | [INFO] [stderr] 5 | #[macro_use] [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_imports)] on by default [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/bin/void.rs:25:19 [INFO] [stderr] | [INFO] [stderr] 25 | let default = std::env::home_dir().and_then(|mut h| { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(deprecated)] on by default [INFO] [stderr] [INFO] [stderr] warning: unused variable: `e` [INFO] [stderr] --> src/bin/void.rs:49:26 [INFO] [stderr] | [INFO] [stderr] 49 | .unwrap_or_else(|e| panic!("another void process is using this path already.")); [INFO] [stderr] | ^ help: consider using `_e` instead [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_variables)] on by default [INFO] [stderr] [INFO] [stderr] warning: unused `#[macro_use]` import [INFO] [stderr] --> src/bin/void.rs:5:1 [INFO] [stderr] | [INFO] [stderr] 5 | #[macro_use] [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_imports)] on by default [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/bin/void.rs:25:19 [INFO] [stderr] | [INFO] [stderr] 25 | let default = std::env::home_dir().and_then(|mut h| { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(deprecated)] on by default [INFO] [stderr] [INFO] [stderr] warning: unused variable: `e` [INFO] [stderr] --> src/bin/void.rs:49:26 [INFO] [stderr] | [INFO] [stderr] 49 | .unwrap_or_else(|e| panic!("another void process is using this path already.")); [INFO] [stderr] | ^ help: consider using `_e` instead [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_variables)] on by default [INFO] [stderr] [INFO] [stderr] error: using `clone` on a double-reference; this will copy the reference instead of cloning the inner type [INFO] [stderr] --> test/screen.rs:92:27 [INFO] [stderr] | [INFO] [stderr] 92 | let command = g.choose(&*commands).unwrap().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] 92 | let command = &(*g.choose(&*commands).unwrap()).clone(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] help: or try being explicit about what type to clone [INFO] [stderr] | [INFO] [stderr] 92 | let command = &str::clone(g.choose(&*commands).unwrap()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] error: aborting due to previous error [INFO] [stderr] [INFO] [stderr] error: Could not compile `voidmap`. [INFO] [stderr] [INFO] [stderr] To learn more, run the command again with --verbose. [INFO] running `"docker" "inspect" "977fcebed549affcd2fda66a6119ca4cf4c6238863bde060ec3917080e06fcb3"` [INFO] running `"docker" "rm" "-f" "977fcebed549affcd2fda66a6119ca4cf4c6238863bde060ec3917080e06fcb3"` [INFO] [stdout] 977fcebed549affcd2fda66a6119ca4cf4c6238863bde060ec3917080e06fcb3