[INFO] crate pwrsurge 0.2.1 is already in cache [INFO] extracting crate pwrsurge 0.2.1 into work/ex/clippy-test-run/sources/stable/reg/pwrsurge/0.2.1 [INFO] extracting crate pwrsurge 0.2.1 into work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/pwrsurge/0.2.1 [INFO] validating manifest of pwrsurge-0.2.1 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 pwrsurge-0.2.1 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 pwrsurge-0.2.1 [INFO] finished frobbing pwrsurge-0.2.1 [INFO] frobbed toml for pwrsurge-0.2.1 written to work/ex/clippy-test-run/sources/stable/reg/pwrsurge/0.2.1/Cargo.toml [INFO] started frobbing pwrsurge-0.2.1 [INFO] finished frobbing pwrsurge-0.2.1 [INFO] frobbed toml for pwrsurge-0.2.1 written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/pwrsurge/0.2.1/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 pwrsurge-0.2.1 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/reg/pwrsurge/0.2.1:/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] 63810737ed1d28a12b49acda351affe0b35072603c89658d591b121a089471a5 [INFO] running `"docker" "start" "-a" "63810737ed1d28a12b49acda351affe0b35072603c89658d591b121a089471a5"` [INFO] [stderr] Checking buffering v0.1.0 [INFO] [stderr] Checking neli v0.3.1 [INFO] [stderr] Checking pwrsurge v0.2.1 (/opt/crater/workdir) [INFO] [stderr] warning: returning the result of a let binding from a block. Consider returning the expression directly. [INFO] [stderr] --> src/args.rs:83:13 [INFO] [stderr] | [INFO] [stderr] 83 | input [INFO] [stderr] | ^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::let_and_return)] on by default [INFO] [stderr] note: this expression can be directly returned [INFO] [stderr] --> src/args.rs:81:25 [INFO] [stderr] | [INFO] [stderr] 81 | let input = timer.get("reset_on_input") [INFO] [stderr] | _________________________^ [INFO] [stderr] 82 | | .map(|v| v.parse::().unwrap_or(false)).unwrap_or(false); [INFO] [stderr] | |_____________________________________________________________________________^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_and_return [INFO] [stderr] [INFO] [stderr] warning: unneeded unit expression [INFO] [stderr] --> src/event.rs:32:13 [INFO] [stderr] | [INFO] [stderr] 32 | () [INFO] [stderr] | ^^ help: remove the final `()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unused_unit)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_unit [INFO] [stderr] [INFO] [stderr] warning: unneeded unit expression [INFO] [stderr] --> src/evdev.rs:112:47 [INFO] [stderr] | [INFO] [stderr] 112 | .map_err(|e| { println!("{}", e); () }) [INFO] [stderr] | ^^ help: remove the final `()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_unit [INFO] [stderr] [INFO] [stderr] warning: use of `unwrap_or` followed by a function call [INFO] [stderr] --> src/args.rs:43:10 [INFO] [stderr] | [INFO] [stderr] 43 | .unwrap_or(Box::from("/etc/pwrsurge/libevents.so")); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| Box::from("/etc/pwrsurge/libevents.so"))` [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: redundant closure found [INFO] [stderr] --> src/args.rs:42:46 [INFO] [stderr] | [INFO] [stderr] 42 | args.lib_path = matches.opt_str("l").map(|s| Box::from(s)) [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: remove closure as shown: `Box::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: single-character string constant used as pattern [INFO] [stderr] --> src/args.rs:52:38 [INFO] [stderr] | [INFO] [stderr] 52 | Some(wl) => wl.split(",").filter_map(|s| { [INFO] [stderr] | ^^^ help: try using a char instead: `','` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::single_char_pattern)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/args.rs:67:49 [INFO] [stderr] | [INFO] [stderr] 67 | .unwrap_or(String::new()).split(",").filter_map(|s| s.parse::().ok()) [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: use of `unwrap_or` followed by a call to `new` [INFO] [stderr] --> src/args.rs:66:34 [INFO] [stderr] | [INFO] [stderr] 66 | let type_whitelist = evdev.get("type_whitelist").map(|s| s.to_owned()) [INFO] [stderr] | __________________________________^ [INFO] [stderr] 67 | | .unwrap_or(String::new()).split(",").filter_map(|s| s.parse::().ok()) [INFO] [stderr] | |_________________________________________^ help: try this: `evdev.get("type_whitelist").map(|s| s.to_owned()).unwrap_or_default()` [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: single-character string constant used as pattern [INFO] [stderr] --> src/args.rs:70:49 [INFO] [stderr] | [INFO] [stderr] 70 | .unwrap_or(String::new()).split(",").filter_map(|s| s.parse::().ok()) [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: use of `unwrap_or` followed by a call to `new` [INFO] [stderr] --> src/args.rs:69:34 [INFO] [stderr] | [INFO] [stderr] 69 | let code_whitelist = evdev.get("code_whitelist").map(|s| s.to_owned()) [INFO] [stderr] | __________________________________^ [INFO] [stderr] 70 | | .unwrap_or(String::new()).split(",").filter_map(|s| s.parse::().ok()) [INFO] [stderr] | |_________________________________________^ help: try this: `evdev.get("code_whitelist").map(|s| s.to_owned()).unwrap_or_default()` [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] error: casting from `*const [u8]` to a more-strictly-aligned pointer (`*const evdev::InputEvent`) [INFO] [stderr] --> src/event.rs:50:28 [INFO] [stderr] | [INFO] [stderr] 50 | unsafe { f(item.as_ref() as *const _ as *const evdev::InputEvent) }; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::cast_ptr_alignment)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_ptr_alignment [INFO] [stderr] [INFO] [stderr] error: casting from `*const [u8]` to a more-strictly-aligned pointer (`*const acpi::AcpiEvent`) [INFO] [stderr] --> src/event.rs:95:24 [INFO] [stderr] | [INFO] [stderr] 95 | unsafe { f(mwrite.as_ref() as *const _ as *const AcpiEvent) }; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_ptr_alignment [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/evdev.rs:28:51 [INFO] [stderr] | [INFO] [stderr] 28 | let handler_iter = handlers.split(" "); [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: this lifetime isn't used in the function definition [INFO] [stderr] --> src/evdev.rs:116:20 [INFO] [stderr] | [INFO] [stderr] 116 | pub fn evdev_files<'a>() -> Result, Box> { [INFO] [stderr] | ^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::extra_unused_lifetimes)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#extra_unused_lifetimes [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/filter.rs:10:52 [INFO] [stderr] | [INFO] [stderr] 10 | pub fn contains_device_class(&self, dev_class: &String) -> bool { [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::ptr_arg)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/filter.rs:15:9 [INFO] [stderr] | [INFO] [stderr] 15 | self.device_class_whitelist.len() == 0 [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `self.device_class_whitelist.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: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/filter.rs:31:37 [INFO] [stderr] | [INFO] [stderr] 31 | pub fn contains_type(&self, ty: &u16) -> bool { [INFO] [stderr] | ^^^^ help: consider passing by value instead: `u16` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::trivially_copy_pass_by_ref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/filter.rs:35:39 [INFO] [stderr] | [INFO] [stderr] 35 | pub fn contains_code(&self, code: &u16) -> bool { [INFO] [stderr] | ^^^^ help: consider passing by value instead: `u16` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/filter.rs:40:9 [INFO] [stderr] | [INFO] [stderr] 40 | self.evdev_type_whitelist.len() == 0 [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `self.evdev_type_whitelist.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/filter.rs:41:16 [INFO] [stderr] | [INFO] [stderr] 41 | && self.evdev_code_whitelist.len() == 0 [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `self.evdev_code_whitelist.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] error: aborting due to 2 previous errors [INFO] [stderr] [INFO] [stderr] error: Could not compile `pwrsurge`. [INFO] [stderr] warning: build failed, waiting for other jobs to finish... [INFO] [stderr] warning: returning the result of a let binding from a block. Consider returning the expression directly. [INFO] [stderr] --> src/args.rs:83:13 [INFO] [stderr] | [INFO] [stderr] 83 | input [INFO] [stderr] | ^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::let_and_return)] on by default [INFO] [stderr] note: this expression can be directly returned [INFO] [stderr] --> src/args.rs:81:25 [INFO] [stderr] | [INFO] [stderr] 81 | let input = timer.get("reset_on_input") [INFO] [stderr] | _________________________^ [INFO] [stderr] 82 | | .map(|v| v.parse::().unwrap_or(false)).unwrap_or(false); [INFO] [stderr] | |_____________________________________________________________________________^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_and_return [INFO] [stderr] [INFO] [stderr] warning: unneeded unit expression [INFO] [stderr] --> src/event.rs:32:13 [INFO] [stderr] | [INFO] [stderr] 32 | () [INFO] [stderr] | ^^ help: remove the final `()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unused_unit)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_unit [INFO] [stderr] [INFO] [stderr] warning: unneeded unit expression [INFO] [stderr] --> src/evdev.rs:112:47 [INFO] [stderr] | [INFO] [stderr] 112 | .map_err(|e| { println!("{}", e); () }) [INFO] [stderr] | ^^ help: remove the final `()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_unit [INFO] [stderr] [INFO] [stderr] error: handle written amount returned or use `Write::write_all` instead [INFO] [stderr] --> src/acpi.rs:83:9 [INFO] [stderr] | [INFO] [stderr] 83 | / acpi_event_serialized.write(&vec![65, 65, 65, 65, 65, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, [INFO] [stderr] 84 | | 0, 0, 0, 0, 0]).unwrap(); [INFO] [stderr] | |____________________________________________________________^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::unused_io_amount)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_io_amount [INFO] [stderr] [INFO] [stderr] warning: useless use of `vec!` [INFO] [stderr] --> src/acpi.rs:83:37 [INFO] [stderr] | [INFO] [stderr] 83 | acpi_event_serialized.write(&vec![65, 65, 65, 65, 65, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, [INFO] [stderr] | _____________________________________^ [INFO] [stderr] 84 | | 0, 0, 0, 0, 0]).unwrap(); [INFO] [stderr] | |__________________________________________________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::useless_vec)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_vec [INFO] [stderr] help: you can use a slice directly [INFO] [stderr] | [INFO] [stderr] 83 | acpi_event_serialized.write(&[65, 65, 65, 65, 65, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, [INFO] [stderr] 84 | 0, 0, 0, 0, 0]).unwrap(); [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] error: handle written amount returned or use `Write::write_all` instead [INFO] [stderr] --> src/acpi.rs:85:9 [INFO] [stderr] | [INFO] [stderr] 85 | acpi_event_serialized.write(&vec![65, 65, 65, 65, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_io_amount [INFO] [stderr] [INFO] [stderr] warning: useless use of `vec!` [INFO] [stderr] --> src/acpi.rs:85:37 [INFO] [stderr] | [INFO] [stderr] 85 | acpi_event_serialized.write(&vec![65, 65, 65, 65, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: you can use a slice directly: `&[65, 65, 65, 65, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_vec [INFO] [stderr] [INFO] [stderr] warning: use of `unwrap_or` followed by a function call [INFO] [stderr] --> src/args.rs:43:10 [INFO] [stderr] | [INFO] [stderr] 43 | .unwrap_or(Box::from("/etc/pwrsurge/libevents.so")); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| Box::from("/etc/pwrsurge/libevents.so"))` [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: redundant closure found [INFO] [stderr] --> src/args.rs:42:46 [INFO] [stderr] | [INFO] [stderr] 42 | args.lib_path = matches.opt_str("l").map(|s| Box::from(s)) [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: remove closure as shown: `Box::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: single-character string constant used as pattern [INFO] [stderr] --> src/args.rs:52:38 [INFO] [stderr] | [INFO] [stderr] 52 | Some(wl) => wl.split(",").filter_map(|s| { [INFO] [stderr] | ^^^ help: try using a char instead: `','` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::single_char_pattern)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/args.rs:67:49 [INFO] [stderr] | [INFO] [stderr] 67 | .unwrap_or(String::new()).split(",").filter_map(|s| s.parse::().ok()) [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: use of `unwrap_or` followed by a call to `new` [INFO] [stderr] --> src/args.rs:66:34 [INFO] [stderr] | [INFO] [stderr] 66 | let type_whitelist = evdev.get("type_whitelist").map(|s| s.to_owned()) [INFO] [stderr] | __________________________________^ [INFO] [stderr] 67 | | .unwrap_or(String::new()).split(",").filter_map(|s| s.parse::().ok()) [INFO] [stderr] | |_________________________________________^ help: try this: `evdev.get("type_whitelist").map(|s| s.to_owned()).unwrap_or_default()` [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: single-character string constant used as pattern [INFO] [stderr] --> src/args.rs:70:49 [INFO] [stderr] | [INFO] [stderr] 70 | .unwrap_or(String::new()).split(",").filter_map(|s| s.parse::().ok()) [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: use of `unwrap_or` followed by a call to `new` [INFO] [stderr] --> src/args.rs:69:34 [INFO] [stderr] | [INFO] [stderr] 69 | let code_whitelist = evdev.get("code_whitelist").map(|s| s.to_owned()) [INFO] [stderr] | __________________________________^ [INFO] [stderr] 70 | | .unwrap_or(String::new()).split(",").filter_map(|s| s.parse::().ok()) [INFO] [stderr] | |_________________________________________^ help: try this: `evdev.get("code_whitelist").map(|s| s.to_owned()).unwrap_or_default()` [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] error: casting from `*const [u8]` to a more-strictly-aligned pointer (`*const evdev::InputEvent`) [INFO] [stderr] --> src/event.rs:50:28 [INFO] [stderr] | [INFO] [stderr] 50 | unsafe { f(item.as_ref() as *const _ as *const evdev::InputEvent) }; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::cast_ptr_alignment)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_ptr_alignment [INFO] [stderr] [INFO] [stderr] error: casting from `*const [u8]` to a more-strictly-aligned pointer (`*const acpi::AcpiEvent`) [INFO] [stderr] --> src/event.rs:95:24 [INFO] [stderr] | [INFO] [stderr] 95 | unsafe { f(mwrite.as_ref() as *const _ as *const AcpiEvent) }; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_ptr_alignment [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/evdev.rs:28:51 [INFO] [stderr] | [INFO] [stderr] 28 | let handler_iter = handlers.split(" "); [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: this lifetime isn't used in the function definition [INFO] [stderr] --> src/evdev.rs:116:20 [INFO] [stderr] | [INFO] [stderr] 116 | pub fn evdev_files<'a>() -> Result, Box> { [INFO] [stderr] | ^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::extra_unused_lifetimes)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#extra_unused_lifetimes [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/filter.rs:10:52 [INFO] [stderr] | [INFO] [stderr] 10 | pub fn contains_device_class(&self, dev_class: &String) -> bool { [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::ptr_arg)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/filter.rs:15:9 [INFO] [stderr] | [INFO] [stderr] 15 | self.device_class_whitelist.len() == 0 [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `self.device_class_whitelist.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: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/filter.rs:31:37 [INFO] [stderr] | [INFO] [stderr] 31 | pub fn contains_type(&self, ty: &u16) -> bool { [INFO] [stderr] | ^^^^ help: consider passing by value instead: `u16` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::trivially_copy_pass_by_ref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/filter.rs:35:39 [INFO] [stderr] | [INFO] [stderr] 35 | pub fn contains_code(&self, code: &u16) -> bool { [INFO] [stderr] | ^^^^ help: consider passing by value instead: `u16` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/filter.rs:40:9 [INFO] [stderr] | [INFO] [stderr] 40 | self.evdev_type_whitelist.len() == 0 [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `self.evdev_type_whitelist.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/filter.rs:41:16 [INFO] [stderr] | [INFO] [stderr] 41 | && self.evdev_code_whitelist.len() == 0 [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `self.evdev_code_whitelist.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] error: aborting due to 4 previous errors [INFO] [stderr] [INFO] [stderr] error: Could not compile `pwrsurge`. [INFO] [stderr] [INFO] [stderr] To learn more, run the command again with --verbose. [INFO] running `"docker" "inspect" "63810737ed1d28a12b49acda351affe0b35072603c89658d591b121a089471a5"` [INFO] running `"docker" "rm" "-f" "63810737ed1d28a12b49acda351affe0b35072603c89658d591b121a089471a5"` [INFO] [stdout] 63810737ed1d28a12b49acda351affe0b35072603c89658d591b121a089471a5