[INFO] fetching crate rusthound-ce 2.4.7... [INFO] linting rusthound-ce-2.4.7 against nightly for clippy-nonminimal_bool-denied [INFO] extracting crate rusthound-ce 2.4.7 into /workspace/builds/worker-1-tc1/source [INFO] started tweaking crates.io crate rusthound-ce 2.4.7 [INFO] finished tweaking crates.io crate rusthound-ce 2.4.7 [INFO] tweaked toml for crates.io crate rusthound-ce 2.4.7 written to /workspace/builds/worker-1-tc1/source/Cargo.toml [INFO] validating manifest of crates.io crate rusthound-ce 2.4.7 on toolchain nightly [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+nightly" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }` [INFO] crate crates.io crate rusthound-ce 2.4.7 already has a lockfile, it will not be regenerated [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+nightly" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] [stderr] Updating crates.io index [INFO] [stderr] Downloading crates ... [INFO] [stderr] Downloaded obfstr v0.4.4 [INFO] [stderr] Downloaded lber v0.4.2 [INFO] [stderr] Downloaded cross-krb5 v0.4.2 [INFO] [stderr] Downloaded libgssapi v0.7.2 [INFO] [stderr] Downloaded libgssapi v0.9.0 [INFO] [stderr] Downloaded libz-rs-sys v0.5.5 [INFO] [stderr] Downloaded libgssapi-sys v0.3.3 [INFO] [stderr] Downloaded zip v4.6.1 [INFO] [stderr] Downloaded x509-parser v0.15.1 [INFO] [stderr] Downloaded ldap3 v0.11.5 [INFO] [stderr] Downloaded zlib-rs v0.5.5 [INFO] [stderr] Downloaded trust-dns-resolver v0.23.2 [INFO] [stderr] Downloaded trust-dns-proto v0.23.2 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+nightly" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }` [INFO] [stdout] 80cd8423168b1a894923936e3c8e937c29c4600a82c3a72bb082a12104cb2e2d [INFO] running `Command { std: "docker" "start" "-a" "80cd8423168b1a894923936e3c8e937c29c4600a82c3a72bb082a12104cb2e2d", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "80cd8423168b1a894923936e3c8e937c29c4600a82c3a72bb082a12104cb2e2d", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "80cd8423168b1a894923936e3c8e937c29c4600a82c3a72bb082a12104cb2e2d", kill_on_drop: false }` [INFO] [stdout] 80cd8423168b1a894923936e3c8e937c29c4600a82c3a72bb082a12104cb2e2d [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+nightly" "clippy" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] f546beaa7be8f340a5aa8ebb30dfb85a9199755d7efd8c79910e81a9fada1b82 [INFO] running `Command { std: "docker" "start" "-a" "f546beaa7be8f340a5aa8ebb30dfb85a9199755d7efd8c79910e81a9fada1b82", kill_on_drop: false }` [INFO] [stderr] Compiling synstructure v0.13.2 [INFO] [stderr] Compiling displaydoc v0.2.5 [INFO] [stderr] Compiling zerovec-derive v0.11.1 [INFO] [stderr] Compiling thiserror-impl v1.0.69 [INFO] [stderr] Compiling cc v1.2.27 [INFO] [stderr] Checking nom v7.1.3 [INFO] [stderr] Checking getrandom v0.2.16 [INFO] [stderr] Checking deranged v0.4.0 [INFO] [stderr] Compiling time-macros v0.2.22 [INFO] [stderr] Compiling prettyplease v0.2.35 [INFO] [stderr] Checking time-core v0.1.4 [INFO] [stderr] Compiling syn v1.0.109 [INFO] [stderr] Compiling bindgen v0.71.1 [INFO] [stderr] Checking socket2 v0.6.1 [INFO] [stderr] Compiling tokio-macros v2.6.0 [INFO] [stderr] Checking futures-channel v0.3.31 [INFO] [stderr] Checking futures-util v0.3.31 [INFO] [stderr] Checking rand_core v0.6.4 [INFO] [stderr] Checking tinyvec v1.9.0 [INFO] [stderr] Compiling asn1-rs-impl v0.2.0 [INFO] [stderr] Checking anstyle v1.0.11 [INFO] [stderr] Checking anstyle-query v1.1.3 [INFO] [stderr] Checking rand_chacha v0.3.1 [INFO] [stderr] Checking crc32fast v1.4.2 [INFO] [stderr] Checking anstream v0.6.19 [INFO] [stderr] Compiling tracing-attributes v0.1.30 [INFO] [stderr] Compiling zerofrom-derive v0.1.6 [INFO] [stderr] Compiling yoke-derive v0.8.0 [INFO] [stderr] Compiling asn1-rs-derive v0.5.1 [INFO] [stderr] Compiling async-trait v0.1.89 [INFO] [stderr] Checking hashbrown v0.15.4 [INFO] [stderr] Checking tokio v1.48.0 [INFO] [stderr] Checking unicode-normalization v0.1.24 [INFO] [stderr] Checking thiserror v1.0.69 [INFO] [stderr] Checking unicode-bidi v0.3.18 [INFO] [stderr] Compiling portable-atomic v1.11.1 [INFO] [stderr] Checking zlib-rs v0.5.5 [INFO] [stderr] Compiling oid-registry v0.7.1 [INFO] [stderr] Checking idna v0.4.0 [INFO] [stderr] Compiling enum-as-inner v0.6.1 [INFO] [stderr] Checking indexmap v2.9.0 [INFO] [stderr] Checking time v0.3.41 [INFO] [stderr] Checking rand v0.8.5 [INFO] [stderr] Checking parking_lot_core v0.9.11 [INFO] [stderr] Checking rusticata-macros v4.1.0 [INFO] [stderr] Checking bumpalo v3.18.1 [INFO] [stderr] Checking unicode-width v0.2.1 [INFO] [stderr] Compiling serde_json v1.0.140 [INFO] [stderr] Compiling virtue v0.0.18 [INFO] [stderr] Checking console v0.15.11 [INFO] [stderr] Checking clap_builder v4.5.50 [INFO] [stderr] Checking rustls-native-certs v0.6.3 [INFO] [stderr] Checking parking_lot v0.12.4 [INFO] [stderr] Checking env_filter v0.1.3 [INFO] [stderr] Checking zopfli v0.8.2 [INFO] [stderr] Checking lber v0.4.2 [INFO] [stderr] Checking zerofrom v0.1.6 [INFO] [stderr] Compiling ring v0.17.14 [INFO] [stderr] Compiling ring v0.16.20 [INFO] [stderr] Checking yoke v0.8.0 [INFO] [stderr] Checking tracing v0.1.41 [INFO] [stderr] Checking rtoolbox v0.0.3 [INFO] [stderr] Compiling bincode_derive v2.0.1 [INFO] [stderr] Checking jiff v0.2.15 [INFO] [stderr] Checking number_prefix v0.4.0 [INFO] [stderr] Checking unty v0.0.4 [INFO] [stderr] Checking zerovec v0.11.2 [INFO] [stderr] Checking zerotrie v0.2.2 [INFO] [stderr] Checking resolv-conf v0.7.4 [INFO] [stderr] Checking sha1 v0.10.6 [INFO] [stderr] Checking chrono v0.4.41 [INFO] [stderr] Checking rpassword v7.4.0 [INFO] [stderr] Checking colored v2.2.0 [INFO] [stderr] Checking bincode v2.0.1 [INFO] [stderr] Checking libz-rs-sys v0.5.5 [INFO] [stderr] Checking indicatif v0.17.11 [INFO] [stderr] Checking obfstr v0.4.4 [INFO] [stderr] Checking flate2 v1.1.5 [INFO] [stderr] Checking futures-executor v0.3.31 [INFO] [stderr] Checking futures v0.3.31 [INFO] [stderr] Checking zip v4.6.1 [INFO] [stderr] Checking asn1-rs v0.6.2 [INFO] [stderr] Checking tinystr v0.8.1 [INFO] [stderr] Checking potential_utf v0.1.2 [INFO] [stderr] Checking clap v4.5.50 [INFO] [stderr] Checking icu_collections v2.0.0 [INFO] [stderr] Checking icu_locale_core v2.0.0 [INFO] [stderr] Checking tokio-util v0.7.16 [INFO] [stderr] Checking tokio-stream v0.1.17 [INFO] [stderr] Compiling synstructure v0.12.6 [INFO] [stderr] Checking der-parser v9.0.0 [INFO] [stderr] Compiling rustls v0.21.12 [INFO] [stderr] Checking icu_provider v2.0.0 [INFO] [stderr] Compiling asn1-rs-impl v0.1.0 [INFO] [stderr] Checking x509-parser v0.16.0 [INFO] [stderr] Compiling asn1-rs-derive v0.4.0 [INFO] [stderr] Checking icu_normalizer v2.0.0 [INFO] [stderr] Checking icu_properties v2.0.1 [INFO] [stderr] Checking asn1-rs v0.5.2 [INFO] [stderr] Checking env_logger v0.11.8 [INFO] [stderr] Checking sct v0.7.1 [INFO] [stderr] Checking rustls-webpki v0.101.7 [INFO] [stderr] Checking idna_adapter v1.2.1 [INFO] [stderr] Checking idna v1.1.0 [INFO] [stderr] Checking url v2.5.7 [INFO] [stderr] Checking oid-registry v0.6.1 [INFO] [stderr] Checking der-parser v8.2.0 [INFO] [stderr] Checking x509-parser v0.15.1 [INFO] [stderr] Checking trust-dns-proto v0.23.2 [INFO] [stderr] Compiling libgssapi-sys v0.3.3 [INFO] [stderr] Checking tokio-rustls v0.24.1 [INFO] [stderr] Checking trust-dns-resolver v0.23.2 [INFO] [stderr] Checking libgssapi v0.9.0 [INFO] [stderr] Checking cross-krb5 v0.4.2 [INFO] [stderr] Checking ldap3 v0.11.5 [INFO] [stderr] Checking rusthound-ce v2.4.7 (/opt/rustwide/workdir) [INFO] [stdout] warning: empty line after doc comment [INFO] [stdout] --> src/enums/regex.rs:4:1 [INFO] [stdout] | [INFO] [stdout] 4 | / /// [INFO] [stdout] 5 | | [INFO] [stdout] | |_^ [INFO] [stdout] 6 | // Use by ./RustHound-CE/src/enums/gplink.rs [INFO] [stdout] 7 | pub static GPLINK_RE1: Lazy = Lazy::new(|| Regex::new(r"[a-zA-Z0-9-]{36}").unwrap()); [INFO] [stdout] | --------------------- the comment documents this static item [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#empty_line_after_doc_comments [INFO] [stdout] = note: `#[warn(clippy::empty_line_after_doc_comments)]` on by default [INFO] [stdout] = help: if the empty line is unintentional, remove it [INFO] [stdout] help: if the doc comment should not document static item `GPLINK_RE1` then comment it out [INFO] [stdout] | [INFO] [stdout] 4 | // /// [INFO] [stdout] | ++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: empty line after doc comment [INFO] [stdout] --> src/enums/regex.rs:4:1 [INFO] [stdout] | [INFO] [stdout] 4 | / /// [INFO] [stdout] 5 | | [INFO] [stdout] | |_^ [INFO] [stdout] 6 | // Use by ./RustHound-CE/src/enums/gplink.rs [INFO] [stdout] 7 | pub static GPLINK_RE1: Lazy = Lazy::new(|| Regex::new(r"[a-zA-Z0-9-]{36}").unwrap()); [INFO] [stdout] | --------------------- the comment documents this static item [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#empty_line_after_doc_comments [INFO] [stdout] = note: `#[warn(clippy::empty_line_after_doc_comments)]` on by default [INFO] [stdout] = help: if the empty line is unintentional, remove it [INFO] [stdout] help: if the doc comment should not document static item `GPLINK_RE1` then comment it out [INFO] [stdout] | [INFO] [stdout] 4 | // /// [INFO] [stdout] | ++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/ldap.rs:81:42 [INFO] [stdout] | [INFO] [stdout] 81 | gssapi_connection(&mut ldap, &ldapfqdn, &domain).await?; [INFO] [stdout] | ^^^^^^^^^ help: change this to: `ldapfqdn` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] = note: `#[warn(clippy::needless_borrow)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/ldap.rs:81:53 [INFO] [stdout] | [INFO] [stdout] 81 | gssapi_connection(&mut ldap, &ldapfqdn, &domain).await?; [INFO] [stdout] | ^^^^^^^ help: change this to: `domain` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this function has too many arguments (8/7) [INFO] [stdout] --> src/ldap.rs:218:1 [INFO] [stdout] | [INFO] [stdout] 218 | / fn ldap_constructor( [INFO] [stdout] 219 | | ldaps: bool, [INFO] [stdout] 220 | | ip: Option<&str>, [INFO] [stdout] 221 | | port: Option, [INFO] [stdout] ... | [INFO] [stdout] 226 | | kerberos: bool, [INFO] [stdout] 227 | | ) -> Result> { [INFO] [stdout] | |_____________________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#too_many_arguments [INFO] [stdout] = note: `#[warn(clippy::too_many_arguments)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: calling `push_str()` using a single-character string literal [INFO] [stdout] --> src/ldap.rs:259:9 [INFO] [stdout] | [INFO] [stdout] 259 | s_email.push_str("@"); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ help: consider using `push` with a character literal: `s_email.push('@')` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_add_str [INFO] [stdout] = note: `#[warn(clippy::single_char_add_str)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this pattern reimplements `Option::unwrap_or` [INFO] [stdout] --> src/ldap.rs:278:22 [INFO] [stdout] | [INFO] [stdout] 278 | debug!("IP: {}", match ip { [INFO] [stdout] | ______________________^ [INFO] [stdout] 279 | | Some(ip) => ip, [INFO] [stdout] 280 | | None => "not set" [INFO] [stdout] 281 | | }); [INFO] [stdout] | |_____^ help: replace with: `ip.unwrap_or("not set")` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_unwrap_or [INFO] [stdout] = note: `#[warn(clippy::manual_unwrap_or)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to want to iterate on a map's values [INFO] [stdout] --> src/ldap.rs:411:38 [INFO] [stdout] | [INFO] [stdout] 411 | for (_key, value) in &result_attrs { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#for_kv_map [INFO] [stdout] = note: `#[warn(clippy::for_kv_map)]` on by default [INFO] [stdout] help: use the corresponding method [INFO] [stdout] | [INFO] [stdout] 411 - for (_key, value) in &result_attrs { [INFO] [stdout] 411 + for value in result_attrs.values() { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: calling `push_str()` using a single-character string literal [INFO] [stdout] --> src/utils/format.rs:11:13 [INFO] [stdout] | [INFO] [stdout] 11 | dc.push_str(","); [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: consider using `push` with a character literal: `dc.push(',')` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_add_str [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you are using an explicit closure for copying elements [INFO] [stdout] --> src/enums/sid.rs:37:5 [INFO] [stdout] | [INFO] [stdout] 37 | sid.as_bytes().iter().map(|x| *x).collect::>() [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider calling the dedicated `copied` method: `sid.as_bytes().iter().copied()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stdout] = note: `#[warn(clippy::map_clone)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this operation has no effect [INFO] [stdout] --> src/enums/sid.rs:47:44 [INFO] [stdout] | [INFO] [stdout] 47 | let raw_guid = raw_guid.iter().map(|x| x & 0xFF).collect::>(); [INFO] [stdout] | ^^^^^^^^ help: consider reducing it to: `*x` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_op [INFO] [stdout] = note: `#[warn(clippy::identity_op)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you are using an explicit closure for copying elements [INFO] [stdout] --> src/enums/sid.rs:48:41 [INFO] [stdout] | [INFO] [stdout] 48 | let rev = | x: &[u8] | -> Vec { x.iter().map(|i| *i).rev().collect::>()}; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: consider calling the dedicated `copied` method: `x.iter().copied()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this operation has no effect [INFO] [stdout] --> src/enums/sid.rs:78:44 [INFO] [stdout] | [INFO] [stdout] 78 | let raw_guid = raw_guid.iter().map(|x| x & 0xFF).collect::>(); [INFO] [stdout] | ^^^^^^^^ help: consider reducing it to: `*x` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_op [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you are using an explicit closure for copying elements [INFO] [stdout] --> src/enums/sid.rs:79:41 [INFO] [stdout] | [INFO] [stdout] 79 | let rev = | x: &[u8] | -> Vec { x.iter().map(|i| *i).collect::>()}; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: consider calling the dedicated `copied` method: `x.iter().copied()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> src/enums/acl.rs:19:9 [INFO] [stdout] | [INFO] [stdout] 19 | nt: &Vec, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] = note: `#[warn(clippy::ptr_arg)]` on by default [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 19 - nt: &Vec, [INFO] [stdout] 19 + nt: &[u8], [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/enums/acl.rs:272:24 [INFO] [stdout] | [INFO] [stdout] 272 | && !(&flags & ACE_OBJECT_TYPE_PRESENT == ACE_OBJECT_TYPE_PRESENT) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `(&flags & ACE_OBJECT_TYPE_PRESENT != ACE_OBJECT_TYPE_PRESENT)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stdout] = note: `#[warn(clippy::nonminimal_bool)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/enums/acl.rs:419:24 [INFO] [stdout] | [INFO] [stdout] 419 | && !(&flags & ACE_OBJECT_TYPE_PRESENT == ACE_OBJECT_TYPE_PRESENT) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `(&flags & ACE_OBJECT_TYPE_PRESENT != ACE_OBJECT_TYPE_PRESENT)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this function has too many arguments (8/7) [INFO] [stdout] --> src/enums/acl.rs:111:1 [INFO] [stdout] | [INFO] [stdout] 111 | / fn ace_maker( [INFO] [stdout] 112 | | object: &mut T, [INFO] [stdout] 113 | | domain: &str, [INFO] [stdout] 114 | | relations: &mut Vec, [INFO] [stdout] ... | [INFO] [stdout] 119 | | _result_bin: &HashMap>>, [INFO] [stdout] 120 | | ) { [INFO] [stdout] | |_^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#too_many_arguments [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: needlessly taken reference of left operand [INFO] [stdout] --> src/enums/acl.rs:175:21 [INFO] [stdout] | [INFO] [stdout] 175 | && (&flags & ACE_INHERITED_OBJECT_TYPE_PRESENT == ACE_INHERITED_OBJECT_TYPE_PRESENT) [INFO] [stdout] | ------^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: use the left value directly: `flags` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#op_ref [INFO] [stdout] = note: `#[warn(clippy::op_ref)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary use of `to_vec` [INFO] [stdout] --> src/enums/acl.rs:183:47 [INFO] [stdout] | [INFO] [stdout] 183 | let ace_guid = decode_guid_le(&inherited_object_type.to_le_bytes().to_vec()).to_lowercase(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use: `inherited_object_type.to_le_bytes().as_ref()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_to_owned [INFO] [stdout] = note: `#[warn(clippy::unnecessary_to_owned)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary use of `to_vec` [INFO] [stdout] --> src/enums/acl.rs:195:43 [INFO] [stdout] | [INFO] [stdout] 195 | let ace_guid = decode_guid_le(&object_type.to_le_bytes().to_vec()).to_lowercase(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use: `object_type.to_le_bytes().as_ref()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_to_owned [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary use of `to_vec` [INFO] [stdout] --> src/enums/acl.rs:205:57 [INFO] [stdout] | [INFO] [stdout] 205 | let inherited_ace_guid = decode_guid_le(&inherited_object_type.to_le_bytes().to_vec()).to_lowercase(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use: `inherited_object_type.to_le_bytes().as_ref()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_to_owned [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: needlessly taken reference of left operand [INFO] [stdout] --> src/enums/acl.rs:206:20 [INFO] [stdout] | [INFO] [stdout] 206 | ... if &flags & ACE_INHERITED_OBJECT_TYPE_PRESENT == ACE_INHERITED_OBJECT_TYPE_PRESENT && !ace_applies(&inherited_ace_guid, entry... [INFO] [stdout] | ------^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: use the left value directly: `flags` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#op_ref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: needlessly taken reference of left operand [INFO] [stdout] --> src/enums/acl.rs:272:26 [INFO] [stdout] | [INFO] [stdout] 272 | && !(&flags & ACE_OBJECT_TYPE_PRESENT == ACE_OBJECT_TYPE_PRESENT) [INFO] [stdout] | ------^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: use the left value directly: `flags` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#op_ref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: needlessly taken reference of left operand [INFO] [stdout] --> src/enums/acl.rs:341:25 [INFO] [stdout] | [INFO] [stdout] 341 | && (&flags & ACE_OBJECT_TYPE_PRESENT == ACE_OBJECT_TYPE_PRESENT) [INFO] [stdout] | ------^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: use the left value directly: `flags` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#op_ref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: needlessly taken reference of left operand [INFO] [stdout] --> src/enums/acl.rs:353:25 [INFO] [stdout] | [INFO] [stdout] 353 | && (&flags & ACE_OBJECT_TYPE_PRESENT == ACE_OBJECT_TYPE_PRESENT) [INFO] [stdout] | ------^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: use the left value directly: `flags` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#op_ref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/enums/acl.rs:365:18 [INFO] [stdout] | [INFO] [stdout] 365 | else if (MaskFlags::ADS_RIGHT_DS_SELF.bits() | mask) == mask [INFO] [stdout] | __________________^ [INFO] [stdout] 366 | | { [INFO] [stdout] 367 | | if (entry_type == "Group") && (&ace_guid == WRITE_MEMBER) [INFO] [stdout] ... | [INFO] [stdout] 377 | | } [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] = note: `#[warn(clippy::collapsible_if)]` on by default [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 365 ~ else if (MaskFlags::ADS_RIGHT_DS_SELF.bits() | mask) == mask [INFO] [stdout] 366 ~ && (entry_type == "Group") && (&ace_guid == WRITE_MEMBER) [INFO] [stdout] 367 | { [INFO] [stdout] ... [INFO] [stdout] 374 | )); [INFO] [stdout] 375 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: needlessly taken reference of left operand [INFO] [stdout] --> src/enums/acl.rs:367:47 [INFO] [stdout] | [INFO] [stdout] 367 | if (entry_type == "Group") && (&ace_guid == WRITE_MEMBER) [INFO] [stdout] | ^---------^^^^^^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: use the left value directly: `ace_guid` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#op_ref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/enums/acl.rs:381:13 [INFO] [stdout] | [INFO] [stdout] 381 | / if (MaskFlags::ADS_RIGHT_DS_READ_PROP.bits() | mask) == mask [INFO] [stdout] 382 | | { [INFO] [stdout] 383 | | if (entry_type == "Computer") [INFO] [stdout] 384 | | && (&flags & ACE_OBJECT_TYPE_PRESENT == ACE_OBJECT_TYPE_PRESENT) [INFO] [stdout] ... | [INFO] [stdout] 400 | | } [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 381 ~ if (MaskFlags::ADS_RIGHT_DS_READ_PROP.bits() | mask) == mask [INFO] [stdout] 382 ~ && (entry_type == "Computer") [INFO] [stdout] 383 | && (&flags & ACE_OBJECT_TYPE_PRESENT == ACE_OBJECT_TYPE_PRESENT) [INFO] [stdout] ... [INFO] [stdout] 397 | } [INFO] [stdout] 398 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/enums/acl.rs:383:17 [INFO] [stdout] | [INFO] [stdout] 383 | / if (entry_type == "Computer") [INFO] [stdout] 384 | | && (&flags & ACE_OBJECT_TYPE_PRESENT == ACE_OBJECT_TYPE_PRESENT) [INFO] [stdout] 385 | | && object.get_haslaps().to_owned() [INFO] [stdout] ... | [INFO] [stdout] 399 | | } [INFO] [stdout] | |_________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 385 ~ && object.get_haslaps().to_owned() [INFO] [stdout] 386 ~ && (&ace_guid == OBJECTTYPE_GUID_HASHMAP.get("ms-mcs-admpwd").unwrap_or(&String::from("GUID-NOT-FOUND")) [INFO] [stdout] 387 | || &ace_guid == OBJECTTYPE_GUID_HASHMAP.get("ms-laps-password").unwrap_or(&String::from("GUID-NOT-FOUND")) [INFO] [stdout] 388 ~ || &ace_guid == OBJECTTYPE_GUID_HASHMAP.get("ms-laps-encryptedpassword").unwrap_or(&String::from("GUID-NOT-FOUND"))) [INFO] [stdout] 389 | { [INFO] [stdout] ... [INFO] [stdout] 396 | )); [INFO] [stdout] 397 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: needlessly taken reference of left operand [INFO] [stdout] --> src/enums/acl.rs:384:25 [INFO] [stdout] | [INFO] [stdout] 384 | && (&flags & ACE_OBJECT_TYPE_PRESENT == ACE_OBJECT_TYPE_PRESENT) [INFO] [stdout] | ------^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: use the left value directly: `flags` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#op_ref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: needlessly taken reference of left operand [INFO] [stdout] --> src/enums/acl.rs:419:26 [INFO] [stdout] | [INFO] [stdout] 419 | && !(&flags & ACE_OBJECT_TYPE_PRESENT == ACE_OBJECT_TYPE_PRESENT) [INFO] [stdout] | ------^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: use the left value directly: `flags` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#op_ref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/enums/acl.rs:673:43 [INFO] [stdout] | [INFO] [stdout] 673 | let object_type_guid = decode_guid_le(&typea.to_le_bytes().as_ref()).to_lowercase(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `typea.to_le_bytes().as_ref()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/enums/acl.rs:714:59 [INFO] [stdout] | [INFO] [stdout] 714 | trace!("AceFormat::get_object_type {}",decode_guid_le(&typea.to_le_bytes().as_ref()).to_lowercase()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `typea.to_le_bytes().as_ref()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/enums/acl.rs:717:23 [INFO] [stdout] | [INFO] [stdout] 717 | if decode_guid_le(&typea.to_le_bytes().as_ref()).to_lowercase() == bin_right_guid.to_lowercase() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `typea.to_le_bytes().as_ref()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the variable `count` is used as a loop counter [INFO] [stdout] --> src/enums/secdesc.rs:420:9 [INFO] [stdout] | [INFO] [stdout] 420 | for ace in &acl.data { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: consider using: `for (count, ace) in (1..).zip(acl.data.iter())` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_counter_loop [INFO] [stdout] = note: `#[warn(clippy::explicit_counter_loop)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: accessing first element with `vec_users.get(0)` [INFO] [stdout] --> src/json/checker/common.rs:267:31 [INFO] [stdout] | [INFO] [stdout] 267 | if let Some(first_user) = vec_users.get(0) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: try: `vec_users.first()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_first [INFO] [stdout] = note: `#[warn(clippy::get_first)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/json/checker/common.rs:320:83 [INFO] [stdout] | [INFO] [stdout] 320 | *member.object_type_mut() = sid_type.get(value_sid).unwrap_or(&value_sid).to_string(); [INFO] [stdout] | ^^^^^^^^^^ help: change this to: `value_sid` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this function has too many arguments (20/7) [INFO] [stdout] --> src/json/checker/mod.rs:27:1 [INFO] [stdout] | [INFO] [stdout] 27 | / pub fn check_all_result( [INFO] [stdout] 28 | | common_args: &Options, [INFO] [stdout] 29 | | vec_users: &mut Vec, [INFO] [stdout] 30 | | vec_groups: &mut Vec, [INFO] [stdout] ... | [INFO] [stdout] 47 | | _fqdn_ip: &HashMap, [INFO] [stdout] 48 | | ) -> Result<(), Box> { [INFO] [stdout] | |_______________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#too_many_arguments [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/json/checker/mod.rs:60:44 [INFO] [stdout] | [INFO] [stdout] 60 | common::add_default_groups(vec_groups, &vec_computers, domain.to_owned())?; [INFO] [stdout] | ^^^^^^^^^^^^^^ help: change this to: `vec_computers` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enclosing `Ok` and `?` operator are unneeded [INFO] [stdout] --> src/json/maker/mod.rs:129:14 [INFO] [stdout] | [INFO] [stdout] 129 | return Ok(common::make_a_zip( [INFO] [stdout] | ______________^ [INFO] [stdout] 130 | | &datetime, [INFO] [stdout] 131 | | &filename, [INFO] [stdout] 132 | | &common_args.path, [INFO] [stdout] 133 | | &json_result)?) [INFO] [stdout] | |________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_question_mark [INFO] [stdout] = note: `#[warn(clippy::needless_question_mark)]` on by default [INFO] [stdout] help: remove the enclosing `Ok` and `?` operator [INFO] [stdout] | [INFO] [stdout] 129 ~ return common::make_a_zip( [INFO] [stdout] 130 | &datetime, [INFO] [stdout] 131 | &filename, [INFO] [stdout] 132 | &common_args.path, [INFO] [stdout] 133 ~ &json_result) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this function has too many arguments (21/7) [INFO] [stdout] --> src/json/parser/mod.rs:34:1 [INFO] [stdout] | [INFO] [stdout] 34 | / pub fn parse_result_type( [INFO] [stdout] 35 | | common_args: &Options, [INFO] [stdout] 36 | | result: Vec, [INFO] [stdout] 37 | | vec_users: &mut Vec, [INFO] [stdout] ... | [INFO] [stdout] 58 | | ) -> Result<(), Box> { [INFO] [stdout] | |_______________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#too_many_arguments [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this let-binding has unit value [INFO] [stdout] --> src/objects/user.rs:256:25 [INFO] [stdout] | [INFO] [stdout] 256 | / let _target = match check_spn(v).to_owned() { [INFO] [stdout] 257 | | Some(_target) => { [INFO] [stdout] 258 | | if !added { [INFO] [stdout] 259 | | targets.push(_target.to_owned()); [INFO] [stdout] ... | [INFO] [stdout] 263 | | None => {} [INFO] [stdout] 264 | | }; [INFO] [stdout] | |__________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_unit_value [INFO] [stdout] = note: `#[warn(clippy::let_unit_value)]` on by default [INFO] [stdout] help: omit the `let` binding [INFO] [stdout] | [INFO] [stdout] 256 - let _target = match check_spn(v).to_owned() { [INFO] [stdout] 256 + match check_spn(v).to_owned() { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` can be collapsed into the outer `match` [INFO] [stdout] --> src/objects/user.rs:258:33 [INFO] [stdout] | [INFO] [stdout] 258 | / ... if !added { [INFO] [stdout] 259 | | ... targets.push(_target.to_owned()); [INFO] [stdout] 260 | | ... added = true; [INFO] [stdout] 261 | | ... } [INFO] [stdout] | |_______________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_match [INFO] [stdout] = note: `#[warn(clippy::collapsible_match)]` on by default [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 257 ~ Some(_target) [INFO] [stdout] 258 ~ if !added => { [INFO] [stdout] 259 | targets.push(_target.to_owned()); [INFO] [stdout] 260 | added = true; [INFO] [stdout] 261 ~ }, [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> src/objects/user.rs:256:39 [INFO] [stdout] | [INFO] [stdout] 256 | let _target = match check_spn(v).to_owned() { [INFO] [stdout] | _______________________________________^ [INFO] [stdout] 257 | | Some(_target) => { [INFO] [stdout] 258 | | if !added { [INFO] [stdout] 259 | | targets.push(_target.to_owned()); [INFO] [stdout] ... | [INFO] [stdout] 263 | | None => {} [INFO] [stdout] 264 | | }; [INFO] [stdout] | |_________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] = note: `#[warn(clippy::single_match)]` on by default [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 256 ~ let _target = if let Some(_target) = check_spn(v).to_owned() { [INFO] [stdout] 257 + if !added { [INFO] [stdout] 258 + targets.push(_target.to_owned()); [INFO] [stdout] 259 + added = true; [INFO] [stdout] 260 + } [INFO] [stdout] 261 ~ }; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/ldap.rs:81:42 [INFO] [stdout] | [INFO] [stdout] 81 | gssapi_connection(&mut ldap, &ldapfqdn, &domain).await?; [INFO] [stdout] | ^^^^^^^^^ help: change this to: `ldapfqdn` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] = note: `#[warn(clippy::needless_borrow)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/ldap.rs:81:53 [INFO] [stdout] | [INFO] [stdout] 81 | gssapi_connection(&mut ldap, &ldapfqdn, &domain).await?; [INFO] [stdout] | ^^^^^^^ help: change this to: `domain` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the function `parse_gmsa` doesn't need a mutable reference [INFO] [stdout] --> src/objects/user.rs:333:32 [INFO] [stdout] | [INFO] [stdout] 333 | parse_gmsa(&mut relations_ace, self); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_mut_passed [INFO] [stdout] = note: `#[warn(clippy::unnecessary_mut_passed)]` on by default [INFO] [stdout] help: remove this `mut` [INFO] [stdout] | [INFO] [stdout] 333 - parse_gmsa(&mut relations_ace, self); [INFO] [stdout] 333 + parse_gmsa(&relations_ace, self); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this function has too many arguments (8/7) [INFO] [stdout] --> src/ldap.rs:218:1 [INFO] [stdout] | [INFO] [stdout] 218 | / fn ldap_constructor( [INFO] [stdout] 219 | | ldaps: bool, [INFO] [stdout] 220 | | ip: Option<&str>, [INFO] [stdout] 221 | | port: Option, [INFO] [stdout] ... | [INFO] [stdout] 226 | | kerberos: bool, [INFO] [stdout] 227 | | ) -> Result> { [INFO] [stdout] | |_____________________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#too_many_arguments [INFO] [stdout] = note: `#[warn(clippy::too_many_arguments)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: calling `push_str()` using a single-character string literal [INFO] [stdout] --> src/ldap.rs:259:9 [INFO] [stdout] | [INFO] [stdout] 259 | s_email.push_str("@"); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ help: consider using `push` with a character literal: `s_email.push('@')` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_add_str [INFO] [stdout] = note: `#[warn(clippy::single_char_add_str)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this pattern reimplements `Option::unwrap_or` [INFO] [stdout] --> src/ldap.rs:278:22 [INFO] [stdout] | [INFO] [stdout] 278 | debug!("IP: {}", match ip { [INFO] [stdout] | ______________________^ [INFO] [stdout] 279 | | Some(ip) => ip, [INFO] [stdout] 280 | | None => "not set" [INFO] [stdout] 281 | | }); [INFO] [stdout] | |_____^ help: replace with: `ip.unwrap_or("not set")` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_unwrap_or [INFO] [stdout] = note: `#[warn(clippy::manual_unwrap_or)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to want to iterate on a map's values [INFO] [stdout] --> src/ldap.rs:411:38 [INFO] [stdout] | [INFO] [stdout] 411 | for (_key, value) in &result_attrs { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#for_kv_map [INFO] [stdout] = note: `#[warn(clippy::for_kv_map)]` on by default [INFO] [stdout] help: use the corresponding method [INFO] [stdout] | [INFO] [stdout] 411 - for (_key, value) in &result_attrs { [INFO] [stdout] 411 + for value in result_attrs.values() { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: calling `push_str()` using a single-character string literal [INFO] [stdout] --> src/utils/format.rs:11:13 [INFO] [stdout] | [INFO] [stdout] 11 | dc.push_str(","); [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: consider using `push` with a character literal: `dc.push(',')` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_add_str [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` can be collapsed into the outer `match` [INFO] [stdout] --> src/objects/group.rs:109:21 [INFO] [stdout] | [INFO] [stdout] 109 | / if !value.is_empty() { [INFO] [stdout] 110 | | let mut _vec_members: Vec = Vec::new(); [INFO] [stdout] 111 | | [INFO] [stdout] 112 | | for member in value { [INFO] [stdout] ... | [INFO] [stdout] 126 | | self.members = _vec_members; [INFO] [stdout] 127 | | } [INFO] [stdout] | |_____________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_match [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 108 ~ "member" [INFO] [stdout] 109 ~ if !value.is_empty() => { [INFO] [stdout] 110 | let mut _vec_members: Vec = Vec::new(); [INFO] [stdout] ... [INFO] [stdout] 126 | self.members = _vec_members; [INFO] [stdout] 127 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you are using an explicit closure for copying elements [INFO] [stdout] --> src/enums/sid.rs:37:5 [INFO] [stdout] | [INFO] [stdout] 37 | sid.as_bytes().iter().map(|x| *x).collect::>() [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider calling the dedicated `copied` method: `sid.as_bytes().iter().copied()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stdout] = note: `#[warn(clippy::map_clone)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` has identical blocks [INFO] [stdout] --> src/objects/group.rs:146:21 [INFO] [stdout] | [INFO] [stdout] 146 | / { [INFO] [stdout] 147 | | self.properties.highvalue = true; [INFO] [stdout] 148 | | } else if sid.ends_with("S-1-5-32-544") [INFO] [stdout] | |_____________________^ [INFO] [stdout] | [INFO] [stdout] note: same as this [INFO] [stdout] --> src/objects/group.rs:153:21 [INFO] [stdout] | [INFO] [stdout] 153 | / { [INFO] [stdout] 154 | | self.properties.highvalue = true; [INFO] [stdout] 155 | | } else { [INFO] [stdout] | |_____________________^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#if_same_then_else [INFO] [stdout] = note: `#[warn(clippy::if_same_then_else)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this operation has no effect [INFO] [stdout] --> src/enums/sid.rs:47:44 [INFO] [stdout] | [INFO] [stdout] 47 | let raw_guid = raw_guid.iter().map(|x| x & 0xFF).collect::>(); [INFO] [stdout] | ^^^^^^^^ help: consider reducing it to: `*x` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_op [INFO] [stdout] = note: `#[warn(clippy::identity_op)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this if-then-else expression assigns a bool literal [INFO] [stdout] --> src/objects/group.rs:148:28 [INFO] [stdout] | [INFO] [stdout] 148 | } else if sid.ends_with("S-1-5-32-544") [INFO] [stdout] | ____________________________^ [INFO] [stdout] 149 | | || sid.ends_with("S-1-5-32-548") [INFO] [stdout] 150 | | || sid.ends_with("S-1-5-32-549") [INFO] [stdout] 151 | | || sid.ends_with("S-1-5-32-550") [INFO] [stdout] ... | [INFO] [stdout] 156 | | self.properties.highvalue = false; [INFO] [stdout] 157 | | } [INFO] [stdout] | |_____________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_bool_assign [INFO] [stdout] = note: `#[warn(clippy::needless_bool_assign)]` on by default [INFO] [stdout] help: you can reduce it to [INFO] [stdout] | [INFO] [stdout] 148 ~ } else { self.properties.highvalue = sid.ends_with("S-1-5-32-544") [INFO] [stdout] 149 + || sid.ends_with("S-1-5-32-548") [INFO] [stdout] 150 + || sid.ends_with("S-1-5-32-549") [INFO] [stdout] 151 + || sid.ends_with("S-1-5-32-550") || sid.ends_with("S-1-5-32-551"); } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you are using an explicit closure for copying elements [INFO] [stdout] --> src/enums/sid.rs:48:41 [INFO] [stdout] | [INFO] [stdout] 48 | let rev = | x: &[u8] | -> Vec { x.iter().map(|i| *i).rev().collect::>()}; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: consider calling the dedicated `copied` method: `x.iter().copied()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` has identical blocks [INFO] [stdout] --> src/objects/group.rs:189:21 [INFO] [stdout] | [INFO] [stdout] 189 | / { [INFO] [stdout] 190 | | self.properties.highvalue = true; [INFO] [stdout] 191 | | } [INFO] [stdout] | |_____________________^ [INFO] [stdout] | [INFO] [stdout] note: same as this [INFO] [stdout] --> src/objects/group.rs:197:21 [INFO] [stdout] | [INFO] [stdout] 197 | / { [INFO] [stdout] 198 | | self.properties.highvalue = true; [INFO] [stdout] 199 | | } [INFO] [stdout] | |_____________________^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#if_same_then_else [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this operation has no effect [INFO] [stdout] --> src/enums/sid.rs:78:44 [INFO] [stdout] | [INFO] [stdout] 78 | let raw_guid = raw_guid.iter().map(|x| x & 0xFF).collect::>(); [INFO] [stdout] | ^^^^^^^^ help: consider reducing it to: `*x` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_op [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this if-then-else expression assigns a bool literal [INFO] [stdout] --> src/objects/group.rs:192:26 [INFO] [stdout] | [INFO] [stdout] 192 | else if sid.ends_with("S-1-5-32-544") [INFO] [stdout] | __________________________^ [INFO] [stdout] 193 | | || sid.ends_with("S-1-5-32-548") [INFO] [stdout] 194 | | || sid.ends_with("S-1-5-32-549") [INFO] [stdout] 195 | | || sid.ends_with("S-1-5-32-550") [INFO] [stdout] ... | [INFO] [stdout] 201 | | self.properties.highvalue = false; [INFO] [stdout] 202 | | } [INFO] [stdout] | |_____________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_bool_assign [INFO] [stdout] help: you can reduce it to [INFO] [stdout] | [INFO] [stdout] 192 ~ else { self.properties.highvalue = sid.ends_with("S-1-5-32-544") [INFO] [stdout] 193 + || sid.ends_with("S-1-5-32-548") [INFO] [stdout] 194 + || sid.ends_with("S-1-5-32-549") [INFO] [stdout] 195 + || sid.ends_with("S-1-5-32-550") || sid.ends_with("S-1-5-32-551"); } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you are using an explicit closure for copying elements [INFO] [stdout] --> src/enums/sid.rs:79:41 [INFO] [stdout] | [INFO] [stdout] 79 | let rev = | x: &[u8] | -> Vec { x.iter().map(|i| *i).collect::>()}; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: consider calling the dedicated `copied` method: `x.iter().copied()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> src/enums/acl.rs:19:9 [INFO] [stdout] | [INFO] [stdout] 19 | nt: &Vec, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] = note: `#[warn(clippy::ptr_arg)]` on by default [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 19 - nt: &Vec, [INFO] [stdout] 19 + nt: &[u8], [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/enums/acl.rs:272:24 [INFO] [stdout] | [INFO] [stdout] 272 | && !(&flags & ACE_OBJECT_TYPE_PRESENT == ACE_OBJECT_TYPE_PRESENT) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `(&flags & ACE_OBJECT_TYPE_PRESENT != ACE_OBJECT_TYPE_PRESENT)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stdout] = note: `#[warn(clippy::nonminimal_bool)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/enums/acl.rs:419:24 [INFO] [stdout] | [INFO] [stdout] 419 | && !(&flags & ACE_OBJECT_TYPE_PRESENT == ACE_OBJECT_TYPE_PRESENT) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `(&flags & ACE_OBJECT_TYPE_PRESENT != ACE_OBJECT_TYPE_PRESENT)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this function has too many arguments (8/7) [INFO] [stdout] --> src/enums/acl.rs:111:1 [INFO] [stdout] | [INFO] [stdout] 111 | / fn ace_maker( [INFO] [stdout] 112 | | object: &mut T, [INFO] [stdout] 113 | | domain: &str, [INFO] [stdout] 114 | | relations: &mut Vec, [INFO] [stdout] ... | [INFO] [stdout] 119 | | _result_bin: &HashMap>>, [INFO] [stdout] 120 | | ) { [INFO] [stdout] | |_^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#too_many_arguments [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: needlessly taken reference of left operand [INFO] [stdout] --> src/enums/acl.rs:175:21 [INFO] [stdout] | [INFO] [stdout] 175 | && (&flags & ACE_INHERITED_OBJECT_TYPE_PRESENT == ACE_INHERITED_OBJECT_TYPE_PRESENT) [INFO] [stdout] | ------^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: use the left value directly: `flags` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#op_ref [INFO] [stdout] = note: `#[warn(clippy::op_ref)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary use of `to_vec` [INFO] [stdout] --> src/enums/acl.rs:183:47 [INFO] [stdout] | [INFO] [stdout] 183 | let ace_guid = decode_guid_le(&inherited_object_type.to_le_bytes().to_vec()).to_lowercase(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use: `inherited_object_type.to_le_bytes().as_ref()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_to_owned [INFO] [stdout] = note: `#[warn(clippy::unnecessary_to_owned)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary use of `to_vec` [INFO] [stdout] --> src/enums/acl.rs:195:43 [INFO] [stdout] | [INFO] [stdout] 195 | let ace_guid = decode_guid_le(&object_type.to_le_bytes().to_vec()).to_lowercase(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use: `object_type.to_le_bytes().as_ref()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_to_owned [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary use of `to_vec` [INFO] [stdout] --> src/enums/acl.rs:205:57 [INFO] [stdout] | [INFO] [stdout] 205 | let inherited_ace_guid = decode_guid_le(&inherited_object_type.to_le_bytes().to_vec()).to_lowercase(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use: `inherited_object_type.to_le_bytes().as_ref()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_to_owned [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: needlessly taken reference of left operand [INFO] [stdout] --> src/enums/acl.rs:206:20 [INFO] [stdout] | [INFO] [stdout] 206 | ... if &flags & ACE_INHERITED_OBJECT_TYPE_PRESENT == ACE_INHERITED_OBJECT_TYPE_PRESENT && !ace_applies(&inherited_ace_guid, entry... [INFO] [stdout] | ------^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: use the left value directly: `flags` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#op_ref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: needlessly taken reference of left operand [INFO] [stdout] --> src/enums/acl.rs:272:26 [INFO] [stdout] | [INFO] [stdout] 272 | && !(&flags & ACE_OBJECT_TYPE_PRESENT == ACE_OBJECT_TYPE_PRESENT) [INFO] [stdout] | ------^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: use the left value directly: `flags` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#op_ref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: needlessly taken reference of left operand [INFO] [stdout] --> src/enums/acl.rs:341:25 [INFO] [stdout] | [INFO] [stdout] 341 | && (&flags & ACE_OBJECT_TYPE_PRESENT == ACE_OBJECT_TYPE_PRESENT) [INFO] [stdout] | ------^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: use the left value directly: `flags` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#op_ref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: needlessly taken reference of left operand [INFO] [stdout] --> src/enums/acl.rs:353:25 [INFO] [stdout] | [INFO] [stdout] 353 | && (&flags & ACE_OBJECT_TYPE_PRESENT == ACE_OBJECT_TYPE_PRESENT) [INFO] [stdout] | ------^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: use the left value directly: `flags` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#op_ref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/enums/acl.rs:365:18 [INFO] [stdout] | [INFO] [stdout] 365 | else if (MaskFlags::ADS_RIGHT_DS_SELF.bits() | mask) == mask [INFO] [stdout] | __________________^ [INFO] [stdout] 366 | | { [INFO] [stdout] 367 | | if (entry_type == "Group") && (&ace_guid == WRITE_MEMBER) [INFO] [stdout] ... | [INFO] [stdout] 377 | | } [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] = note: `#[warn(clippy::collapsible_if)]` on by default [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 365 ~ else if (MaskFlags::ADS_RIGHT_DS_SELF.bits() | mask) == mask [INFO] [stdout] 366 ~ && (entry_type == "Group") && (&ace_guid == WRITE_MEMBER) [INFO] [stdout] 367 | { [INFO] [stdout] ... [INFO] [stdout] 374 | )); [INFO] [stdout] 375 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: needlessly taken reference of left operand [INFO] [stdout] --> src/enums/acl.rs:367:47 [INFO] [stdout] | [INFO] [stdout] 367 | if (entry_type == "Group") && (&ace_guid == WRITE_MEMBER) [INFO] [stdout] | ^---------^^^^^^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: use the left value directly: `ace_guid` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#op_ref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/enums/acl.rs:381:13 [INFO] [stdout] | [INFO] [stdout] 381 | / if (MaskFlags::ADS_RIGHT_DS_READ_PROP.bits() | mask) == mask [INFO] [stdout] 382 | | { [INFO] [stdout] 383 | | if (entry_type == "Computer") [INFO] [stdout] 384 | | && (&flags & ACE_OBJECT_TYPE_PRESENT == ACE_OBJECT_TYPE_PRESENT) [INFO] [stdout] ... | [INFO] [stdout] 400 | | } [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 381 ~ if (MaskFlags::ADS_RIGHT_DS_READ_PROP.bits() | mask) == mask [INFO] [stdout] 382 ~ && (entry_type == "Computer") [INFO] [stdout] 383 | && (&flags & ACE_OBJECT_TYPE_PRESENT == ACE_OBJECT_TYPE_PRESENT) [INFO] [stdout] ... [INFO] [stdout] 397 | } [INFO] [stdout] 398 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/enums/acl.rs:383:17 [INFO] [stdout] | [INFO] [stdout] 383 | / if (entry_type == "Computer") [INFO] [stdout] 384 | | && (&flags & ACE_OBJECT_TYPE_PRESENT == ACE_OBJECT_TYPE_PRESENT) [INFO] [stdout] 385 | | && object.get_haslaps().to_owned() [INFO] [stdout] ... | [INFO] [stdout] 399 | | } [INFO] [stdout] | |_________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 385 ~ && object.get_haslaps().to_owned() [INFO] [stdout] 386 ~ && (&ace_guid == OBJECTTYPE_GUID_HASHMAP.get("ms-mcs-admpwd").unwrap_or(&String::from("GUID-NOT-FOUND")) [INFO] [stdout] 387 | || &ace_guid == OBJECTTYPE_GUID_HASHMAP.get("ms-laps-password").unwrap_or(&String::from("GUID-NOT-FOUND")) [INFO] [stdout] 388 ~ || &ace_guid == OBJECTTYPE_GUID_HASHMAP.get("ms-laps-encryptedpassword").unwrap_or(&String::from("GUID-NOT-FOUND"))) [INFO] [stdout] 389 | { [INFO] [stdout] ... [INFO] [stdout] 396 | )); [INFO] [stdout] 397 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: needlessly taken reference of left operand [INFO] [stdout] --> src/enums/acl.rs:384:25 [INFO] [stdout] | [INFO] [stdout] 384 | && (&flags & ACE_OBJECT_TYPE_PRESENT == ACE_OBJECT_TYPE_PRESENT) [INFO] [stdout] | ------^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: use the left value directly: `flags` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#op_ref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: needlessly taken reference of left operand [INFO] [stdout] --> src/enums/acl.rs:419:26 [INFO] [stdout] | [INFO] [stdout] 419 | && !(&flags & ACE_OBJECT_TYPE_PRESENT == ACE_OBJECT_TYPE_PRESENT) [INFO] [stdout] | ------^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: use the left value directly: `flags` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#op_ref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/enums/acl.rs:673:43 [INFO] [stdout] | [INFO] [stdout] 673 | let object_type_guid = decode_guid_le(&typea.to_le_bytes().as_ref()).to_lowercase(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `typea.to_le_bytes().as_ref()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/enums/acl.rs:714:59 [INFO] [stdout] | [INFO] [stdout] 714 | trace!("AceFormat::get_object_type {}",decode_guid_le(&typea.to_le_bytes().as_ref()).to_lowercase()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `typea.to_le_bytes().as_ref()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/enums/acl.rs:717:23 [INFO] [stdout] | [INFO] [stdout] 717 | if decode_guid_le(&typea.to_le_bytes().as_ref()).to_lowercase() == bin_right_guid.to_lowercase() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `typea.to_le_bytes().as_ref()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this function has too many arguments (8/7) [INFO] [stdout] --> src/objects/computer.rs:95:5 [INFO] [stdout] | [INFO] [stdout] 95 | / pub fn parse( [INFO] [stdout] 96 | | &mut self, [INFO] [stdout] 97 | | result: SearchEntry, [INFO] [stdout] 98 | | domain: &str, [INFO] [stdout] ... | [INFO] [stdout] 103 | | domain_sid: &str [INFO] [stdout] 104 | | ) -> Result<(), Box> { [INFO] [stdout] | |___________________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#too_many_arguments [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: accessing first element with `vec_users.get(0)` [INFO] [stdout] --> src/json/checker/common.rs:267:31 [INFO] [stdout] | [INFO] [stdout] 267 | if let Some(first_user) = vec_users.get(0) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: try: `vec_users.first()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_first [INFO] [stdout] = note: `#[warn(clippy::get_first)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/json/checker/common.rs:320:83 [INFO] [stdout] | [INFO] [stdout] 320 | *member.object_type_mut() = sid_type.get(value_sid).unwrap_or(&value_sid).to_string(); [INFO] [stdout] | ^^^^^^^^^^ help: change this to: `value_sid` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this function has too many arguments (20/7) [INFO] [stdout] --> src/json/checker/mod.rs:27:1 [INFO] [stdout] | [INFO] [stdout] 27 | / pub fn check_all_result( [INFO] [stdout] 28 | | common_args: &Options, [INFO] [stdout] 29 | | vec_users: &mut Vec, [INFO] [stdout] 30 | | vec_groups: &mut Vec, [INFO] [stdout] ... | [INFO] [stdout] 47 | | _fqdn_ip: &HashMap, [INFO] [stdout] 48 | | ) -> Result<(), Box> { [INFO] [stdout] | |_______________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#too_many_arguments [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/json/checker/mod.rs:60:44 [INFO] [stdout] | [INFO] [stdout] 60 | common::add_default_groups(vec_groups, &vec_computers, domain.to_owned())?; [INFO] [stdout] | ^^^^^^^^^^^^^^ help: change this to: `vec_computers` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for an equality check. Consider using `if` [INFO] [stdout] --> src/objects/trust.rs:105:10 [INFO] [stdout] | [INFO] [stdout] 105 | / match key.as_str() { [INFO] [stdout] 106 | | "securityIdentifier" => { [INFO] [stdout] 107 | | let sid = sid_maker(LdapSid::parse(&value[0]).unwrap().1, domain); [INFO] [stdout] 108 | | self.target_domain_sid = sid.to_owned(); [INFO] [stdout] 109 | | } [INFO] [stdout] 110 | | _ => {} [INFO] [stdout] 111 | | } [INFO] [stdout] | |__________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 105 ~ if key.as_str() == "securityIdentifier" { [INFO] [stdout] 106 + let sid = sid_maker(LdapSid::parse(&value[0]).unwrap().1, domain); [INFO] [stdout] 107 + self.target_domain_sid = sid.to_owned(); [INFO] [stdout] 108 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enclosing `Ok` and `?` operator are unneeded [INFO] [stdout] --> src/json/maker/mod.rs:129:14 [INFO] [stdout] | [INFO] [stdout] 129 | return Ok(common::make_a_zip( [INFO] [stdout] | ______________^ [INFO] [stdout] 130 | | &datetime, [INFO] [stdout] 131 | | &filename, [INFO] [stdout] 132 | | &common_args.path, [INFO] [stdout] 133 | | &json_result)?) [INFO] [stdout] | |________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_question_mark [INFO] [stdout] = note: `#[warn(clippy::needless_question_mark)]` on by default [INFO] [stdout] help: remove the enclosing `Ok` and `?` operator [INFO] [stdout] | [INFO] [stdout] 129 ~ return common::make_a_zip( [INFO] [stdout] 130 | &datetime, [INFO] [stdout] 131 | &filename, [INFO] [stdout] 132 | &common_args.path, [INFO] [stdout] 133 ~ &json_result) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this function has too many arguments (21/7) [INFO] [stdout] --> src/json/parser/mod.rs:34:1 [INFO] [stdout] | [INFO] [stdout] 34 | / pub fn parse_result_type( [INFO] [stdout] 35 | | common_args: &Options, [INFO] [stdout] 36 | | result: Vec, [INFO] [stdout] 37 | | vec_users: &mut Vec, [INFO] [stdout] ... | [INFO] [stdout] 58 | | ) -> Result<(), Box> { [INFO] [stdout] | |_______________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#too_many_arguments [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `impl` can be derived [INFO] [stdout] --> src/objects/common.rs:256:1 [INFO] [stdout] | [INFO] [stdout] 256 | / impl Default for DCRegistryData { [INFO] [stdout] 257 | | fn default() -> DCRegistryData { [INFO] [stdout] 258 | | DCRegistryData { [INFO] [stdout] 259 | | certificate_mapping_methods: None, [INFO] [stdout] ... | [INFO] [stdout] 263 | | } [INFO] [stdout] | |_^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#derivable_impls [INFO] [stdout] = note: `#[warn(clippy::derivable_impls)]` on by default [INFO] [stdout] help: replace the manual implementation with a derive attribute [INFO] [stdout] | [INFO] [stdout] 249 + #[derive(Default)] [INFO] [stdout] 250 | pub struct DCRegistryData { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this let-binding has unit value [INFO] [stdout] --> src/objects/user.rs:256:25 [INFO] [stdout] | [INFO] [stdout] 256 | / let _target = match check_spn(v).to_owned() { [INFO] [stdout] 257 | | Some(_target) => { [INFO] [stdout] 258 | | if !added { [INFO] [stdout] 259 | | targets.push(_target.to_owned()); [INFO] [stdout] ... | [INFO] [stdout] 263 | | None => {} [INFO] [stdout] 264 | | }; [INFO] [stdout] | |__________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_unit_value [INFO] [stdout] = note: `#[warn(clippy::let_unit_value)]` on by default [INFO] [stdout] help: omit the `let` binding [INFO] [stdout] | [INFO] [stdout] 256 - let _target = match check_spn(v).to_owned() { [INFO] [stdout] 256 + match check_spn(v).to_owned() { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` can be collapsed into the outer `match` [INFO] [stdout] --> src/objects/user.rs:258:33 [INFO] [stdout] | [INFO] [stdout] 258 | / ... if !added { [INFO] [stdout] 259 | | ... targets.push(_target.to_owned()); [INFO] [stdout] 260 | | ... added = true; [INFO] [stdout] 261 | | ... } [INFO] [stdout] | |_______________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_match [INFO] [stdout] = note: `#[warn(clippy::collapsible_match)]` on by default [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 257 ~ Some(_target) [INFO] [stdout] 258 ~ if !added => { [INFO] [stdout] 259 | targets.push(_target.to_owned()); [INFO] [stdout] 260 | added = true; [INFO] [stdout] 261 ~ }, [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> src/objects/user.rs:256:39 [INFO] [stdout] | [INFO] [stdout] 256 | let _target = match check_spn(v).to_owned() { [INFO] [stdout] | _______________________________________^ [INFO] [stdout] 257 | | Some(_target) => { [INFO] [stdout] 258 | | if !added { [INFO] [stdout] 259 | | targets.push(_target.to_owned()); [INFO] [stdout] ... | [INFO] [stdout] 263 | | None => {} [INFO] [stdout] 264 | | }; [INFO] [stdout] | |_________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] = note: `#[warn(clippy::single_match)]` on by default [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 256 ~ let _target = if let Some(_target) = check_spn(v).to_owned() { [INFO] [stdout] 257 + if !added { [INFO] [stdout] 258 + targets.push(_target.to_owned()); [INFO] [stdout] 259 + added = true; [INFO] [stdout] 260 + } [INFO] [stdout] 261 ~ }; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the function `parse_gmsa` doesn't need a mutable reference [INFO] [stdout] --> src/objects/user.rs:333:32 [INFO] [stdout] | [INFO] [stdout] 333 | parse_gmsa(&mut relations_ace, self); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_mut_passed [INFO] [stdout] = note: `#[warn(clippy::unnecessary_mut_passed)]` on by default [INFO] [stdout] help: remove this `mut` [INFO] [stdout] | [INFO] [stdout] 333 - parse_gmsa(&mut relations_ace, self); [INFO] [stdout] 333 + parse_gmsa(&relations_ace, self); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you should consider adding a `Default` implementation for `SPNTarget` [INFO] [stdout] --> src/objects/common.rs:489:4 [INFO] [stdout] | [INFO] [stdout] 489 | / pub fn new() -> Self { [INFO] [stdout] 490 | | Self { [INFO] [stdout] 491 | | computer_sid: "SID".to_string(), [INFO] [stdout] 492 | | port: 1433, [INFO] [stdout] ... | [INFO] [stdout] 495 | | } [INFO] [stdout] | |____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default [INFO] [stdout] = note: `#[warn(clippy::new_without_default)]` on by default [INFO] [stdout] help: try adding this [INFO] [stdout] | [INFO] [stdout] 487 + impl Default for SPNTarget { [INFO] [stdout] 488 + fn default() -> Self { [INFO] [stdout] 489 + Self::new() [INFO] [stdout] 490 + } [INFO] [stdout] 491 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` can be collapsed into the outer `match` [INFO] [stdout] --> src/objects/group.rs:109:21 [INFO] [stdout] | [INFO] [stdout] 109 | / if !value.is_empty() { [INFO] [stdout] 110 | | let mut _vec_members: Vec = Vec::new(); [INFO] [stdout] 111 | | [INFO] [stdout] 112 | | for member in value { [INFO] [stdout] ... | [INFO] [stdout] 126 | | self.members = _vec_members; [INFO] [stdout] 127 | | } [INFO] [stdout] | |_____________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_match [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 108 ~ "member" [INFO] [stdout] 109 ~ if !value.is_empty() => { [INFO] [stdout] 110 | let mut _vec_members: Vec = Vec::new(); [INFO] [stdout] ... [INFO] [stdout] 126 | self.members = _vec_members; [INFO] [stdout] 127 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` has identical blocks [INFO] [stdout] --> src/objects/group.rs:146:21 [INFO] [stdout] | [INFO] [stdout] 146 | / { [INFO] [stdout] 147 | | self.properties.highvalue = true; [INFO] [stdout] 148 | | } else if sid.ends_with("S-1-5-32-544") [INFO] [stdout] | |_____________________^ [INFO] [stdout] | [INFO] [stdout] note: same as this [INFO] [stdout] --> src/objects/group.rs:153:21 [INFO] [stdout] | [INFO] [stdout] 153 | / { [INFO] [stdout] 154 | | self.properties.highvalue = true; [INFO] [stdout] 155 | | } else { [INFO] [stdout] | |_____________________^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#if_same_then_else [INFO] [stdout] = note: `#[warn(clippy::if_same_then_else)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this if-then-else expression assigns a bool literal [INFO] [stdout] --> src/objects/group.rs:148:28 [INFO] [stdout] | [INFO] [stdout] 148 | } else if sid.ends_with("S-1-5-32-544") [INFO] [stdout] | ____________________________^ [INFO] [stdout] 149 | | || sid.ends_with("S-1-5-32-548") [INFO] [stdout] 150 | | || sid.ends_with("S-1-5-32-549") [INFO] [stdout] 151 | | || sid.ends_with("S-1-5-32-550") [INFO] [stdout] ... | [INFO] [stdout] 156 | | self.properties.highvalue = false; [INFO] [stdout] 157 | | } [INFO] [stdout] | |_____________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_bool_assign [INFO] [stdout] = note: `#[warn(clippy::needless_bool_assign)]` on by default [INFO] [stdout] help: you can reduce it to [INFO] [stdout] | [INFO] [stdout] 148 ~ } else { self.properties.highvalue = sid.ends_with("S-1-5-32-544") [INFO] [stdout] 149 + || sid.ends_with("S-1-5-32-548") [INFO] [stdout] 150 + || sid.ends_with("S-1-5-32-549") [INFO] [stdout] 151 + || sid.ends_with("S-1-5-32-550") || sid.ends_with("S-1-5-32-551"); } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` has identical blocks [INFO] [stdout] --> src/objects/group.rs:189:21 [INFO] [stdout] | [INFO] [stdout] 189 | / { [INFO] [stdout] 190 | | self.properties.highvalue = true; [INFO] [stdout] 191 | | } [INFO] [stdout] | |_____________________^ [INFO] [stdout] | [INFO] [stdout] note: same as this [INFO] [stdout] --> src/objects/group.rs:197:21 [INFO] [stdout] | [INFO] [stdout] 197 | / { [INFO] [stdout] 198 | | self.properties.highvalue = true; [INFO] [stdout] 199 | | } [INFO] [stdout] | |_____________________^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#if_same_then_else [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this if-then-else expression assigns a bool literal [INFO] [stdout] --> src/objects/group.rs:192:26 [INFO] [stdout] | [INFO] [stdout] 192 | else if sid.ends_with("S-1-5-32-544") [INFO] [stdout] | __________________________^ [INFO] [stdout] 193 | | || sid.ends_with("S-1-5-32-548") [INFO] [stdout] 194 | | || sid.ends_with("S-1-5-32-549") [INFO] [stdout] 195 | | || sid.ends_with("S-1-5-32-550") [INFO] [stdout] ... | [INFO] [stdout] 201 | | self.properties.highvalue = false; [INFO] [stdout] 202 | | } [INFO] [stdout] | |_____________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_bool_assign [INFO] [stdout] help: you can reduce it to [INFO] [stdout] | [INFO] [stdout] 192 ~ else { self.properties.highvalue = sid.ends_with("S-1-5-32-544") [INFO] [stdout] 193 + || sid.ends_with("S-1-5-32-548") [INFO] [stdout] 194 + || sid.ends_with("S-1-5-32-549") [INFO] [stdout] 195 + || sid.ends_with("S-1-5-32-550") || sid.ends_with("S-1-5-32-551"); } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: needlessly taken reference of both operands [INFO] [stdout] --> src/objects/aiaca.rs:133:36 [INFO] [stdout] | [INFO] [stdout] 133 | ... if &ext.oid == &oid!(2.5.29.19) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#op_ref [INFO] [stdout] help: use the values directly [INFO] [stdout] | [INFO] [stdout] 133 - if &ext.oid == &oid!(2.5.29.19) { [INFO] [stdout] 133 + if ext.oid == oid!(2.5.29.19) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` can be collapsed into the outer `match` [INFO] [stdout] --> src/objects/aiaca.rs:142:49 [INFO] [stdout] | [INFO] [stdout] 142 | / ... if _path_len_constraint > &0 { [INFO] [stdout] 143 | | ... self.properties.hasbasicconstraints = true; [INFO] [stdout] 144 | | ... self.properties.basicconstraintpathlength = _path_len_constraint.to_owned(); [INFO] [stdout] ... | [INFO] [stdout] 148 | | ... self.properties.basicconstraintpathlength = 0; [INFO] [stdout] 149 | | ... } [INFO] [stdout] | |_______________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_match [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 141 ~ Some(_path_len_constraint) [INFO] [stdout] 142 ~ if _path_len_constraint > &0 => { [INFO] [stdout] 143 | self.properties.hasbasicconstraints = true; [INFO] [stdout] 144 | self.properties.basicconstraintpathlength = _path_len_constraint.to_owned(); [INFO] [stdout] 145 | [INFO] [stdout] 146 ~ }, [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this function has too many arguments (8/7) [INFO] [stdout] --> src/objects/computer.rs:95:5 [INFO] [stdout] | [INFO] [stdout] 95 | / pub fn parse( [INFO] [stdout] 96 | | &mut self, [INFO] [stdout] 97 | | result: SearchEntry, [INFO] [stdout] 98 | | domain: &str, [INFO] [stdout] ... | [INFO] [stdout] 103 | | domain_sid: &str [INFO] [stdout] 104 | | ) -> Result<(), Box> { [INFO] [stdout] | |___________________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#too_many_arguments [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: needlessly taken reference of both operands [INFO] [stdout] --> src/objects/rootca.rs:128:36 [INFO] [stdout] | [INFO] [stdout] 128 | ... if &ext.oid == &oid!(2.5.29.19) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#op_ref [INFO] [stdout] help: use the values directly [INFO] [stdout] | [INFO] [stdout] 128 - if &ext.oid == &oid!(2.5.29.19) { [INFO] [stdout] 128 + if ext.oid == oid!(2.5.29.19) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` can be collapsed into the outer `match` [INFO] [stdout] --> src/objects/rootca.rs:137:49 [INFO] [stdout] | [INFO] [stdout] 137 | / ... if _path_len_constraint > &0 { [INFO] [stdout] 138 | | ... self.properties.hasbasicconstraints = true; [INFO] [stdout] 139 | | ... self.properties.basicconstraintpathlength = _path_len_constraint.to_owned(); [INFO] [stdout] ... | [INFO] [stdout] 143 | | ... self.properties.basicconstraintpathlength = 0_u32; [INFO] [stdout] 144 | | ... } [INFO] [stdout] | |_______________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_match [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 136 ~ Some(_path_len_constraint) [INFO] [stdout] 137 ~ if _path_len_constraint > &0 => { [INFO] [stdout] 138 | self.properties.hasbasicconstraints = true; [INFO] [stdout] 139 | self.properties.basicconstraintpathlength = _path_len_constraint.to_owned(); [INFO] [stdout] 140 | [INFO] [stdout] 141 ~ }, [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: needlessly taken reference of both operands [INFO] [stdout] --> src/objects/enterpriseca.rs:192:36 [INFO] [stdout] | [INFO] [stdout] 192 | ... if &ext.oid == &oid!(2.5.29.19) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#op_ref [INFO] [stdout] help: use the values directly [INFO] [stdout] | [INFO] [stdout] 192 - if &ext.oid == &oid!(2.5.29.19) { [INFO] [stdout] 192 + if ext.oid == oid!(2.5.29.19) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` can be collapsed into the outer `match` [INFO] [stdout] --> src/objects/enterpriseca.rs:201:49 [INFO] [stdout] | [INFO] [stdout] 201 | / ... if _path_len_constraint > &0 { [INFO] [stdout] 202 | | ... self.properties.hasbasicconstraints = true; [INFO] [stdout] 203 | | ... self.properties.basicconstraintpathlength = _path_len_constraint.to_owned(); [INFO] [stdout] ... | [INFO] [stdout] 207 | | ... self.properties.basicconstraintpathlength = 0; [INFO] [stdout] 208 | | ... } [INFO] [stdout] | |_______________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_match [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 200 ~ Some(_path_len_constraint) [INFO] [stdout] 201 ~ if _path_len_constraint > &0 => { [INFO] [stdout] 202 | self.properties.hasbasicconstraints = true; [INFO] [stdout] 203 | self.properties.basicconstraintpathlength = _path_len_constraint.to_owned(); [INFO] [stdout] 204 | [INFO] [stdout] 205 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` can be collapsed into the outer `match` [INFO] [stdout] --> src/objects/certtemplate.rs:89:21 [INFO] [stdout] | [INFO] [stdout] 89 | / ... if !value.is_empty() { [INFO] [stdout] 90 | | ... self.properties.certificatenameflag = get_pki_cert_name_flags(value[0].parse::().unwrap_or(0) as u64); [INFO] [stdout] 91 | | ... self.properties.enrolleesuppliessubject = self.properties.certificatenameflag.contains("ENROLLEE_SUPPLIES_SUBJECT"); [INFO] [stdout] 92 | | ... self.properties.subjectaltrequireupn = self.properties.certificatenameflag.contains("SUBJECT_ALT_REQUIRE_UPN"); [INFO] [stdout] 93 | | ... } [INFO] [stdout] | |_______^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_match [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 88 ~ "msPKI-Certificate-Name-Flag" [INFO] [stdout] 89 ~ if !value.is_empty() => { [INFO] [stdout] 90 | self.properties.certificatenameflag = get_pki_cert_name_flags(value[0].parse::().unwrap_or(0) as u64); [INFO] [stdout] 91 | self.properties.enrolleesuppliessubject = self.properties.certificatenameflag.contains("ENROLLEE_SUPPLIES_SUBJECT"); [INFO] [stdout] 92 | self.properties.subjectaltrequireupn = self.properties.certificatenameflag.contains("SUBJECT_ALT_REQUIRE_UPN"); [INFO] [stdout] 93 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` can be collapsed into the outer `match` [INFO] [stdout] --> src/objects/certtemplate.rs:96:21 [INFO] [stdout] | [INFO] [stdout] 96 | / if !value.is_empty() { [INFO] [stdout] 97 | | self.properties.enrollmentflag = get_pki_enrollment_flags(value[0].parse::().unwrap_or(0) as u64); [INFO] [stdout] 98 | | self.properties.requiresmanagerapproval = self.properties.enrollmentflag.contains("PEND_ALL_REQUESTS"); [INFO] [stdout] 99 | | self.properties.nosecurityextension = self.properties.enrollmentflag.contains("NO_SECURITY_EXTENSION"); [INFO] [stdout] 100 | | } [INFO] [stdout] | |_____________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_match [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 95 ~ "msPKI-Enrollment-Flag" [INFO] [stdout] 96 ~ if !value.is_empty() => { [INFO] [stdout] 97 | self.properties.enrollmentflag = get_pki_enrollment_flags(value[0].parse::().unwrap_or(0) as u64); [INFO] [stdout] 98 | self.properties.requiresmanagerapproval = self.properties.enrollmentflag.contains("PEND_ALL_REQUESTS"); [INFO] [stdout] 99 | self.properties.nosecurityextension = self.properties.enrollmentflag.contains("NO_SECURITY_EXTENSION"); [INFO] [stdout] 100 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` can be collapsed into the outer `match` [INFO] [stdout] --> src/objects/certtemplate.rs:108:21 [INFO] [stdout] | [INFO] [stdout] 108 | / ... if !value.is_empty() { [INFO] [stdout] 109 | | ... self.properties.authorizedsignatures = value.first().unwrap_or(&"0".to_string()).parse::().unwrap_or(0); [INFO] [stdout] 110 | | ... } [INFO] [stdout] | |_______^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_match [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 107 ~ "msPKI-RA-Signature" [INFO] [stdout] 108 ~ if !value.is_empty() => { [INFO] [stdout] 109 | self.properties.authorizedsignatures = value.first().unwrap_or(&"0".to_string()).parse::().unwrap_or(0); [INFO] [stdout] 110 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` can be collapsed into the outer `match` [INFO] [stdout] --> src/objects/certtemplate.rs:113:21 [INFO] [stdout] | [INFO] [stdout] 113 | / if !value.is_empty() { [INFO] [stdout] 114 | | self.properties.applicationpolicies = value.to_owned(); [INFO] [stdout] 115 | | } [INFO] [stdout] | |_____________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_match [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 112 ~ "msPKI-RA-Application-Policies" [INFO] [stdout] 113 ~ if !value.is_empty() => { [INFO] [stdout] 114 | self.properties.applicationpolicies = value.to_owned(); [INFO] [stdout] 115 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` can be collapsed into the outer `match` [INFO] [stdout] --> src/objects/certtemplate.rs:118:21 [INFO] [stdout] | [INFO] [stdout] 118 | / if !value.is_empty() { [INFO] [stdout] 119 | | self.properties.certificateapplicationpolicy = value.to_owned(); [INFO] [stdout] 120 | | } [INFO] [stdout] | |_____________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_match [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 117 ~ "msPKI-Certificate-Application-Policy" [INFO] [stdout] 118 ~ if !value.is_empty() => { [INFO] [stdout] 119 | self.properties.certificateapplicationpolicy = value.to_owned(); [INFO] [stdout] 120 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` can be collapsed into the outer `match` [INFO] [stdout] --> src/objects/certtemplate.rs:123:21 [INFO] [stdout] | [INFO] [stdout] 123 | / if !value.is_empty() { [INFO] [stdout] 124 | | self.properties.issuancepolicies = value.to_owned(); [INFO] [stdout] 125 | | } [INFO] [stdout] | |_____________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_match [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 122 ~ "msPKI-RA-Policies" [INFO] [stdout] 123 ~ if !value.is_empty() => { [INFO] [stdout] 124 | self.properties.issuancepolicies = value.to_owned(); [INFO] [stdout] 125 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` can be collapsed into the outer `match` [INFO] [stdout] --> src/objects/certtemplate.rs:128:21 [INFO] [stdout] | [INFO] [stdout] 128 | / if !value.is_empty() { [INFO] [stdout] 129 | | self.properties.oid = value[0].to_owned(); [INFO] [stdout] 130 | | } [INFO] [stdout] | |_____________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_match [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 127 ~ "msPKI-Cert-Template-OID" [INFO] [stdout] 128 ~ if !value.is_empty() => { [INFO] [stdout] 129 | self.properties.oid = value[0].to_owned(); [INFO] [stdout] 130 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` can be collapsed into the outer `match` [INFO] [stdout] --> src/objects/certtemplate.rs:133:21 [INFO] [stdout] | [INFO] [stdout] 133 | / if !value.is_empty() { [INFO] [stdout] 134 | | self.properties.ekus = value.to_owned(); [INFO] [stdout] 135 | | } [INFO] [stdout] | |_____________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_match [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 132 ~ "pKIExtendedKeyUsage" [INFO] [stdout] 133 ~ if !value.is_empty() => { [INFO] [stdout] 134 | self.properties.ekus = value.to_owned(); [INFO] [stdout] 135 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for an equality check. Consider using `if` [INFO] [stdout] --> src/objects/trust.rs:105:10 [INFO] [stdout] | [INFO] [stdout] 105 | / match key.as_str() { [INFO] [stdout] 106 | | "securityIdentifier" => { [INFO] [stdout] 107 | | let sid = sid_maker(LdapSid::parse(&value[0]).unwrap().1, domain); [INFO] [stdout] 108 | | self.target_domain_sid = sid.to_owned(); [INFO] [stdout] 109 | | } [INFO] [stdout] 110 | | _ => {} [INFO] [stdout] 111 | | } [INFO] [stdout] | |__________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 105 ~ if key.as_str() == "securityIdentifier" { [INFO] [stdout] 106 + let sid = sid_maker(LdapSid::parse(&value[0]).unwrap().1, domain); [INFO] [stdout] 107 + self.target_domain_sid = sid.to_owned(); [INFO] [stdout] 108 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `impl` can be derived [INFO] [stdout] --> src/objects/common.rs:256:1 [INFO] [stdout] | [INFO] [stdout] 256 | / impl Default for DCRegistryData { [INFO] [stdout] 257 | | fn default() -> DCRegistryData { [INFO] [stdout] 258 | | DCRegistryData { [INFO] [stdout] 259 | | certificate_mapping_methods: None, [INFO] [stdout] ... | [INFO] [stdout] 263 | | } [INFO] [stdout] | |_^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#derivable_impls [INFO] [stdout] = note: `#[warn(clippy::derivable_impls)]` on by default [INFO] [stdout] help: replace the manual implementation with a derive attribute [INFO] [stdout] | [INFO] [stdout] 249 + #[derive(Default)] [INFO] [stdout] 250 | pub struct DCRegistryData { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you should consider adding a `Default` implementation for `SPNTarget` [INFO] [stdout] --> src/objects/common.rs:489:4 [INFO] [stdout] | [INFO] [stdout] 489 | / pub fn new() -> Self { [INFO] [stdout] 490 | | Self { [INFO] [stdout] 491 | | computer_sid: "SID".to_string(), [INFO] [stdout] 492 | | port: 1433, [INFO] [stdout] ... | [INFO] [stdout] 495 | | } [INFO] [stdout] | |____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default [INFO] [stdout] = note: `#[warn(clippy::new_without_default)]` on by default [INFO] [stdout] help: try adding this [INFO] [stdout] | [INFO] [stdout] 487 + impl Default for SPNTarget { [INFO] [stdout] 488 + fn default() -> Self { [INFO] [stdout] 489 + Self::new() [INFO] [stdout] 490 + } [INFO] [stdout] 491 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: needlessly taken reference of both operands [INFO] [stdout] --> src/objects/aiaca.rs:133:36 [INFO] [stdout] | [INFO] [stdout] 133 | ... if &ext.oid == &oid!(2.5.29.19) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#op_ref [INFO] [stdout] help: use the values directly [INFO] [stdout] | [INFO] [stdout] 133 - if &ext.oid == &oid!(2.5.29.19) { [INFO] [stdout] 133 + if ext.oid == oid!(2.5.29.19) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` can be collapsed into the outer `match` [INFO] [stdout] --> src/objects/aiaca.rs:142:49 [INFO] [stdout] | [INFO] [stdout] 142 | / ... if _path_len_constraint > &0 { [INFO] [stdout] 143 | | ... self.properties.hasbasicconstraints = true; [INFO] [stdout] 144 | | ... self.properties.basicconstraintpathlength = _path_len_constraint.to_owned(); [INFO] [stdout] ... | [INFO] [stdout] 148 | | ... self.properties.basicconstraintpathlength = 0; [INFO] [stdout] 149 | | ... } [INFO] [stdout] | |_______________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_match [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 141 ~ Some(_path_len_constraint) [INFO] [stdout] 142 ~ if _path_len_constraint > &0 => { [INFO] [stdout] 143 | self.properties.hasbasicconstraints = true; [INFO] [stdout] 144 | self.properties.basicconstraintpathlength = _path_len_constraint.to_owned(); [INFO] [stdout] 145 | [INFO] [stdout] 146 ~ }, [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: needlessly taken reference of both operands [INFO] [stdout] --> src/objects/rootca.rs:128:36 [INFO] [stdout] | [INFO] [stdout] 128 | ... if &ext.oid == &oid!(2.5.29.19) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#op_ref [INFO] [stdout] help: use the values directly [INFO] [stdout] | [INFO] [stdout] 128 - if &ext.oid == &oid!(2.5.29.19) { [INFO] [stdout] 128 + if ext.oid == oid!(2.5.29.19) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` can be collapsed into the outer `match` [INFO] [stdout] --> src/objects/rootca.rs:137:49 [INFO] [stdout] | [INFO] [stdout] 137 | / ... if _path_len_constraint > &0 { [INFO] [stdout] 138 | | ... self.properties.hasbasicconstraints = true; [INFO] [stdout] 139 | | ... self.properties.basicconstraintpathlength = _path_len_constraint.to_owned(); [INFO] [stdout] ... | [INFO] [stdout] 143 | | ... self.properties.basicconstraintpathlength = 0_u32; [INFO] [stdout] 144 | | ... } [INFO] [stdout] | |_______________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_match [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 136 ~ Some(_path_len_constraint) [INFO] [stdout] 137 ~ if _path_len_constraint > &0 => { [INFO] [stdout] 138 | self.properties.hasbasicconstraints = true; [INFO] [stdout] 139 | self.properties.basicconstraintpathlength = _path_len_constraint.to_owned(); [INFO] [stdout] 140 | [INFO] [stdout] 141 ~ }, [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: needlessly taken reference of both operands [INFO] [stdout] --> src/objects/enterpriseca.rs:192:36 [INFO] [stdout] | [INFO] [stdout] 192 | ... if &ext.oid == &oid!(2.5.29.19) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#op_ref [INFO] [stdout] help: use the values directly [INFO] [stdout] | [INFO] [stdout] 192 - if &ext.oid == &oid!(2.5.29.19) { [INFO] [stdout] 192 + if ext.oid == oid!(2.5.29.19) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` can be collapsed into the outer `match` [INFO] [stdout] --> src/objects/enterpriseca.rs:201:49 [INFO] [stdout] | [INFO] [stdout] 201 | / ... if _path_len_constraint > &0 { [INFO] [stdout] 202 | | ... self.properties.hasbasicconstraints = true; [INFO] [stdout] 203 | | ... self.properties.basicconstraintpathlength = _path_len_constraint.to_owned(); [INFO] [stdout] ... | [INFO] [stdout] 207 | | ... self.properties.basicconstraintpathlength = 0; [INFO] [stdout] 208 | | ... } [INFO] [stdout] | |_______________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_match [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 200 ~ Some(_path_len_constraint) [INFO] [stdout] 201 ~ if _path_len_constraint > &0 => { [INFO] [stdout] 202 | self.properties.hasbasicconstraints = true; [INFO] [stdout] 203 | self.properties.basicconstraintpathlength = _path_len_constraint.to_owned(); [INFO] [stdout] 204 | [INFO] [stdout] 205 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` can be collapsed into the outer `match` [INFO] [stdout] --> src/objects/certtemplate.rs:89:21 [INFO] [stdout] | [INFO] [stdout] 89 | / ... if !value.is_empty() { [INFO] [stdout] 90 | | ... self.properties.certificatenameflag = get_pki_cert_name_flags(value[0].parse::().unwrap_or(0) as u64); [INFO] [stdout] 91 | | ... self.properties.enrolleesuppliessubject = self.properties.certificatenameflag.contains("ENROLLEE_SUPPLIES_SUBJECT"); [INFO] [stdout] 92 | | ... self.properties.subjectaltrequireupn = self.properties.certificatenameflag.contains("SUBJECT_ALT_REQUIRE_UPN"); [INFO] [stdout] 93 | | ... } [INFO] [stdout] | |_______^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_match [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 88 ~ "msPKI-Certificate-Name-Flag" [INFO] [stdout] 89 ~ if !value.is_empty() => { [INFO] [stdout] 90 | self.properties.certificatenameflag = get_pki_cert_name_flags(value[0].parse::().unwrap_or(0) as u64); [INFO] [stdout] 91 | self.properties.enrolleesuppliessubject = self.properties.certificatenameflag.contains("ENROLLEE_SUPPLIES_SUBJECT"); [INFO] [stdout] 92 | self.properties.subjectaltrequireupn = self.properties.certificatenameflag.contains("SUBJECT_ALT_REQUIRE_UPN"); [INFO] [stdout] 93 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` can be collapsed into the outer `match` [INFO] [stdout] --> src/objects/certtemplate.rs:96:21 [INFO] [stdout] | [INFO] [stdout] 96 | / if !value.is_empty() { [INFO] [stdout] 97 | | self.properties.enrollmentflag = get_pki_enrollment_flags(value[0].parse::().unwrap_or(0) as u64); [INFO] [stdout] 98 | | self.properties.requiresmanagerapproval = self.properties.enrollmentflag.contains("PEND_ALL_REQUESTS"); [INFO] [stdout] 99 | | self.properties.nosecurityextension = self.properties.enrollmentflag.contains("NO_SECURITY_EXTENSION"); [INFO] [stdout] 100 | | } [INFO] [stdout] | |_____________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_match [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 95 ~ "msPKI-Enrollment-Flag" [INFO] [stdout] 96 ~ if !value.is_empty() => { [INFO] [stdout] 97 | self.properties.enrollmentflag = get_pki_enrollment_flags(value[0].parse::().unwrap_or(0) as u64); [INFO] [stdout] 98 | self.properties.requiresmanagerapproval = self.properties.enrollmentflag.contains("PEND_ALL_REQUESTS"); [INFO] [stdout] 99 | self.properties.nosecurityextension = self.properties.enrollmentflag.contains("NO_SECURITY_EXTENSION"); [INFO] [stdout] 100 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` can be collapsed into the outer `match` [INFO] [stdout] --> src/objects/certtemplate.rs:108:21 [INFO] [stdout] | [INFO] [stdout] 108 | / ... if !value.is_empty() { [INFO] [stdout] 109 | | ... self.properties.authorizedsignatures = value.first().unwrap_or(&"0".to_string()).parse::().unwrap_or(0); [INFO] [stdout] 110 | | ... } [INFO] [stdout] | |_______^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_match [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 107 ~ "msPKI-RA-Signature" [INFO] [stdout] 108 ~ if !value.is_empty() => { [INFO] [stdout] 109 | self.properties.authorizedsignatures = value.first().unwrap_or(&"0".to_string()).parse::().unwrap_or(0); [INFO] [stdout] 110 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` can be collapsed into the outer `match` [INFO] [stdout] --> src/objects/certtemplate.rs:113:21 [INFO] [stdout] | [INFO] [stdout] 113 | / if !value.is_empty() { [INFO] [stdout] 114 | | self.properties.applicationpolicies = value.to_owned(); [INFO] [stdout] 115 | | } [INFO] [stdout] | |_____________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_match [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 112 ~ "msPKI-RA-Application-Policies" [INFO] [stdout] 113 ~ if !value.is_empty() => { [INFO] [stdout] 114 | self.properties.applicationpolicies = value.to_owned(); [INFO] [stdout] 115 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` can be collapsed into the outer `match` [INFO] [stdout] --> src/objects/certtemplate.rs:118:21 [INFO] [stdout] | [INFO] [stdout] 118 | / if !value.is_empty() { [INFO] [stdout] 119 | | self.properties.certificateapplicationpolicy = value.to_owned(); [INFO] [stdout] 120 | | } [INFO] [stdout] | |_____________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_match [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 117 ~ "msPKI-Certificate-Application-Policy" [INFO] [stdout] 118 ~ if !value.is_empty() => { [INFO] [stdout] 119 | self.properties.certificateapplicationpolicy = value.to_owned(); [INFO] [stdout] 120 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` can be collapsed into the outer `match` [INFO] [stdout] --> src/objects/certtemplate.rs:123:21 [INFO] [stdout] | [INFO] [stdout] 123 | / if !value.is_empty() { [INFO] [stdout] 124 | | self.properties.issuancepolicies = value.to_owned(); [INFO] [stdout] 125 | | } [INFO] [stdout] | |_____________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_match [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 122 ~ "msPKI-RA-Policies" [INFO] [stdout] 123 ~ if !value.is_empty() => { [INFO] [stdout] 124 | self.properties.issuancepolicies = value.to_owned(); [INFO] [stdout] 125 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` can be collapsed into the outer `match` [INFO] [stdout] --> src/objects/certtemplate.rs:128:21 [INFO] [stdout] | [INFO] [stdout] 128 | / if !value.is_empty() { [INFO] [stdout] 129 | | self.properties.oid = value[0].to_owned(); [INFO] [stdout] 130 | | } [INFO] [stdout] | |_____________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_match [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 127 ~ "msPKI-Cert-Template-OID" [INFO] [stdout] 128 ~ if !value.is_empty() => { [INFO] [stdout] 129 | self.properties.oid = value[0].to_owned(); [INFO] [stdout] 130 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` can be collapsed into the outer `match` [INFO] [stdout] --> src/objects/certtemplate.rs:133:21 [INFO] [stdout] | [INFO] [stdout] 133 | / if !value.is_empty() { [INFO] [stdout] 134 | | self.properties.ekus = value.to_owned(); [INFO] [stdout] 135 | | } [INFO] [stdout] | |_____________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_match [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 132 ~ "pKIExtendedKeyUsage" [INFO] [stdout] 133 ~ if !value.is_empty() => { [INFO] [stdout] 134 | self.properties.ekus = value.to_owned(); [INFO] [stdout] 135 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary use of `to_owned` [INFO] [stdout] --> src/modules/resolver/resolv.rs:22:17 [INFO] [stdout] | [INFO] [stdout] 22 | for value in fqdn_ip.to_owned() [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: use: `fqdn_ip.iter().cloned()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_to_owned [INFO] [stdout] = note: `#[warn(clippy::unnecessary_to_owned)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `i` is only used to index `vec_computer` [INFO] [stdout] --> src/modules/resolver/resolv.rs:24:16 [INFO] [stdout] | [INFO] [stdout] 24 | for i in 0..vec_computer.len() [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stdout] = note: `#[warn(clippy::needless_range_loop)]` on by default [INFO] [stdout] help: consider using an iterator [INFO] [stdout] | [INFO] [stdout] 24 - for i in 0..vec_computer.len() [INFO] [stdout] 24 + for in &vec_computer [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this creates an owned instance just for comparison [INFO] [stdout] --> src/modules/resolver/resolv.rs:26:14 [INFO] [stdout] | [INFO] [stdout] 26 | if (*vec_computer[i].properties().name() == value.0.to_owned()) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ try implementing the comparison without allocating [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cmp_owned [INFO] [stdout] = note: `#[warn(clippy::cmp_owned)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `to_string` applied to a type that implements `Display` in `debug!` args [INFO] [stdout] --> src/modules/resolver/resolv.rs:28:56 [INFO] [stdout] | [INFO] [stdout] 28 | debug!("Trying to resolve FQDN: {}",value.0.to_string()); [INFO] [stdout] | ^^^^^^^^^^^^ help: remove this [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#to_string_in_format_args [INFO] [stdout] = note: `#[warn(clippy::to_string_in_format_args)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&String` instead of `&str` involves a new object where a slice will do [INFO] [stdout] --> src/modules/resolver/resolv.rs:73:17 [INFO] [stdout] | [INFO] [stdout] 73 | name_server: &String, [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] = note: `#[warn(clippy::ptr_arg)]` on by default [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 73 - name_server: &String, [INFO] [stdout] 73 + name_server: &str, [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/modules/mod.rs:22:10 [INFO] [stdout] | [INFO] [stdout] 22 | &vec_computers [INFO] [stdout] | ^^^^^^^^^^^^^^ help: change this to: `vec_computers` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] = note: `#[warn(clippy::needless_borrow)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary use of `to_owned` [INFO] [stdout] --> src/modules/resolver/resolv.rs:22:17 [INFO] [stdout] | [INFO] [stdout] 22 | for value in fqdn_ip.to_owned() [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: use: `fqdn_ip.iter().cloned()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_to_owned [INFO] [stdout] = note: `#[warn(clippy::unnecessary_to_owned)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `i` is only used to index `vec_computer` [INFO] [stdout] --> src/modules/resolver/resolv.rs:24:16 [INFO] [stdout] | [INFO] [stdout] 24 | for i in 0..vec_computer.len() [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stdout] = note: `#[warn(clippy::needless_range_loop)]` on by default [INFO] [stdout] help: consider using an iterator [INFO] [stdout] | [INFO] [stdout] 24 - for i in 0..vec_computer.len() [INFO] [stdout] 24 + for in &vec_computer [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this creates an owned instance just for comparison [INFO] [stdout] --> src/modules/resolver/resolv.rs:26:14 [INFO] [stdout] | [INFO] [stdout] 26 | if (*vec_computer[i].properties().name() == value.0.to_owned()) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ try implementing the comparison without allocating [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cmp_owned [INFO] [stdout] = note: `#[warn(clippy::cmp_owned)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `to_string` applied to a type that implements `Display` in `debug!` args [INFO] [stdout] --> src/modules/resolver/resolv.rs:28:56 [INFO] [stdout] | [INFO] [stdout] 28 | debug!("Trying to resolve FQDN: {}",value.0.to_string()); [INFO] [stdout] | ^^^^^^^^^^^^ help: remove this [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#to_string_in_format_args [INFO] [stdout] = note: `#[warn(clippy::to_string_in_format_args)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&String` instead of `&str` involves a new object where a slice will do [INFO] [stdout] --> src/modules/resolver/resolv.rs:73:17 [INFO] [stdout] | [INFO] [stdout] 73 | name_server: &String, [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] = note: `#[warn(clippy::ptr_arg)]` on by default [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 73 - name_server: &String, [INFO] [stdout] 73 + name_server: &str, [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/modules/mod.rs:22:10 [INFO] [stdout] | [INFO] [stdout] 22 | &vec_computers [INFO] [stdout] | ^^^^^^^^^^^^^^ help: change this to: `vec_computers` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] = note: `#[warn(clippy::needless_borrow)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 52.61s [INFO] running `Command { std: "docker" "inspect" "f546beaa7be8f340a5aa8ebb30dfb85a9199755d7efd8c79910e81a9fada1b82", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "f546beaa7be8f340a5aa8ebb30dfb85a9199755d7efd8c79910e81a9fada1b82", kill_on_drop: false }` [INFO] [stdout] f546beaa7be8f340a5aa8ebb30dfb85a9199755d7efd8c79910e81a9fada1b82