[INFO] updating cached repository pop-os/system76-power [INFO] running `"git" "fetch" "--all"` [INFO] [stdout] Fetching origin [INFO] [stderr] From git://github.com/pop-os/system76-power [INFO] [stderr] * branch HEAD -> FETCH_HEAD [INFO] running `"git" "clone" "work/cache/sources/gh/pop-os/system76-power" "work/ex/clippy-test-run/sources/stable/gh/pop-os/system76-power"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable/gh/pop-os/system76-power'... [INFO] [stderr] done. [INFO] running `"git" "clone" "work/cache/sources/gh/pop-os/system76-power" "work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/pop-os/system76-power"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/pop-os/system76-power'... [INFO] [stderr] done. [INFO] running `"git" "rev-parse" "HEAD"` [INFO] [stdout] 413bafe10026dc0348bfffa3d561a599ba3aa88e [INFO] sha for GitHub repo pop-os/system76-power: 413bafe10026dc0348bfffa3d561a599ba3aa88e [INFO] validating manifest of pop-os/system76-power 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 pop-os/system76-power 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 pop-os/system76-power [INFO] finished frobbing pop-os/system76-power [INFO] frobbed toml for pop-os/system76-power written to work/ex/clippy-test-run/sources/stable/gh/pop-os/system76-power/Cargo.toml [INFO] started frobbing pop-os/system76-power [INFO] finished frobbing pop-os/system76-power [INFO] frobbed toml for pop-os/system76-power written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/pop-os/system76-power/Cargo.toml [INFO] crate pop-os/system76-power 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 pop-os/system76-power against stable for clippy-test-run [INFO] running `"docker" "create" "-v" "/mnt/big/crater/work/local/target-dirs/clippy-test-run/worker-6/stable:/opt/crater/target:rw,Z" "-v" "/mnt/big/crater/work/ex/clippy-test-run/sources/stable/gh/pop-os/system76-power:/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] 63efd746fa46f3ccb3c04c1b1a4dd9f0b2c80a5b2a51ab4c489fa094a95af527 [INFO] running `"docker" "start" "-a" "63efd746fa46f3ccb3c04c1b1a4dd9f0b2c80a5b2a51ab4c489fa094a95af527"` [INFO] [stderr] Checking sysfs-class v0.1.1 [INFO] [stderr] Compiling libdbus-sys v0.1.4 [INFO] [stderr] Checking fern v0.5.7 [INFO] [stderr] Compiling time v0.1.40 [INFO] [stderr] Compiling vergen v0.1.1 [INFO] [stderr] Checking dbus v0.6.2 [INFO] [stderr] Compiling system76-power v1.0.0 (/opt/crater/workdir) [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/backlight.rs:33:13 [INFO] [stderr] | [INFO] [stderr] 33 | path: path [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `path` [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/client.rs:20:13 [INFO] [stderr] | [INFO] [stderr] 20 | bus: bus [INFO] [stderr] | ^^^^^^^^ help: replace it with: `bus` [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/kbd_backlight.rs:35:13 [INFO] [stderr] | [INFO] [stderr] 35 | path: path [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `path` [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/pci.rs:103:13 [INFO] [stderr] | [INFO] [stderr] 103 | path: path, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `path` [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/backlight.rs:33:13 [INFO] [stderr] | [INFO] [stderr] 33 | path: path [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `path` [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/client.rs:20:13 [INFO] [stderr] | [INFO] [stderr] 20 | bus: bus [INFO] [stderr] | ^^^^^^^^ help: replace it with: `bus` [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/kbd_backlight.rs:35:13 [INFO] [stderr] | [INFO] [stderr] 35 | path: path [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `path` [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/pci.rs:103:13 [INFO] [stderr] | [INFO] [stderr] 103 | path: path, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `path` [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 import: `env` [INFO] [stderr] --> src/main.rs:11:11 [INFO] [stderr] | [INFO] [stderr] 11 | use std::{env, process}; [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/daemon.rs:304:13 [INFO] [stderr] | [INFO] [stderr] 304 | / if hpd[i] != last[i] { [INFO] [stderr] 305 | | if hpd[i] { [INFO] [stderr] 306 | | info!("HotPlugDetect {}", i); [INFO] [stderr] 307 | | c.send( [INFO] [stderr] ... | [INFO] [stderr] 310 | | } [INFO] [stderr] 311 | | } [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] 304 | if hpd[i] != last[i] && hpd[i] { [INFO] [stderr] 305 | info!("HotPlugDetect {}", i); [INFO] [stderr] 306 | c.send( [INFO] [stderr] 307 | signal.msg(&DBUS_PATH.into(), &DBUS_NAME.into()).append1(i as u64) [INFO] [stderr] 308 | ).map_err(|()| format!("failed to send message"))?; [INFO] [stderr] 309 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/hotplug.rs:92:41 [INFO] [stderr] | [INFO] [stderr] 92 | sideband: Sideband::new(0xFD000000)?, [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0xFD00_0000` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unreadable_literal)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: unused import: `Level` [INFO] [stderr] --> src/logging.rs:2:11 [INFO] [stderr] | [INFO] [stderr] 2 | use log::{Level, LevelFilter}; [INFO] [stderr] | ^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `PathBuf` [INFO] [stderr] --> src/snd.rs:1:23 [INFO] [stderr] | [INFO] [stderr] 1 | use std::path::{Path, PathBuf}; [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `env` [INFO] [stderr] --> src/main.rs:11:11 [INFO] [stderr] | [INFO] [stderr] 11 | use std::{env, process}; [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/daemon.rs:304:13 [INFO] [stderr] | [INFO] [stderr] 304 | / if hpd[i] != last[i] { [INFO] [stderr] 305 | | if hpd[i] { [INFO] [stderr] 306 | | info!("HotPlugDetect {}", i); [INFO] [stderr] 307 | | c.send( [INFO] [stderr] ... | [INFO] [stderr] 310 | | } [INFO] [stderr] 311 | | } [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] 304 | if hpd[i] != last[i] && hpd[i] { [INFO] [stderr] 305 | info!("HotPlugDetect {}", i); [INFO] [stderr] 306 | c.send( [INFO] [stderr] 307 | signal.msg(&DBUS_PATH.into(), &DBUS_NAME.into()).append1(i as u64) [INFO] [stderr] 308 | ).map_err(|()| format!("failed to send message"))?; [INFO] [stderr] 309 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/hotplug.rs:92:41 [INFO] [stderr] | [INFO] [stderr] 92 | sideband: Sideband::new(0xFD000000)?, [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0xFD00_0000` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unreadable_literal)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: unused import: `Level` [INFO] [stderr] --> src/logging.rs:2:11 [INFO] [stderr] | [INFO] [stderr] 2 | use log::{Level, LevelFilter}; [INFO] [stderr] | ^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `PathBuf` [INFO] [stderr] --> src/snd.rs:1:23 [INFO] [stderr] | [INFO] [stderr] 1 | use std::path::{Path, PathBuf}; [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/graphics.rs:87:13 [INFO] [stderr] | [INFO] [stderr] 87 | let mut vendor = if modules.iter().find(|module| module.name == "nouveau" || module.name == "nvidia").is_some() { [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: method is never used: `bl_power` [INFO] [stderr] --> src/backlight.rs:41:5 [INFO] [stderr] | [INFO] [stderr] 41 | pub fn bl_power(&self) -> io::Result { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(dead_code)] on by default [INFO] [stderr] [INFO] [stderr] warning: function is never used: `reload` [INFO] [stderr] --> src/modprobe.rs:4:1 [INFO] [stderr] | [INFO] [stderr] 4 | pub fn reload(module: &str, options: &[&str]) -> io::Result<()> { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function is never used: `unload` [INFO] [stderr] --> src/modprobe.rs:8:1 [INFO] [stderr] | [INFO] [stderr] 8 | pub fn unload(module: &str) -> io::Result<()> { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function is never used: `load` [INFO] [stderr] --> src/modprobe.rs:20:1 [INFO] [stderr] | [INFO] [stderr] 20 | pub fn load(module: &str, options: &[&str]) -> io::Result<()> { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `drivers` [INFO] [stderr] --> src/pci.rs:25:5 [INFO] [stderr] | [INFO] [stderr] 25 | pub fn drivers(&self) -> io::Result> { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `path` [INFO] [stderr] --> src/pci.rs:45:5 [INFO] [stderr] | [INFO] [stderr] 45 | pub fn path(&self) -> &Path { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `bind` [INFO] [stderr] --> src/pci.rs:49:5 [INFO] [stderr] | [INFO] [stderr] 49 | pub unsafe fn bind(&self, device: &PciDevice) -> io::Result<()> { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `device` [INFO] [stderr] --> src/pci.rs:64:9 [INFO] [stderr] | [INFO] [stderr] 64 | pub fn $file(&self) -> io::Result<$out> { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 94 | pci_device!(device as u16); [INFO] [stderr] | --------------------------- in this macro invocation [INFO] [stderr] [INFO] [stderr] warning: method is never used: `revision` [INFO] [stderr] --> src/pci.rs:64:9 [INFO] [stderr] | [INFO] [stderr] 64 | pub fn $file(&self) -> io::Result<$out> { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 96 | pci_device!(revision as u8); [INFO] [stderr] | ---------------------------- in this macro invocation [INFO] [stderr] [INFO] [stderr] warning: field is never used: `device` [INFO] [stderr] --> src/wifi.rs:6:5 [INFO] [stderr] | [INFO] [stderr] 6 | device: &'static str, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: field is never used: `power_save` [INFO] [stderr] --> src/wifi.rs:7:5 [INFO] [stderr] | [INFO] [stderr] 7 | power_save: PowerSave, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: field is never used: `power_level` [INFO] [stderr] --> src/wifi.rs:8:5 [INFO] [stderr] | [INFO] [stderr] 8 | power_level: PowerLevel, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `set` [INFO] [stderr] --> src/wifi.rs:26:5 [INFO] [stderr] | [INFO] [stderr] 26 | pub fn set(&self, power_level: u8) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/graphics.rs:87:13 [INFO] [stderr] | [INFO] [stderr] 87 | let mut vendor = if modules.iter().find(|module| module.name == "nouveau" || module.name == "nvidia").is_some() { [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: useless use of `format!` [INFO] [stderr] --> src/daemon.rs:309:36 [INFO] [stderr] | [INFO] [stderr] 309 | ).map_err(|()| format!("failed to send message"))?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"failed to send message".to_string()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::useless_format)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/graphics.rs:58:25 [INFO] [stderr] | [INFO] [stderr] 58 | 0x04 => match (c >> 8) & 0xff { [INFO] [stderr] | _________________________^ [INFO] [stderr] 59 | | 0x03 => match dev.vendor()? { [INFO] [stderr] 60 | | 0x10DE => { [INFO] [stderr] 61 | | info!("{}: NVIDIA audio", dev.name()); [INFO] [stderr] ... | [INFO] [stderr] 66 | | _ => () [INFO] [stderr] 67 | | }, [INFO] [stderr] | |_________________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::single_match)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 58 | 0x04 => if let 0x03 = (c >> 8) & 0xff { match dev.vendor()? { [INFO] [stderr] 59 | 0x10DE => { [INFO] [stderr] 60 | info!("{}: NVIDIA audio", dev.name()); [INFO] [stderr] 61 | nvidia_hda.push(dev); [INFO] [stderr] 62 | }, [INFO] [stderr] 63 | _ => () [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/graphics.rs:59:29 [INFO] [stderr] | [INFO] [stderr] 59 | 0x03 => match dev.vendor()? { [INFO] [stderr] | _____________________________^ [INFO] [stderr] 60 | | 0x10DE => { [INFO] [stderr] 61 | | info!("{}: NVIDIA audio", dev.name()); [INFO] [stderr] 62 | | nvidia_hda.push(dev); [INFO] [stderr] 63 | | }, [INFO] [stderr] 64 | | _ => () [INFO] [stderr] 65 | | }, [INFO] [stderr] | |_____________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 59 | 0x03 => if let 0x10DE = dev.vendor()? { [INFO] [stderr] 60 | info!("{}: NVIDIA audio", dev.name()); [INFO] [stderr] 61 | nvidia_hda.push(dev); [INFO] [stderr] 62 | }, [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/graphics.rs:82:9 [INFO] [stderr] | [INFO] [stderr] 82 | self.intel.len() > 0 && self.nvidia.len() > 0 [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!self.intel.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: length comparison to zero [INFO] [stderr] --> src/graphics.rs:82:33 [INFO] [stderr] | [INFO] [stderr] 82 | self.intel.len() > 0 && self.nvidia.len() > 0 [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!self.nvidia.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: called `is_some()` after searching an `Iterator` with find. This is more succinctly expressed by calling `any()`. [INFO] [stderr] --> src/graphics.rs:87:29 [INFO] [stderr] | [INFO] [stderr] 87 | let mut vendor = if modules.iter().find(|module| module.name == "nouveau" || module.name == "nvidia").is_some() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::search_is_some)] on by default [INFO] [stderr] = note: replace `find(|module| module.name == "nouveau" || module.name == "nvidia").is_some()` with `any(|module| module.name == "nouveau" || module.name == "nvidia")` [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#search_is_some [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/graphics.rs:175:33 [INFO] [stderr] | [INFO] [stderr] 175 | unsafe { driver.unbind(&dev) }; [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] warning: useless use of `format!` [INFO] [stderr] --> src/hotplug.rs:39:24 [INFO] [stderr] | [INFO] [stderr] 39 | return Err(format!("Failed to open /dev/mem")); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"Failed to open /dev/mem".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/hotplug.rs:54:24 [INFO] [stderr] | [INFO] [stderr] 54 | return Err(format!("Failed to map Sideband memory")); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"Failed to map Sideband memory".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u64 may become silently lossy if types change [INFO] [stderr] --> src/hotplug.rs:63:23 [INFO] [stderr] | [INFO] [stderr] 63 | let offset = ((port as u64) << P2SB_PORTID_SHIFT) + reg as u64; [INFO] [stderr] | ^^^^^^^^^^^^^ help: try: `u64::from(port)` [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 u32 to u64 may become silently lossy if types change [INFO] [stderr] --> src/hotplug.rs:63:61 [INFO] [stderr] | [INFO] [stderr] 63 | let offset = ((port as u64) << P2SB_PORTID_SHIFT) + reg as u64; [INFO] [stderr] | ^^^^^^^^^^ help: try: `u64::from(reg)` [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 u8 to u32 may become silently lossy if types change [INFO] [stderr] --> src/hotplug.rs:75:49 [INFO] [stderr] | [INFO] [stderr] 75 | let dw0: u32 = self.read(port, padbar + pad as u32 * 8); [INFO] [stderr] | ^^^^^^^^^^ help: try: `u32::from(pad)` [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 u8 to u32 may become silently lossy if types change [INFO] [stderr] --> src/hotplug.rs:76:49 [INFO] [stderr] | [INFO] [stderr] 76 | let dw1: u32 = self.read(port, padbar + pad as u32 * 8 + 4); [INFO] [stderr] | ^^^^^^^^^^ help: try: `u32::from(pad)` [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 u32 to u64 may become silently lossy if types change [INFO] [stderr] --> src/hotplug.rs:78:9 [INFO] [stderr] | [INFO] [stderr] 78 | dw0 as u64 | (dw1 as u64) << 32 [INFO] [stderr] | ^^^^^^^^^^ help: try: `u64::from(dw0)` [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 u32 to u64 may become silently lossy if types change [INFO] [stderr] --> src/hotplug.rs:78:22 [INFO] [stderr] | [INFO] [stderr] 78 | dw0 as u64 | (dw1 as u64) << 32 [INFO] [stderr] | ^^^^^^^^^^^^ help: try: `u64::from(dw1)` [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: the loop variable `i` is used to index `hpd` [INFO] [stderr] --> src/hotplug.rs:102:18 [INFO] [stderr] | [INFO] [stderr] 102 | for i in 0..self.pins.len() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_range_loop)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stderr] help: consider using an iterator [INFO] [stderr] | [INFO] [stderr] 102 | for (i, ) in hpd.iter_mut().enumerate().take(self.pins.len()) { [INFO] [stderr] | ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `bl_power` [INFO] [stderr] --> src/backlight.rs:41:5 [INFO] [stderr] | [INFO] [stderr] 41 | pub fn bl_power(&self) -> io::Result { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(dead_code)] on by default [INFO] [stderr] [INFO] [stderr] warning: function is never used: `reload` [INFO] [stderr] --> src/modprobe.rs:4:1 [INFO] [stderr] | [INFO] [stderr] 4 | pub fn reload(module: &str, options: &[&str]) -> io::Result<()> { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function is never used: `unload` [INFO] [stderr] --> src/modprobe.rs:8:1 [INFO] [stderr] | [INFO] [stderr] 8 | pub fn unload(module: &str) -> io::Result<()> { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function is never used: `load` [INFO] [stderr] --> src/modprobe.rs:20:1 [INFO] [stderr] | [INFO] [stderr] 20 | pub fn load(module: &str, options: &[&str]) -> io::Result<()> { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `drivers` [INFO] [stderr] --> src/pci.rs:25:5 [INFO] [stderr] | [INFO] [stderr] 25 | pub fn drivers(&self) -> io::Result> { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `path` [INFO] [stderr] --> src/pci.rs:45:5 [INFO] [stderr] | [INFO] [stderr] 45 | pub fn path(&self) -> &Path { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `bind` [INFO] [stderr] --> src/pci.rs:49:5 [INFO] [stderr] | [INFO] [stderr] 49 | pub unsafe fn bind(&self, device: &PciDevice) -> io::Result<()> { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `device` [INFO] [stderr] --> src/pci.rs:64:9 [INFO] [stderr] | [INFO] [stderr] 64 | pub fn $file(&self) -> io::Result<$out> { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 94 | pci_device!(device as u16); [INFO] [stderr] | --------------------------- in this macro invocation [INFO] [stderr] [INFO] [stderr] warning: method is never used: `revision` [INFO] [stderr] --> src/pci.rs:64:9 [INFO] [stderr] | [INFO] [stderr] 64 | pub fn $file(&self) -> io::Result<$out> { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 96 | pci_device!(revision as u8); [INFO] [stderr] | ---------------------------- in this macro invocation [INFO] [stderr] [INFO] [stderr] warning: field is never used: `device` [INFO] [stderr] --> src/wifi.rs:6:5 [INFO] [stderr] | [INFO] [stderr] 6 | device: &'static str, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: field is never used: `power_save` [INFO] [stderr] --> src/wifi.rs:7:5 [INFO] [stderr] | [INFO] [stderr] 7 | power_save: PowerSave, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: field is never used: `power_level` [INFO] [stderr] --> src/wifi.rs:8:5 [INFO] [stderr] | [INFO] [stderr] 8 | power_level: PowerLevel, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `set` [INFO] [stderr] --> src/wifi.rs:26:5 [INFO] [stderr] | [INFO] [stderr] 26 | pub fn set(&self, power_level: u8) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/kernel_parameters.rs:66:17 [INFO] [stderr] | [INFO] [stderr] 66 | / fn get_path<'a>(&'a self) -> &'a Path { [INFO] [stderr] 67 | | Path::new($path) [INFO] [stderr] 68 | | } [INFO] [stderr] | |_________________^ [INFO] [stderr] ... [INFO] [stderr] 100 | / static_parameters! { [INFO] [stderr] 101 | | LaptopMode { laptop_mode: "/proc/sys/vm/laptop_mode" }, [INFO] [stderr] 102 | | DirtyExpire { dirty_expire: "/proc/sys/vm/dirty_expire_centisecs" }, [INFO] [stderr] 103 | | DirtyWriteback { dirty_writeback: "/proc/sys/vm/dirty_writeback_centisecs" }, [INFO] [stderr] 104 | | NmiWatchdog { nmi_watchdog : "/proc/sys/kernel/nmi_watchdog" }, [INFO] [stderr] 105 | | PcieAspm { pcie_aspm: "/sys/module/pcie_aspm/parameters/policy" } [INFO] [stderr] 106 | | } [INFO] [stderr] | |_- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_lifetimes)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/kernel_parameters.rs:66:17 [INFO] [stderr] | [INFO] [stderr] 66 | / fn get_path<'a>(&'a self) -> &'a Path { [INFO] [stderr] 67 | | Path::new($path) [INFO] [stderr] 68 | | } [INFO] [stderr] | |_________________^ [INFO] [stderr] ... [INFO] [stderr] 100 | / static_parameters! { [INFO] [stderr] 101 | | LaptopMode { laptop_mode: "/proc/sys/vm/laptop_mode" }, [INFO] [stderr] 102 | | DirtyExpire { dirty_expire: "/proc/sys/vm/dirty_expire_centisecs" }, [INFO] [stderr] 103 | | DirtyWriteback { dirty_writeback: "/proc/sys/vm/dirty_writeback_centisecs" }, [INFO] [stderr] 104 | | NmiWatchdog { nmi_watchdog : "/proc/sys/kernel/nmi_watchdog" }, [INFO] [stderr] 105 | | PcieAspm { pcie_aspm: "/sys/module/pcie_aspm/parameters/policy" } [INFO] [stderr] 106 | | } [INFO] [stderr] | |_- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/kernel_parameters.rs:92:17 [INFO] [stderr] | [INFO] [stderr] 92 | fn get_path<'a>(&'a self) -> &'a Path { &self.path } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 108 | / dynamic_parameters! { [INFO] [stderr] 109 | | DiskIoSched { disk_io_scheduler: "/sys/block/{}/queue/scheduler" }, [INFO] [stderr] 110 | | PhcControls { phc_controls: "/sys/devices/system/cpu/cpu{}/cpufreq/phc_controls" }, [INFO] [stderr] 111 | | RadeonDpmState { radeon_dpm_state: "{}/power_dpm_state" }, [INFO] [stderr] ... | [INFO] [stderr] 121 | | } [INFO] [stderr] 122 | | } [INFO] [stderr] | |_- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: casting u32 to u64 may become silently lossy if types change [INFO] [stderr] --> src/kernel_parameters.rs:153:26 [INFO] [stderr] | [INFO] [stderr] 153 | let centisecs = (secs as u64 * 100).to_string(); [INFO] [stderr] | ^^^^^^^^^^^ help: try: `u64::from(secs)` [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: useless use of `format!` [INFO] [stderr] --> src/pci.rs:30:46 [INFO] [stderr] | [INFO] [stderr] 30 | write_file(self.path.join("rescan"), format!("1")) [INFO] [stderr] | ^^^^^^^^^^^^ help: consider using .to_string(): `"1".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/pci.rs:108:46 [INFO] [stderr] | [INFO] [stderr] 108 | write_file(self.path.join("remove"), format!("1")) [INFO] [stderr] | ^^^^^^^^^^^^ help: consider using .to_string(): `"1".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: this .into_iter() call is equivalent to .iter() and will not move the slice [INFO] [stderr] --> src/snd.rs:47:34 [INFO] [stderr] | [INFO] [stderr] 47 | Box::new(Self::SUPPORTED.into_iter().flat_map(|dev| SoundDevice::new(dev))) [INFO] [stderr] | ^^^^^^^^^ help: call directly: `iter` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::into_iter_on_ref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#into_iter_on_ref [INFO] [stderr] [INFO] [stderr] warning: this .into_iter() call is equivalent to .iter() and will not move the slice [INFO] [stderr] --> src/wifi.rs:58:34 [INFO] [stderr] | [INFO] [stderr] 58 | Box::new(Self::SUPPORTED.into_iter().flat_map(|dev| WifiDevice::new(dev))) [INFO] [stderr] | ^^^^^^^^^ help: call directly: `iter` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#into_iter_on_ref [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/main.rs:58:19 [INFO] [stderr] | [INFO] [stderr] 58 | let version = format!("{}", crate_version!()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `env ! ( "CARGO_PKG_VERSION" ).to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/main.rs:134:21 [INFO] [stderr] | [INFO] [stderr] 134 | Err(format!("must be run as root")) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"must be run as root".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/daemon.rs:309:36 [INFO] [stderr] | [INFO] [stderr] 309 | ).map_err(|()| format!("failed to send message"))?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"failed to send message".to_string()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::useless_format)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/graphics.rs:58:25 [INFO] [stderr] | [INFO] [stderr] 58 | 0x04 => match (c >> 8) & 0xff { [INFO] [stderr] | _________________________^ [INFO] [stderr] 59 | | 0x03 => match dev.vendor()? { [INFO] [stderr] 60 | | 0x10DE => { [INFO] [stderr] 61 | | info!("{}: NVIDIA audio", dev.name()); [INFO] [stderr] ... | [INFO] [stderr] 66 | | _ => () [INFO] [stderr] 67 | | }, [INFO] [stderr] | |_________________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::single_match)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 58 | 0x04 => if let 0x03 = (c >> 8) & 0xff { match dev.vendor()? { [INFO] [stderr] 59 | 0x10DE => { [INFO] [stderr] 60 | info!("{}: NVIDIA audio", dev.name()); [INFO] [stderr] 61 | nvidia_hda.push(dev); [INFO] [stderr] 62 | }, [INFO] [stderr] 63 | _ => () [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/graphics.rs:59:29 [INFO] [stderr] | [INFO] [stderr] 59 | 0x03 => match dev.vendor()? { [INFO] [stderr] | _____________________________^ [INFO] [stderr] 60 | | 0x10DE => { [INFO] [stderr] 61 | | info!("{}: NVIDIA audio", dev.name()); [INFO] [stderr] 62 | | nvidia_hda.push(dev); [INFO] [stderr] 63 | | }, [INFO] [stderr] 64 | | _ => () [INFO] [stderr] 65 | | }, [INFO] [stderr] | |_____________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 59 | 0x03 => if let 0x10DE = dev.vendor()? { [INFO] [stderr] 60 | info!("{}: NVIDIA audio", dev.name()); [INFO] [stderr] 61 | nvidia_hda.push(dev); [INFO] [stderr] 62 | }, [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/graphics.rs:82:9 [INFO] [stderr] | [INFO] [stderr] 82 | self.intel.len() > 0 && self.nvidia.len() > 0 [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!self.intel.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: length comparison to zero [INFO] [stderr] --> src/graphics.rs:82:33 [INFO] [stderr] | [INFO] [stderr] 82 | self.intel.len() > 0 && self.nvidia.len() > 0 [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!self.nvidia.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: called `is_some()` after searching an `Iterator` with find. This is more succinctly expressed by calling `any()`. [INFO] [stderr] --> src/graphics.rs:87:29 [INFO] [stderr] | [INFO] [stderr] 87 | let mut vendor = if modules.iter().find(|module| module.name == "nouveau" || module.name == "nvidia").is_some() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::search_is_some)] on by default [INFO] [stderr] = note: replace `find(|module| module.name == "nouveau" || module.name == "nvidia").is_some()` with `any(|module| module.name == "nouveau" || module.name == "nvidia")` [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#search_is_some [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/graphics.rs:175:33 [INFO] [stderr] | [INFO] [stderr] 175 | unsafe { driver.unbind(&dev) }; [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] warning: useless use of `format!` [INFO] [stderr] --> src/hotplug.rs:39:24 [INFO] [stderr] | [INFO] [stderr] 39 | return Err(format!("Failed to open /dev/mem")); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"Failed to open /dev/mem".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/hotplug.rs:54:24 [INFO] [stderr] | [INFO] [stderr] 54 | return Err(format!("Failed to map Sideband memory")); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"Failed to map Sideband memory".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u64 may become silently lossy if types change [INFO] [stderr] --> src/hotplug.rs:63:23 [INFO] [stderr] | [INFO] [stderr] 63 | let offset = ((port as u64) << P2SB_PORTID_SHIFT) + reg as u64; [INFO] [stderr] | ^^^^^^^^^^^^^ help: try: `u64::from(port)` [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 u32 to u64 may become silently lossy if types change [INFO] [stderr] --> src/hotplug.rs:63:61 [INFO] [stderr] | [INFO] [stderr] 63 | let offset = ((port as u64) << P2SB_PORTID_SHIFT) + reg as u64; [INFO] [stderr] | ^^^^^^^^^^ help: try: `u64::from(reg)` [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 u8 to u32 may become silently lossy if types change [INFO] [stderr] --> src/hotplug.rs:75:49 [INFO] [stderr] | [INFO] [stderr] 75 | let dw0: u32 = self.read(port, padbar + pad as u32 * 8); [INFO] [stderr] | ^^^^^^^^^^ help: try: `u32::from(pad)` [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 u8 to u32 may become silently lossy if types change [INFO] [stderr] --> src/hotplug.rs:76:49 [INFO] [stderr] | [INFO] [stderr] 76 | let dw1: u32 = self.read(port, padbar + pad as u32 * 8 + 4); [INFO] [stderr] | ^^^^^^^^^^ help: try: `u32::from(pad)` [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 u32 to u64 may become silently lossy if types change [INFO] [stderr] --> src/hotplug.rs:78:9 [INFO] [stderr] | [INFO] [stderr] 78 | dw0 as u64 | (dw1 as u64) << 32 [INFO] [stderr] | ^^^^^^^^^^ help: try: `u64::from(dw0)` [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 u32 to u64 may become silently lossy if types change [INFO] [stderr] --> src/hotplug.rs:78:22 [INFO] [stderr] | [INFO] [stderr] 78 | dw0 as u64 | (dw1 as u64) << 32 [INFO] [stderr] | ^^^^^^^^^^^^ help: try: `u64::from(dw1)` [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: the loop variable `i` is used to index `hpd` [INFO] [stderr] --> src/hotplug.rs:102:18 [INFO] [stderr] | [INFO] [stderr] 102 | for i in 0..self.pins.len() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_range_loop)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stderr] help: consider using an iterator [INFO] [stderr] | [INFO] [stderr] 102 | for (i, ) in hpd.iter_mut().enumerate().take(self.pins.len()) { [INFO] [stderr] | ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/kernel_parameters.rs:66:17 [INFO] [stderr] | [INFO] [stderr] 66 | / fn get_path<'a>(&'a self) -> &'a Path { [INFO] [stderr] 67 | | Path::new($path) [INFO] [stderr] 68 | | } [INFO] [stderr] | |_________________^ [INFO] [stderr] ... [INFO] [stderr] 100 | / static_parameters! { [INFO] [stderr] 101 | | LaptopMode { laptop_mode: "/proc/sys/vm/laptop_mode" }, [INFO] [stderr] 102 | | DirtyExpire { dirty_expire: "/proc/sys/vm/dirty_expire_centisecs" }, [INFO] [stderr] 103 | | DirtyWriteback { dirty_writeback: "/proc/sys/vm/dirty_writeback_centisecs" }, [INFO] [stderr] 104 | | NmiWatchdog { nmi_watchdog : "/proc/sys/kernel/nmi_watchdog" }, [INFO] [stderr] 105 | | PcieAspm { pcie_aspm: "/sys/module/pcie_aspm/parameters/policy" } [INFO] [stderr] 106 | | } [INFO] [stderr] | |_- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_lifetimes)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/kernel_parameters.rs:66:17 [INFO] [stderr] | [INFO] [stderr] 66 | / fn get_path<'a>(&'a self) -> &'a Path { [INFO] [stderr] 67 | | Path::new($path) [INFO] [stderr] 68 | | } [INFO] [stderr] | |_________________^ [INFO] [stderr] ... [INFO] [stderr] 100 | / static_parameters! { [INFO] [stderr] 101 | | LaptopMode { laptop_mode: "/proc/sys/vm/laptop_mode" }, [INFO] [stderr] 102 | | DirtyExpire { dirty_expire: "/proc/sys/vm/dirty_expire_centisecs" }, [INFO] [stderr] 103 | | DirtyWriteback { dirty_writeback: "/proc/sys/vm/dirty_writeback_centisecs" }, [INFO] [stderr] 104 | | NmiWatchdog { nmi_watchdog : "/proc/sys/kernel/nmi_watchdog" }, [INFO] [stderr] 105 | | PcieAspm { pcie_aspm: "/sys/module/pcie_aspm/parameters/policy" } [INFO] [stderr] 106 | | } [INFO] [stderr] | |_- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/kernel_parameters.rs:92:17 [INFO] [stderr] | [INFO] [stderr] 92 | fn get_path<'a>(&'a self) -> &'a Path { &self.path } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 108 | / dynamic_parameters! { [INFO] [stderr] 109 | | DiskIoSched { disk_io_scheduler: "/sys/block/{}/queue/scheduler" }, [INFO] [stderr] 110 | | PhcControls { phc_controls: "/sys/devices/system/cpu/cpu{}/cpufreq/phc_controls" }, [INFO] [stderr] 111 | | RadeonDpmState { radeon_dpm_state: "{}/power_dpm_state" }, [INFO] [stderr] ... | [INFO] [stderr] 121 | | } [INFO] [stderr] 122 | | } [INFO] [stderr] | |_- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: casting u32 to u64 may become silently lossy if types change [INFO] [stderr] --> src/kernel_parameters.rs:153:26 [INFO] [stderr] | [INFO] [stderr] 153 | let centisecs = (secs as u64 * 100).to_string(); [INFO] [stderr] | ^^^^^^^^^^^ help: try: `u64::from(secs)` [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: useless use of `format!` [INFO] [stderr] --> src/pci.rs:30:46 [INFO] [stderr] | [INFO] [stderr] 30 | write_file(self.path.join("rescan"), format!("1")) [INFO] [stderr] | ^^^^^^^^^^^^ help: consider using .to_string(): `"1".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/pci.rs:108:46 [INFO] [stderr] | [INFO] [stderr] 108 | write_file(self.path.join("remove"), format!("1")) [INFO] [stderr] | ^^^^^^^^^^^^ help: consider using .to_string(): `"1".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: this .into_iter() call is equivalent to .iter() and will not move the slice [INFO] [stderr] --> src/snd.rs:47:34 [INFO] [stderr] | [INFO] [stderr] 47 | Box::new(Self::SUPPORTED.into_iter().flat_map(|dev| SoundDevice::new(dev))) [INFO] [stderr] | ^^^^^^^^^ help: call directly: `iter` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::into_iter_on_ref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#into_iter_on_ref [INFO] [stderr] [INFO] [stderr] warning: this .into_iter() call is equivalent to .iter() and will not move the slice [INFO] [stderr] --> src/wifi.rs:58:34 [INFO] [stderr] | [INFO] [stderr] 58 | Box::new(Self::SUPPORTED.into_iter().flat_map(|dev| WifiDevice::new(dev))) [INFO] [stderr] | ^^^^^^^^^ help: call directly: `iter` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#into_iter_on_ref [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/main.rs:58:19 [INFO] [stderr] | [INFO] [stderr] 58 | let version = format!("{}", crate_version!()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `env ! ( "CARGO_PKG_VERSION" ).to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/main.rs:134:21 [INFO] [stderr] | [INFO] [stderr] 134 | Err(format!("must be run as root")) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"must be run as root".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] Finished dev [unoptimized + debuginfo] target(s) in 9.36s [INFO] running `"docker" "inspect" "63efd746fa46f3ccb3c04c1b1a4dd9f0b2c80a5b2a51ab4c489fa094a95af527"` [INFO] running `"docker" "rm" "-f" "63efd746fa46f3ccb3c04c1b1a4dd9f0b2c80a5b2a51ab4c489fa094a95af527"` [INFO] [stdout] 63efd746fa46f3ccb3c04c1b1a4dd9f0b2c80a5b2a51ab4c489fa094a95af527