diff --git a/Cargo.lock b/Cargo.lock index 6b83d49..4851d33 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -3,31 +3,32 @@ version = 3 [[package]] -name = "aho-corasick" -version = "0.7.18" +name = "ahash" +version = "0.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e37cfd5e7657ada45f742d6e99ca5788580b5c529dc78faf11ece6dc702656f" +checksum = "fcb51a0695d8f838b1ee009b3fbf66bda078cd64590202a864a8f3e8c4315c47" dependencies = [ - "memchr 2.5.0", + "getrandom", + "once_cell", + "version_check", ] [[package]] name = "anyhow" -version = "1.0.57" +version = "1.0.62" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08f9b8508dccb7687a1d6c4ce66b2b0ecef467c94667de27d8d7fe1f8d2a9cdc" +checksum = "1485d4d2cc45e7b201ee3767015c96faa5904387c9d87c6efdd0fb511f12d305" [[package]] -name = "arrayvec" -version = "0.5.2" +name = "async-trait" +version = "0.1.57" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23b62fc65de8e4e7f52534fb52b0f3ed04746ae267519eef2a83941e8085068b" - -[[package]] -name = "autocfg" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" +checksum = "76464446b8bc32758d7e88ee1a804d9914cd9b1cb264c029899680b0be29826f" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] [[package]] name = "bitflags" @@ -55,18 +56,16 @@ checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" [[package]] name = "config" -version = "0.11.0" +version = "0.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b1b9d958c2b1368a663f05538fc1b5975adce1e19f435acceae987aceeeb369" +checksum = "11f1667b8320afa80d69d8bbe40830df2c8a06003d86f73d8e003b2c48df416d" dependencies = [ + "async-trait", "lazy_static", - "nom 5.1.2", + "nom 7.1.1", + "pathdiff", "rust-ini", - "serde 1.0.137", - "serde-hjson", - "serde_json", - "toml", - "yaml-rust", + "serde", ] [[package]] @@ -184,9 +183,9 @@ dependencies = [ [[package]] name = "dirs" -version = "3.0.2" +version = "4.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "30baa043103c9d0c2a57cf537cc2f35623889dc0d405e6c3cccfadbc81c71309" +checksum = "ca3aa72a6f96ea37bbc5aa912f6788242832f75369bdfdadcb0e38423f100059" dependencies = [ "dirs-sys", ] @@ -204,7 +203,7 @@ dependencies = [ [[package]] name = "display_switch" -version = "1.1.0" +version = "1.2.0" dependencies = [ "anyhow", "config", @@ -218,13 +217,19 @@ dependencies = [ "nvapi", "paste", "rusb", - "serde 1.0.137", + "serde", "serde_json", "shell-words", "simplelog", "winapi", ] +[[package]] +name = "dlv-list" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0688c2a7f92e427f44895cd63841bff7b29f8d7a1648b9e7e07a4a365b2e1257" + [[package]] name = "dtoa" version = "0.4.8" @@ -257,15 +262,24 @@ checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" [[package]] name = "getrandom" -version = "0.2.6" +version = "0.2.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9be70c98951c83b8d2f8f60d7065fa6d5146873094452a1008da8c2f1e4205ad" +checksum = "4eb1a864a501629691edf6c15a593b7a51eebaa1e8468e9ddc623de7c9b58ec6" dependencies = [ "cfg-if", "libc", "wasi", ] +[[package]] +name = "hashbrown" +version = "0.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" +dependencies = [ + "ahash", +] + [[package]] name = "i2c" version = "0.1.0" @@ -311,9 +325,9 @@ dependencies = [ [[package]] name = "itoa" -version = "1.0.2" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "112c678d4050afce233f4f2852bb2eb519230b3cf12f33585275537d7e41578d" +checksum = "6c8af84674fe1f223a982c933a0ee1086ac4d4052aa0fb8060c12c6ad838e754" [[package]] name = "lazy_static" @@ -321,24 +335,11 @@ version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" -[[package]] -name = "lexical-core" -version = "0.7.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6607c62aa161d23d17a9072cc5da0be67cdfc89d3afb1e8d9c842bebc2525ffe" -dependencies = [ - "arrayvec", - "bitflags", - "cfg-if", - "ryu", - "static_assertions", -] - [[package]] name = "libc" -version = "0.2.126" +version = "0.2.132" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "349d5a591cd28b49e1d1037471617a32ddcda5731b99419008085f72d5a53836" +checksum = "8371e4e5341c3a96db127eb2465ac681ced4c433e01dd0e938adbef26ba93ba5" [[package]] name = "libudev-sys" @@ -364,9 +365,9 @@ dependencies = [ [[package]] name = "linked-hash-map" -version = "0.5.4" +version = "0.5.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7fb9b38af92608140b86b693604b9ffcc5824240a484d1ecd4795bacb2fe88f3" +checksum = "0717cef1bc8b636c6e1c1bbdefc09e6322da8a9321966e8928ef80d20f7f770f" [[package]] name = "log" @@ -422,7 +423,7 @@ checksum = "99726fbbe1e11e2908c461e8fab6c9106a5cb13338cc4feb68a01cced38026d0" dependencies = [ "mccs", "nom 3.2.1", - "serde 1.0.137", + "serde", "serde_derive", "serde_yaml", ] @@ -442,6 +443,12 @@ version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d" +[[package]] +name = "minimal-lexical" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" + [[package]] name = "nom" version = "3.2.1" @@ -453,31 +460,12 @@ dependencies = [ [[package]] name = "nom" -version = "5.1.2" +version = "7.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ffb4262d26ed83a1c0a33a38fe2bb15797329c85770da05e6b828ddb782627af" +checksum = "a8903e5a29a317527874d0402f867152a3d21c908bb0b933e416c65e301d4c36" dependencies = [ - "lexical-core", "memchr 2.5.0", - "version_check", -] - -[[package]] -name = "num-traits" -version = "0.1.43" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92e5113e9fd4cc14ded8e499429f396a20f98c772a47cc8622a736e1ec843c31" -dependencies = [ - "num-traits 0.2.15", -] - -[[package]] -name = "num-traits" -version = "0.2.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "578ede34cf02f8924ab9447f50c28075b4d3e5b269972345e7e0372b38c6cdcd" -dependencies = [ - "autocfg", + "minimal-lexical", ] [[package]] @@ -491,14 +479,14 @@ dependencies = [ [[package]] name = "nvapi" -version = "0.1.3" +version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "02c3253cb48b2bdaea1168730a32790a8c3deb5481d14b21028a9f6a548e803c" +checksum = "7c63de8cd8362e2c38d1a48dea6ae68e6293a8d8d22a52180d0f8dcc779b3158" dependencies = [ "i2c", "log", "nvapi-sys", - "serde 1.0.137", + "serde", "serde_derive", "void", ] @@ -510,16 +498,38 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b29e9a9393c69ee856bfcf5f76ed1ef32d2c0dd6f58558fd43334278fc1e7ea7" dependencies = [ "bitflags", - "serde 1.0.137", + "serde", "serde_derive", "winapi", ] +[[package]] +name = "once_cell" +version = "1.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "074864da206b4973b84eb91683020dbefd6a8c3f0f38e054d93954e891935e4e" + +[[package]] +name = "ordered-multimap" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ccd746e37177e1711c20dd619a1620f34f5c8b569c53590a72dedd5344d8924a" +dependencies = [ + "dlv-list", + "hashbrown", +] + [[package]] name = "paste" -version = "1.0.7" +version = "1.0.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c520e05135d6e763148b6426a837e239041653ba7becd2e538c076c738025fc" +checksum = "9423e2b32f7a043629287a536f21951e8c6a82482d0acb1eeebfc90bc2225b22" + +[[package]] +name = "pathdiff" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8835116a5c179084a830efb3adc117ab007512b535bc1a21c991d3b32a6b44dd" [[package]] name = "pkg-config" @@ -529,27 +539,27 @@ checksum = "1df8c4ec4b0627e53bdf214615ad287367e482558cf84b109250b37464dc03ae" [[package]] name = "proc-macro2" -version = "1.0.39" +version = "1.0.43" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c54b25569025b7fc9651de43004ae593a75ad88543b17178aa5e1b9c4f15f56f" +checksum = "0a2ca2c61bc9f3d74d2886294ab7b9853abd9c1ad903a3ac7815c58989bb7bab" dependencies = [ "unicode-ident", ] [[package]] name = "quote" -version = "1.0.18" +version = "1.0.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1feb54ed693b93a84e14094943b84b7c4eae204c512b7ccb95ab0c66d278ad1" +checksum = "bbe448f377a7d6961e30f5955f9b8d106c3f5e449d493ee1b125c1d43c2b5179" dependencies = [ "proc-macro2", ] [[package]] name = "redox_syscall" -version = "0.2.13" +version = "0.2.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62f25bc4c7e55e0b0b7a1d43fb893f4fa1361d0abe38b9ce4f323c2adfe6ef42" +checksum = "fb5a58c1855b4b6819d59012155603f0b22ad30cad752600aadfcb695265519a" dependencies = [ "bitflags", ] @@ -565,23 +575,6 @@ dependencies = [ "thiserror", ] -[[package]] -name = "regex" -version = "1.5.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d83f127d94bdbcda4c8cc2e50f6f84f4b611f69c902699ca385a39c3a75f9ff1" -dependencies = [ - "aho-corasick", - "memchr 2.5.0", - "regex-syntax", -] - -[[package]] -name = "regex-syntax" -version = "0.6.26" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49b3de9ec5dc0a3417da371aab17d729997c15010e7fd24ff707773a33bddb64" - [[package]] name = "resize-slice" version = "0.1.3" @@ -603,48 +596,34 @@ dependencies = [ [[package]] name = "rust-ini" -version = "0.13.0" +version = "0.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3e52c148ef37f8c375d49d5a73aa70713125b7f19095948a923f80afdeb22ec2" +checksum = "f6d5f2436026b4f6e79dc829837d467cc7e9a55ee40e750d716713540715a2df" +dependencies = [ + "cfg-if", + "ordered-multimap", +] [[package]] name = "ryu" -version = "1.0.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f3f6f92acf49d1b98f7a81226834412ada05458b7364277387724a237f062695" - -[[package]] -name = "serde" -version = "0.8.23" +version = "1.0.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9dad3f759919b92c3068c696c15c3d17238234498bbdcc80f2c469606f948ac8" +checksum = "4501abdff3ae82a1c1b477a17252eb69cee9e66eb915c1abaa4f44d873df9f09" [[package]] name = "serde" -version = "1.0.137" +version = "1.0.144" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61ea8d54c77f8315140a05f4c7237403bf38b72704d031543aa1d16abbf517d1" +checksum = "0f747710de3dcd43b88c9168773254e809d8ddbdf9653b84e2554ab219f17860" dependencies = [ "serde_derive", ] -[[package]] -name = "serde-hjson" -version = "0.9.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a3a4e0ea8a88553209f6cc6cfe8724ecad22e1acf372793c27d995290fe74f8" -dependencies = [ - "lazy_static", - "num-traits 0.1.43", - "regex", - "serde 0.8.23", -] - [[package]] name = "serde_derive" -version = "1.0.137" +version = "1.0.144" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1f26faba0c3959972377d3b2d306ee9f71faee9714294e41bb777f83f88578be" +checksum = "94ed3a816fb1d101812f83e789f888322c34e291f894f19590dc310963e87a00" dependencies = [ "proc-macro2", "quote", @@ -653,13 +632,13 @@ dependencies = [ [[package]] name = "serde_json" -version = "1.0.81" +version = "1.0.83" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b7ce2b32a1aed03c558dc61a5cd328f15aff2dbc17daad8fb8af04d2100e15c" +checksum = "38dd04e3c8279e75b31ef29dbdceebfe5ad89f4d0937213c53f7d49d01b3d5a7" dependencies = [ "itoa", "ryu", - "serde 1.0.137", + "serde", ] [[package]] @@ -670,7 +649,7 @@ checksum = "ef8099d3df28273c99a1728190c7a9f19d444c941044f64adf986bee7ec53051" dependencies = [ "dtoa", "linked-hash-map", - "serde 1.0.137", + "serde", "yaml-rust", ] @@ -691,17 +670,11 @@ dependencies = [ "time", ] -[[package]] -name = "static_assertions" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" - [[package]] name = "syn" -version = "1.0.95" +version = "1.0.99" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fbaf6116ab8924f39d52792136fb74fd60a80194cf1b1c6ffa6453eef1c3f942" +checksum = "58dbef6ec655055e20b86b15a8cc6d439cca19b667537ac6a1369572d151ab13" dependencies = [ "proc-macro2", "quote", @@ -719,18 +692,18 @@ dependencies = [ [[package]] name = "thiserror" -version = "1.0.31" +version = "1.0.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd829fe32373d27f76265620b5309d0340cb8550f523c1dda251d6298069069a" +checksum = "f5f6586b7f764adc0231f4c79be7b920e766bb2f3e51b3661cdb263828f19994" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.31" +version = "1.0.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0396bc89e626244658bef819e22d0cc459e795a5ebe878e6ec336d1674a8d79a" +checksum = "12bafc5b54507e0149cdf1b145a5d80ab80a90bcd9275df43d4fff68460f6c21" dependencies = [ "proc-macro2", "quote", @@ -739,9 +712,9 @@ dependencies = [ [[package]] name = "time" -version = "0.3.9" +version = "0.3.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c2702e08a7a860f005826c6815dcac101b19b5eb330c27fe4a5928fec1d20ddd" +checksum = "db76ff9fa4b1458b3c7f077f3ff9887394058460d21e634355b273aaf11eea45" dependencies = [ "itoa", "libc", @@ -755,15 +728,6 @@ version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "42657b1a6f4d817cda8e7a0ace261fe0cc946cf3a80314390b22cc61ae080792" -[[package]] -name = "toml" -version = "0.5.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8d82e1a7758622a465f8cee077614c73484dac5b836c02ff6a40d5d1010324d7" -dependencies = [ - "serde 1.0.137", -] - [[package]] name = "udev" version = "0.2.0" @@ -776,9 +740,9 @@ dependencies = [ [[package]] name = "unicode-ident" -version = "1.0.0" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d22af068fba1eb5edcb4aea19d382b2a3deb4c8f9d475c589b6ada9e0fd493ee" +checksum = "c4f5b37a154999a8f3f98cc23a628d850e154479cd94decf3414696e12e31aaf" [[package]] name = "uninitialized" @@ -806,9 +770,9 @@ checksum = "6a02e4885ed3bc0f2de90ea6dd45ebcbb66dacffe03547fadbb0eeae2770887d" [[package]] name = "wasi" -version = "0.10.2+wasi-snapshot-preview1" +version = "0.11.0+wasi-snapshot-preview1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fd6fbd9a79829dd1ad0cc20627bf1ed606756a7f77edff7b66b7064f9cb327c6" +checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" [[package]] name = "widestring" diff --git a/Cargo.toml b/Cargo.toml index 4a5d9ad..8a6780f 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,8 +1,8 @@ [package] name = "display_switch" -version = "1.1.0" +version = "1.2.0" authors = ["Haim Gelfenbeyn "] -edition = "2018" +edition = "2021" description = "An utility to watch for USB device connect/disconnect events and switch display inputs via DDC/CI" readme = "README.md" repository = "https://github.com/haimgel/display-switch/" @@ -13,9 +13,9 @@ serde = { version = "^1.0", features = ["derive"] } serde_json = "^1.0" [dependencies] -config = "^0.11" +config = { version = "^0.13", features = ["ini"], default-features = false } paste = "^1" -dirs = "^3.0" +dirs = "^4.0" serde = { version = "^1.0", features = ["derive"] } anyhow = "^1.0" log = "^0.4" diff --git a/rust-toolchain b/rust-toolchain index 0704e89..7cc6ef4 100644 --- a/rust-toolchain +++ b/rust-toolchain @@ -1 +1 @@ -1.55.0 \ No newline at end of file +1.63.0 \ No newline at end of file diff --git a/src/configuration.rs b/src/configuration.rs index 597c272..33067b8 100644 --- a/src/configuration.rs +++ b/src/configuration.rs @@ -91,11 +91,11 @@ impl InputSources { impl Configuration { pub fn load() -> Result { let config_file_name = Self::config_file_name()?; - let mut settings = config::Config::default(); - settings - .merge(config::File::from(config_file_name.clone()))? - .merge(config::Environment::with_prefix("DISPLAY_SWITCH"))?; - let config = settings.try_into::()?; + let builder = config::Config::builder() + .add_source(config::File::from(config_file_name.clone())) + .add_source(config::Environment::with_prefix("DISPLAY_SWITCH")); + + let config = builder.build()?.try_deserialize()?; info!("Configuration loaded ({:?}): {:?}", config_file_name, config); Ok(config) } @@ -180,9 +180,10 @@ mod tests { } fn load_test_config(config_str: &str) -> Result { - let mut settings = config::Config::default(); - settings.merge(config::File::from_str(config_str, Ini)).unwrap(); - settings.try_into::() + config::Config::builder() + .add_source(config::File::from_str(config_str, Ini)) + .build()? + .try_deserialize() } #[test] diff --git a/src/display_control.rs b/src/display_control.rs index 011a424..fe25266 100644 --- a/src/display_control.rs +++ b/src/display_control.rs @@ -48,26 +48,26 @@ fn are_display_names_unique(displays: &[Display]) -> bool { } fn try_switch_display(handle: &mut Handle, display_name: &str, input: InputSource) { - match handle.get_vcp_feature(INPUT_SELECT) { - Ok(raw_source) => { - if raw_source.value() & 0xff == input.value() { - info!("Display {} is already set to {}", display_name, input); - return; - } - } - Err(err) => { - warn!("Failed to get current input for display {}: {:?}", display_name, err); - } - } - debug!("Setting display {} to {}", display_name, input); - match handle.set_vcp_feature(INPUT_SELECT, input.value()) { - Ok(_) => { - info!("Display {} set to {}", display_name, input); - } - Err(err) => { - error!("Failed to set display {} to {} ({:?})", display_name, input, err); - } - } + match handle.get_vcp_feature(INPUT_SELECT) { + Ok(raw_source) => { + if raw_source.value() & 0xff == input.value() { + info!("Display {} is already set to {}", display_name, input); + return; + } + } + Err(err) => { + warn!("Failed to get current input for display {}: {:?}", display_name, err); + } + } + debug!("Setting display {} to {}", display_name, input); + match handle.set_vcp_feature(INPUT_SELECT, input.value()) { + Ok(_) => { + info!("Display {} set to {}", display_name, input); + } + Err(err) => { + error!("Failed to set display {} to {} ({:?})", display_name, input, err); + } + } } fn displays() -> Vec { @@ -121,7 +121,7 @@ pub fn switch(config: &Configuration, switch_direction: SwitchDirection) { let input_sources = config.configuration_for_monitor(&display_name); debug!("Input sources found for display {}: {:?}", display_name, input_sources); if let Some(input) = input_sources.source(switch_direction) { - try_switch_display(&mut display.handle, &display_name, input); + try_switch_display(&mut display.handle, &display_name, input); } else { info!( "Display {} is not configured to switch on USB {}", diff --git a/src/logging.rs b/src/logging.rs index 724671a..9b0df0a 100644 --- a/src/logging.rs +++ b/src/logging.rs @@ -12,7 +12,12 @@ use crate::configuration::Configuration; pub fn init_logging() -> Result<()> { Ok(CombinedLogger::init(vec![ - TermLogger::new(LevelFilter::Debug, Config::default(), TerminalMode::Mixed, ColorChoice::Auto), + TermLogger::new( + LevelFilter::Debug, + Config::default(), + TerminalMode::Mixed, + ColorChoice::Auto, + ), WriteLogger::new( LevelFilter::Debug, Config::default(), diff --git a/src/platform/pnp_detect_libusb.rs b/src/platform/pnp_detect_libusb.rs index 239802d..424d05a 100644 --- a/src/platform/pnp_detect_libusb.rs +++ b/src/platform/pnp_detect_libusb.rs @@ -5,7 +5,7 @@ use crate::usb::{device2str, UsbCallback}; use anyhow::{anyhow, Result}; -use rusb::{Context, Device, HotplugBuilder, UsbContext, Registration}; +use rusb::{Context, Device, HotplugBuilder, Registration, UsbContext}; /// Detection of plugged in / removed USB devices: uses "libusb" and should work on Linux /// and MacOS, but not on Windows: libusb does not support hotplug on Windows. @@ -36,10 +36,10 @@ impl PnPDetectLibusb { if rusb::has_hotplug() { let context = Context::new()?; - let mut _reg: std::option::Option> = Some( - HotplugBuilder::new() - .enumerate(true) - .register(&context, Box::new(self))?, + let _reg: std::option::Option> = Some( + HotplugBuilder::new() + .enumerate(true) + .register(&context, Box::new(self))?, ); loop { diff --git a/src/platform/pnp_detect_windows.rs b/src/platform/pnp_detect_windows.rs index ad6941d..baad0eb 100644 --- a/src/platform/pnp_detect_windows.rs +++ b/src/platform/pnp_detect_windows.rs @@ -106,34 +106,35 @@ impl PnPDetectWindows { /// Create an invisible window to handle WM_DEVICECHANGE message fn create_window(&mut self) { - let winapi_class_name: Vec = OsStr::new("DisplaySwitchPnPDetectWindowClass") - .encode_wide() - .chain(once(0)) - .collect(); - let hinstance = unsafe { GetModuleHandleW(std::ptr::null()) }; + let winapi_class_name: Vec = OsStr::new("DisplaySwitchPnPDetectWindowClass") + .encode_wide() + .chain(once(0)) + .collect(); + let hinstance = unsafe { GetModuleHandleW(std::ptr::null()) }; - let wc = WNDCLASSW { - style: 0, - lpfnWndProc: Some(Self::window_proc), - cbClsExtra: 0, - cbWndExtra: 0, - hInstance: hinstance, - hIcon: 0 as HICON, - hCursor: 0 as HCURSOR, - hbrBackground: 0 as HBRUSH, - lpszMenuName: 0 as LPCWSTR, - lpszClassName: winapi_class_name.as_ptr(), - }; + let wc = WNDCLASSW { + style: 0, + lpfnWndProc: Some(Self::window_proc), + cbClsExtra: 0, + cbWndExtra: 0, + hInstance: hinstance, + hIcon: 0 as HICON, + hCursor: 0 as HCURSOR, + hbrBackground: 0 as HBRUSH, + lpszMenuName: 0 as LPCWSTR, + lpszClassName: winapi_class_name.as_ptr(), + }; - let error_code = unsafe { RegisterClassW(&wc) }; - assert_ne!(error_code, 0, "failed to register the window class"); + let error_code = unsafe { RegisterClassW(&wc) }; + assert_ne!(error_code, 0, "failed to register the window class"); - let window_name: Vec = OsStr::new("DisplaySwitchPnPDetectWindow") - .encode_wide() - .chain(once(0)) - .collect(); + let window_name: Vec = OsStr::new("DisplaySwitchPnPDetectWindow") + .encode_wide() + .chain(once(0)) + .collect(); - let hwnd = unsafe { CreateWindowExW( + let hwnd = unsafe { + CreateWindowExW( 0, winapi_class_name.as_ptr(), window_name.as_ptr(), @@ -147,12 +148,12 @@ impl PnPDetectWindows { hinstance, self as *mut Self as *mut winapi::ctypes::c_void, //std::ptr::null_mut(), - ) }; + ) + }; - if hwnd.is_null() { - panic!("Something went wrong while creating a window"); - } - self.hwnd = hwnd; - + if hwnd.is_null() { + panic!("Something went wrong while creating a window"); + } + self.hwnd = hwnd; } }